Install
$ agentstack add mcp-ancs21-codemode-workers ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
codemode-workers
Expose any API to an LLM agent as two sandboxed MCP tools (search + execute) on Cloudflare Workers.
[](https://github.com/ancs21/codemode-workers/actions/workflows/ci.yml) [](https://codecov.io/gh/ancs21/codemode-workers) [](https://www.npmjs.com/package/codemode-workers) [](https://www.npmjs.com/package/codemode-workers) [](https://codemode-workers.pages.dev) [](./LICENSE)
Instead of registering thousands of tool schemas, you register two tools (search + execute). The catalog stays on the server; the agent writes JavaScript that runs in a fresh, sandboxed isolate. Same pattern as cloudflare-mcp, packaged for any API.
Docs: codemode-workers.pages.dev
Why
One tool per endpoint dumps every schema into the model's context. Code mode keeps the spec server-side and sends two tools, so the context cost stays flat however big the API is. Against the Urantia Papers API (58 endpoints):
| Approach | Tools | Tokens | | --------------------------- | ----- | ------ | | One tool per endpoint, full | 58 | 3,489 | | Code mode | 2 | 184 |
Run bun run eval:tokens to measure it for your own API.
Install
npm install codemode-workers
Bring your own MCP server SDK (e.g. @modelcontextprotocol/server). The library only needs a registerTool(name, config, cb).
Usage
// wrangler.jsonc
{
"worker_loaders": [{ "binding": "LOADER" }],
"services": [
{
"binding": "GATE_SELF",
"service": "",
"entrypoint": "Gate",
},
],
}
import { exports } from 'cloudflare:workers'
import {
createGate,
processSpec,
registerCodemodeTools,
} from 'codemode-workers'
export const Gate = createGate({ allowedHosts: ['api.example.com'] })
registerCodemodeTools(server, {
loader: env.LOADER,
catalog: {
get: async () => processSpec(await (await fetch(SPEC_URL)).json()),
},
api: {
baseUrl: 'https://api.example.com/v1',
outbound: () =>
exports.Gate({
props: { headers: { Authorization: `Bearer ${env.API_TOKEN}` } },
}),
},
})
search runs code over your catalog with no network. execute calls the API through the gate, which allowlists your host and injects the credential that the agent never sees. Full walkthrough and API reference in the docs.
Security
The credential lives in the gate, outside the sandbox, so agent code cannot read the token or reach any host but yours. search has no network. Every call is a fresh isolate. Details and residual risks: codemode-workers.pages.dev/security.
Develop
bun install
bun run check # typecheck + tests (workerd via @cloudflare/vitest-pool-workers)
License
MIT. See [LICENSE](./LICENSE).
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ancs21
- Source: ancs21/codemode-workers
- License: MIT
- Homepage: https://codemode-workers.pages.dev
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.