WorkerKitエコシステム内で、認証済みおよび匿名ツールの管理、ワーカー、およびファイルアップロードを行うためのAPIクライアントとツールレジストリを提供します。
別名 workerkit/core, @workerkit/core
- スター
- 2
- ツール
- —
- ダウンロード数(30日間)
- —
- 最新バージョン
- —
- 最終コミット
- 2026年11月9日
- ライセンス
- MIT
WorkerKit MCPとは
WorkerKitはMCPサーバーです。 WorkerKitエコシステム内で、認証済みおよび匿名ツールの管理、ワーカー、およびファイルアップロードを行うためのAPIクライアントとツールレジストリを提供します。.
プロジェクトのREADMEから生成された概要
WorkerKit MCP server について
このサーバーは、WorkerKitエコシステム内でのワーカーフリートの管理と、専門的なタスクの実行を開発者に可能にします。認証済みツールと匿名ツールの両方とやり取りするための、中央集権的なレジストリとAPIクライアントを提供します。ユーザーは、単一の実行エンジンを使用して、ワーカーの管理、公開キットの検索、言語ワーカーへのファイルアップロードを行うことができます。システムは、効率的な処理を確保するために、PDFや画像などのファイルを1回の実行につき最大3つまでアップロードできることをサポートしており、特定のサイズ制限が設けられています。
開発者はWorkerKitClientを使用して、131個の認証済み管理ツールと8個の匿名ディレクトリツールとやり取りします。このサーバーは、試行ごとのタイムアウト、べき等なメソッドに対する制限付きリトライ、レート制限ヘッダーの抽出などの複雑なロジックを処理します。また、ログ内の認証情報を保護するためのscrubSecretsのようなユーティリティ関数も含まれています。ツールの定義とスキーマはバックエンドによって作成され、このクライアントを介して配布されるため、MCP serverやCLIがWorkerKit APIに対してHTTPリクエストを行う際に、一貫した動作を維持できることが保証されます。
できること
- 1公開キットの検索AIクライアントは、公開ディレクトリから請求書処理などの特定のツールを検索できます。
- 2ワーカーフリートの管理開発者は、認証用のマネージャーキーを使用して、アクティブなワーカーを一覧表示できます。
- 3ワーカーによるファイル処理PDFや画像をホストされた言語ワーカーにアップロードして、特定のタスクを実行できます。
プロジェクトの README から作成されています。すべてのユースケースは、その引用と照らし合わせて確認されています。
WorkerKit MCPのインストール方法
フォーマット検証日 2026年11月10日Cursor に追加Gooseに追加Claude CodeにWorkerKit MCPをインストール
$ claude mcp add core -- npx -y @workerkit/coreCursorにWorkerKit MCPをインストール
~/.cursor/mcp.json
{
"mcpServers": {
"core": {
"command": "npx",
"args": [
"-y",
"@workerkit/core"
]
}
}
}VS CodeにWorkerKit MCPをインストール
.vscode/mcp.json
{
"servers": {
"core": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@workerkit/core"
]
}
}
}VS Code CLIにWorkerKit MCPをインストール
$ code --add-mcp '{"name":"core","type":"stdio","command":"npx","args":["-y","@workerkit/core"]}'Claude DesktopにWorkerKit MCPをインストール
claude_desktop_config.json
{
"mcpServers": {
"core": {
"command": "npx",
"args": [
"-y",
"@workerkit/core"
]
}
}
}CodexにWorkerKit MCPをインストール
$ codex mcp add core -- npx -y @workerkit/coreCodex config.tomlにWorkerKit MCPをインストール
~/.codex/config.toml
[mcp_servers.core] command = "npx" args = ["-y", "@workerkit/core"]
Gemini CLIにWorkerKit MCPをインストール
$ gemini mcp add -s user core npx -- -y @workerkit/coreGemini settings.jsonにWorkerKit MCPをインストール
~/.gemini/settings.json
{
"mcpServers": {
"core": {
"command": "npx",
"args": [
"-y",
"@workerkit/core"
]
}
}
}自動チェック
実行日 2026年11月14日完全なレポート →自動チェックに合格しました。これはセキュリティ監査ではありません。コードを読み、サーバーに必要最小限のアクセス権を与えてください。 チェックの仕組み
- ソースリポジトリがリンクされており、アクセス可能workerkit/core is public and reachablegithub.com/workerkit/core ↗合格
- パッケージがこのリポジトリをソースとして指定@workerkit/core names workerkit/core as sourcenpmjs.com/package/@workerkit/core ↗合格
- ビルドの来歴 (Sigstore 証明)Sigstore attestation for @workerkit/corenpmjs.com/package/@workerkit/core/v/0.3.26#provenance ↗合格
- オープンソースライセンス (OSI)MITspdx.org/licenses/MIT.html ↗合格
- 過去1年以内にコミットまたはリリースありLast commit or release 2026-11-09github.com/workerkit/core ↗合格
- OpenSSF Scorecard未チェック
- パッケージ名が有名なパッケージに酷似していないNo popular package one edit away from @workerkit/core合格
- パッケージおよびその依存関係に重大な勧告なし未チェック
- モデルへの隠れた指示がない0 tool descriptions and the README read; no override phrases, credential paths or hidden characters合格
- 破壊的なツールがラベル付けされている未チェック
- リモートエンドポイントが MCP ハンドシェイクに応答未チェック
README
GitHubで見る@workerkit/core
The WorkerKit API client and tool registry for Node.js. It provides 131 authenticated management tools, 8 anonymous directory tools, and a shared execution engine for their HTTP requests.
Descriptors include agent guidance, annotations and Zod input schemas. MCP servers, CLIs and documentation tools can use the same registry without an MCP SDK dependency.
Contract ownership
Tool definitions, schemas, HTTP mappings and agent guidance are authored by the WorkerKit backend. Core distributes a generated, versioned copy to MCP and CLI consumers. Live catalog and account data comes from backend endpoints.
To update the contract, import the reviewed backend Data/AgentContract.json with npm run import:contract -- <artifact-path>. Commit the pinned artifact and generated modules together. npm run check:contract and every build reject manual changes to generated modules. Core owns the HTTP client and execution engine; tool-specific behavior is part of the backend contract.
Adapters advertise each descriptor's description and render its footer with applicable results. For full offline help or REST documentation, use toolDocumentation(descriptor): it includes result interpretation without requiring an API call. Raw JSON response bodies remain unchanged.
Install
npm install @workerkit/core
Requires Node.js >= 22.
Use
import {
WorkerKitClient,
allDescriptors,
byName,
executeTool,
isSuccess,
} from "@workerkit/core";
const client = new WorkerKitClient({
baseUrl: "https://api.workerkit.ai",
});
// Anonymous: search the public kits directory.
const search = byName("kits_search")!;
const result = await executeTool(client, search, { query: "invoice" });
if (isSuccess(result)) {
console.log(result.data);
}
// Authenticated: list your worker fleet with a manager key.
const list = byName("workers_list")!;
const fleet = await executeTool(client, list, {}, { token: process.env.WK_MANAGER_KEY });
await client.close();
Each ToolDescriptor declares its name, agent-facing description, zod input
schema, auth mode (manager | anonymous), and how its parameters map onto one
HTTP request; executeTool is the only place that mapping is interpreted, so
every consumer produces an identical wire call.
The client ships sensible production defaults: per-attempt timeouts under a
whole-call deadline, bounded retries for idempotent methods only, a streamed
response-size cap, and quota/rate-limit header extraction. scrubSecrets helps
keep credentials out of logs.
Files with a run
A hosted language worker can receive up to three PDF, PNG or JPEG files per run, 7 MiB each and
15 MiB in total. Upload each file with uploadWorkerFile, then pass the returned references to
worker_run as inputs:
import { WorkerKitClient, byName, executeTool, uploadWorkerFile } from "@workerkit/core";
import { randomUUID } from "node:crypto";
import { readFile } from "node:fs/promises";
const client = new WorkerKitClient({ baseUrl: "https://api.workerkit.ai" });
const token = process.env.WK_MANAGER_KEY!;
const invoice = await uploadWorkerFile(client, token, 42, {
name: "invoice.pdf",
contentType: "application/pdf",
bytes: await readFile("./invoice.pdf"),
});
const receipt = await executeTool(client, byName("worker_run")!, {
tokenId: 42,
prompt: "Process this invoice.",
inputs: [invoice],
idempotencyKey: randomUUID(),
}, { token });
uploadWorkerFile is for your own code, not for a model. It reserves the upload with the API,
sends the bytes straight to private storage over a short-lived signed URL, finalizes the file and
returns only { kind: "file", fileId }. The signed URL and the bytes never belong in tool
results, prompts or logs; the manager key is never sent to storage; and a failed step revokes the
reservation. It throws FileUploadError, whose code names the failed step and whose upstream
carries the API's status, error code and message when the API refused the reservation or the
finalize step. Clear your own byte buffers when you are done with them. The reserve and finalize
routes are deliberately not tool descriptors.
A run with files needs an idempotencyKey of 8 to 100 letters, digits, - or _, which
executeTool sends as the Idempotency-Key header. If the response is lost, repeat the same key
with the same references, in the same order, and the same run arguments to read the original run;
a changed request is refused as a conflict. Each upload serves one run, so upload again for
another.
The worker needs the Files app's receive_files operation. Letting the model read a file needs
forward_attachments, and saving the original to a destination app needs export_files plus
that app's own permissions. worker_file_storage_get and worker_file_storage_set read and
choose the worker's private intake storage, worker_file_get reads an upload's metadata and
status, and worker_file_delete revokes an upload and removes its stored content. On platform
storage the original is deleted once the runtime has received it. Only file inputs are supported.
Kit publishing
Public kit publishing is temporarily paused, including promotion of a private
kit, public replacement and relisting. Send visibility: "private" or
visibility: "personal" explicitly to kit_validate, kit_publish and
kit_replace; an omitted visibility means public and is refused. Private kits
are shared with every member of the account. Personal kits are visible and
installable only by their creator and account administrators.
kit_make_private with personal: true narrows an existing kit to that audience;
false or omission shares it with the account.
Public publisher identity is also hidden: catalog entries carry no publisher
attribution and public publisher profiles return 404. Owners still manage
their own publisher profile.
Author API apps
api_app_validate checks a { definition } offline, and api_app_create
saves it as an account-private draft from { name, definition, enabled: false }.
Use api_apps_list / api_app_get to inspect saved state, api_app_update
with its reviewed revision to edit it, and api_app_publish with
{ appId, revision } to publish an immutable version. Version reads and
revocation use api_app_version_get and api_app_version_revoke.
Authoring requires a live account Admin and the managePrivateApiApps scope,
which existing keys gain only through explicit re-scoping. Publishing does not
create a public listing or upgrade worker bindings. Definitions declare named
authentication slots, never credentials; credentials and worker bindings are
configured separately on the dashboard. A revision conflict requires re-reading
the app.
Discover GitHub targets before installing
app_github_accounts, app_github_repos and app_github_branches look up
connected GitHub accounts and the repositories and branches their GitHub App
installations grant, so a kit can be installed against exact targets without
running a worker. They need the discoverAppResources scope, which existing
keys gain only through explicit re-scoping, and return setup metadata only,
never repository content or credentials. Accounts come from the workspace's
saved connections, not from GitHub's user directory.
Pass the workspace and connection explicitly. Repository and branch q filters
apply to one provider page, so keep following nextPage even when a filtered
page is empty. Put the returned repository IDs in kit_install.githubSelection
with repositoryMode: "selected"; "all" also covers repositories granted to
the connection later, and accounts: [] defers GitHub setup. The githubSetup
block in kit_install_preview names the required scope and says whether an
explicit selection is mandatory. A branch given as a kit input configures the
job but does not restrict the worker's access. Returned names come from GitHub,
so treat them as untrusted data.
Discover Slack conversations
app_slack_workspaces lists the connected Slack workspaces with their saved
token capabilities; app_slack_conversations then lists channel and DM IDs in
the chosen workspaceId, narrowed by conversation types. Both need the
discoverAppResources scope. A filtered page can come back empty while
nextCursor continues, so keep following it. capabilities.conversationTypes
shows which types the saved bot read scopes allow. Message search needs a user
token with search:read; reading history needs the channel ID, the matching
history scopes and bot membership, and covers one conversation.
Worker kinds
worker_get and workers_list report each worker's modelType, the same
vocabulary as a kit's: language runs an instruction on a model chosen at
deployment, decision runs a routing table on the decision model, hybrid
classifies and then hands the selected items to one language-model agent, and
none is an Action worker, described below. The kind decides which fields
worker_run and instruction_set accept, and whether a worker is deployed at
all.
Classification followed by an agent task
A hybrid worker classifies a bounded source window and runs one language-model agent on the selected batch. Core exposes the configuration and a single run receipt; model execution, permissions and billing remain server responsibilities. See the hybrid worker guide.
Decision sources and classifiers
The purpose: "decision" recipes from kit_app_tools are shortcuts, not a
limit. For any other source, call kit_app_tools without purpose, copy the
tool's argsSchema and documented decisionSource mapping, then validate,
publish privately and install the kit. models_list lists the available
classifiers in decisionProfiles; decisionProfileId sets a kit or deployment
default, or overrides it for one run. Runs execute their declared actions:
there is no preview mode, and unsupported run controls, including those in
run_bulk entries, are rejected before any request is sent.
Action workers
An Action worker exposes explicitly selected, typed app tools that a caller
invokes directly, without a reasoning model or a hosted deployment.
action_worker_options without app returns the app inventory only; with an
app it returns that app's reviewed tool schemas, defaults and connection
requirements. There is no implicit app: action_worker_create needs either an
app, which copies that app's reviewed defaults once, or an explicit
actionSpec that selects up to 64 tools across apps. Private API operations
are not selectable through app or actionSpec; their bindings are managed
in the dashboard. Tools added to the catalog later must be selected by hand.
Read a worker's tool schemas with worker_tools before calling one with
worker_tool_call, which takes tokenId, toolName, arguments and an
optional contractVersion: 1 and idempotencyKey. Each tool reports
invocationSource, effect, idempotencyRequired and keyFormat; follow
those rather than inferring from readOnly. The key travels in the
Idempotency-Key header; only the version and arguments go in the body.
Native and MCP writes need a unique key per intended write and their reads
need none; every private API operation, including reads, needs a
v1:<Unix timestamp>:<32-hex UUID> key. Keep a key for transport retries. Poll
worker_tool_invocation for pending results, and never automatically resend
an outcome_unknown call with a new key: the app may already have acted. A
refusal marked retryable can be tried again later under a new key. A call
cannot change the saved tool selection, connection or sender, and a
changed tool contract needs an explicit owner review and save. Native and MCP
write receipts keep the confirmation without storing private app response
bodies.
A call answers with status succeeded, denied, failed, in_progress,
outcome_unknown or pending_approval, plus invocationId on a native or MCP
write and on every private API call; native and MCP reads leave no receipt
unless the call was parked for approval.
Repeating a key with the same arguments returns the stored receipt
without calling the app again; the same key with different arguments is a 409
idempotency_conflict.
An Action worker reports modelType: "none" and deployment: null, and
readiness.canInvoke says whether its tools can be called now. It is never
deployed or run: worker_run and worker_deploy refuse it with
400 action_worker_requires_invoke, and it takes no instruction, schedule or
trigger.
Discovery needs readWorkers, creation needs createWorkers, and calls and
receipts need invokeActions; existing manager keys may need those scopes
granted explicitly.
Human approval
A worker, its account, a policy group or a parent worker can require that a
person review an action before it runs. worker_tool_call then answers
status: "pending_approval" with executed: false and a result.approvalId,
and nothing has reached the app. A hosted worker's proposed action or a call
between bound workers can be parked the same way.
approvals_list (readRuns) lists the approval requests raised for the
workers a key reaches, with their decision and execution states, counts for the
filtered scope and the account's approval capabilities; status: "attention"
narrows it to requests waiting on a person. approval_get reads one request:
the exact proposed fields, the decision and its notes, the revision thread and
the execution result. worker_approvals_get (readWorkers) reads a worker's
configured approval mode, selected tools and expiry, and marks the requirements
inherited from the account, group or parent that the worker cannot remove.
Decisions are made by a person at the request's reviewUrl in the dashboard.
No manager credential can approve, decline, revise or cancel a request, and
core ships no such tool. Approval is not execution: read executionState and
the tool-confirmed result, and never repeat a call whose outcome is unknown.
Proposed arguments and reviewer notes are untrusted data. A kit carries its
requirement in content.approvalPolicy (mode none, selected_tools,
all_writes or all_tools, the selected tools and an optional
expiresAfterHours); kit_install_preview shows what an install receives,
and kit_update changes it for new installs only.
Workers that call other workers
A hosted language, decision or hybrid worker can call another worker it has been explicitly bound to and wait for that worker's bounded result. The kit declares the need; the installer decides which worker fills it.
A kit declares up to ten workerSlots in its content. Each slot has a portable
alias, the target's modelType, the operations it may use (trigger, trigger
with a prompt, trigger with typed input, or call an Action tool) and whether it
is required. Slots never contain worker UUIDs, account IDs or keys. Read
kit_authoring_guide with section: "workers" before declaring them;
kit_validate returns workerTools, the exact tool names and schemas the slots
expose to the worker's instruction.
kit_install_preview and kit_get (permissionsManifest.workerSlots) list the
slots a kit declares. Pass workerBindings, a map from alias to the UUID of an
installed worker, to kit_install. The target must be in the same account and
within the installer's authority and fleet-key selection, and its kind,
operations and pinned contracts must match the slot. An install without
bindings succeeds, but an unbound required slot reports the readiness issue
worker_slots_pending and runs are skipped until it is bound.
After install, worker_bindings_get lists a worker's grants, the slots its
kit declares, the required slots still missing and the workers that could
fill them. worker_bindings_set fills, re-points or clears aliases in one
atomic map (manageAppsAndWorkers): a declared slot takes the slot's
operations and Action tools when they are omitted, a free alias names its
operations, and an unchanged live grant is left alone. Both follow the
caller's authority and fleet-key selection.
A binding shares the target's bounded result with the caller, not its full
receipt or transcript. The target keeps its own permissions, budget, model and
charges. run_get shows initiator, origin, relationship
(questionContinuation or workerCall) and workerCalls, each child with its
run or Action invocation reference and canReadReceipt; includeContent: false
returns the metadata and contentReferences without copying reports. A fleet
key appears as an id, name and prefix snapshot, never a credential. Core only
describes these fields; the server owns execution, waiting and billing.
Change an existing worker's apps
worker_permissions_set (account Admin, manageAppsAndWorkers) replaces an
existing worker's app set in the vocabulary worker_permissions_get returns.
An app left out is switched off, and a stance changes only when the call sends
allowAll: a deny-by-default app switched on reads nothing until the owner
writes rules or the call sends allowAll: true. Rules, identities and MCP tool
bindings stay on the dashboard.
manageAppsAndWorkers also covers worker_bindings_set. Keys that held every
earlier scope when it was introduced carry it; other existing keys need an
account admin to add it.
Worker quality
worker_quality_get reads a worker's acceptance criteria, settings revision,
three quality gates and the reason any capability is unavailable.
worker_quality_set saves reviewed criteria or changes gates and needs the
current expectedRevision; worker_quality_preview checks a definition
against supplied evidence without saving anything, calling a model or running
the worker. Missing evidence is unknown, not a pass.
A kit's content.evaluationSpec carries public acceptance criteria, and
kit_install copies them with all three gates off. A manager key can switch
on Quality and suggestions where the account allows it and can switch any
gate off. Automatic improvement and shared learning are enabled only in the
owner dashboard, which also holds paid comparisons, diagnosis, monitoring and
apply/rollback. Improvements change instruction text only; shadow learning
does not train model weights. These tools are on the full profile.
Company knowledge
The nine Knowledge descriptors cover published reports, dated source observations
and their settings. toolsForProfile("knowledge") returns them for the dedicated
Knowledge MCP mount; the workers and decision profiles do not carry them.
Use knowledge_sources, knowledge_search, knowledge_get and
knowledge_changes with readKnowledge to discover, search, read and reconcile
published reports. The service enforces current account, publication, audience
and credential limits. knowledge_configuration_get and
knowledge_configuration_set require manageKnowledge, account administrator
authority and an unrestricted credential.
knowledge_timeline uses readKnowledge to read dated observations extracted
from content workers received. Timeline activation is separate from report
publication; report enrollment and history limits do not restrict timeline
items. Members can read their own workers plus granted sources, within their
credential's worker limits. Coverage follows actual worker reads and is
incomplete: verify the live source before acting. knowledge_timeline_status
requires manageKnowledge to mark a readable item done, dismissed or open.
It records a reader decision without performing an action in the source app.
knowledge_timeline_enable requires manageKnowledge, account administrator
authority and an unrestricted credential. Read the current configuration version
before enabling or disabling it. Enabling authorizes account-wide source-excerpt
retention and model extraction billed to the account wallet, with a default
$1 UTC-day cap. Pending excerpts expire after three days; processed candidate
text is cleared and hashes expire after 30 days. Items expire 30 days after their
date, with at most 5,000 open items per account. Disabling hides timeline reads
and clears pending excerpts; existing items age out, and an already-started
model call may still be billed. knowledge_changes covers reports only; use
observedSinceUtc and reconcile statuses for timeline observations.
Query planning and synthesis belong to the consuming agent. Empty queries browse; changed or revoked evidence requires citation/cache reconciliation. Retrieval does not invoke a model or grant live source-app access.
Development
git clone https://github.com/workerkit/core.git && cd core
npm ci
npm test # descriptor-contract suite
npm run typecheck
npm run build
npm run check:descriptions # rebuild, then report size and guidance warnings
check:release includes the fresh description report. For the complete per-tool
report, run npm run build then node scripts/check-descriptions.mjs --json.
An optional --baseline <report.json> compares reports made with the same
projection and tokenizer. This is a transport-neutral core projection; the MCP
repository separately checks real SDK metadata and reviewed growth budgets.
Size, uppercase and unattributed repeated-clause findings are review warnings,
never truncation instructions. Generated shared guidance is attributed by its
canonical identifier; other repeated text still needs contextual review.
Publishing also runs check:provenance: the pinned backend artifact must name
its reviewed 40-character source commit and match the generated modules.
Local working-tree-* artifacts remain usable for development and package
smoke tests, but cannot pass this publication gate.
Issues and pull requests are welcome. Every tool is a declarative ToolDescriptor;
the descriptor-contract tests pin each one's exact wire call, so behavior changes
are visible in the diff. Security reports go to SECURITY.md, not the
issue tracker.
Releases are tag-driven: the workerkit account pushes a vX.Y.Z tag and CI publishes to npm
via trusted publishing with a
provenance attestation. Publication reruns also require the workerkit account.
Links
- WorkerKit: https://workerkit.ai
- Changelog: CHANGELOG.md
- Terms of Service · Privacy Policy · Acceptable Use Policy · Security Overview
License
This package is released under the MIT License. That covers the software itself; using it against WorkerKit's hosted API is separately governed by the Terms of Service above.
WorkerKit MCPのよくある質問
WorkerKit MCPをClaude Codeに追加するには
ターミナルでclaude mcp add core -- npx -y @workerkit/coreを実行します。すべてのプロジェクトで利用するには--scope userを追加します。
WorkerKit MCPをCursorに追加するには
~/.cursor/mcp.jsonを開き、上記のインストールセクションに示すCursor設定を使ってmcpServersの下にサーバーを追加します。
WorkerKit coreパッケージをインストールするにはどうすればよいですか?
npm install @workerkit/core コマンドを使用してnpmからインストールできます。
このサーバーのNode.jsの要件は何ですか?
このパッケージにはNode.js version 22以上が必要です。
ホストされた言語ワーカーにファイルをアップロードできますか?
はい、uploadWorkerFile 関数を使用して、1回の実行につき最大3つまでのファイル(PDF、PNG、またはJPEG)をアップロードできます。制限は1ファイルあたり7 MiB、合計で15 MiBまでです。
ツールレジストリは更新をどのように処理しますか?
ツールの定義とスキーマはWorkerKitバックエンドによって作成され、coreが生成されたバージョン管理済みのコピーをコンシューマーに配布します。