Toolkien
io.github.epavanelloPublished by GitHub account epavanellov0.0.1Updated Nov 14, 2026
One MCP server for all your MCP servers: code mode, per-tool permissions, approvals and audit.
Overview
An MCP gateway that connects one client to every remote MCP server in a workspace, exposing them through searchable tools and sandboxed TypeScript scripts.
- What you can do
- Search and describe the tools of all MCP servers configured in a workspace, with generated TypeScript declarations
- Run a TypeScript script in a Deno sandbox that calls those tools, instead of loading hundreds of tool definitions
- Apply per-tool permission levels (allow, ask, block) and pause writes for human approval, resuming without repeating calls
- Record audit metadata for each call and keep credentials encrypted
- Manage connectors, permissions and executions through a web UI with OAuth sign-in
- When to use it
- Useful when an assistant needs to work across several remote MCP servers at once and you want one connection, fewer tool definitions in context, and explicit control over which calls are allowed or need approval.
- Requirements
- A remote Streamable HTTP endpoint; the hosted service is at the provider's domain, and self-hosting runs a Docker Compose stack (app, OpenBao, egress proxy, runner). Clients authenticate via OAuth 2.1 with passwordless email sign-in. Local development needs Node 22+, pnpm 10 and Deno 2.
Installation
In SourceWeft
- Open Toolkien in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.epavanello%2Ftoolkien/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"toolkien": {
"type": "http",
"url": "https://toolkien.emadev.co/mcp"
}
}
}README
Toolkien
One MCP to rule them all. Toolkien is an MCP gateway in "code mode": connect one MCP server to your clients (Claude, Codex, Cursor…) and use every remote MCP server configured in your workspace. Instead of hundreds of tool definitions, the agent searches tools, reads their TypeScript declarations and runs one TypeScript script in a Deno sandbox. Every call is checked against explicit permissions; writes can pause for a human approval and resume without repeating calls. Tokens are encrypted, content is never logged.
Open source (AGPL-3.0) and available as a managed service. Product spec: docs/spec.md (Italian) ·
Decisions: DECISIONS.md · Conventions: docs/conventions.md · Client compatibility:
docs/compatibility.md.
Architecture
Flow: the agent calls tools_search → tools_describe → execute. The app resolves the
workspace and the visible tools, generates .d.ts declarations, and sends the script to the
runner over a WebSocket. Each tool call goes through the bridge: kill switches, permission level
(allow / ask / block), approval gate, encrypted credential, upstream call, sealed result for
durable replay, audit (metadata only).
Local development
Requirements: Node 22+, pnpm 10 (corepack enable picks the pinned version), Deno 2.
Connect a client: add http://localhost:5173/mcp as a remote MCP server (Streamable HTTP). It
discovers OAuth, opens the consent page and asks which workspace to start in. For a local MCP
server to connect to, development (only) accepts http://localhost… connector URLs.
Useful commands:
Every environment variable is declared and documented in src/env.ts.
Self-hosting
One docker compose project (app, OpenBao, egress proxy, runner): see
docs/self-hosting.md, and docs/deploy-coolify.md
for Coolify. Migrations run when the app container starts.
Contributing to the directory
The curated server directory is data: one JSON file per server in directory/servers/. Read
directory/CONTRIBUTING.md, add or edit a file, run
pnpm directory:validate, open a pull request.
Before launch
Placeholders that need real values:
The repository URL is REPOSITORY_URL in src/lib/brand.ts.
- Legal drafts in
legal/*.md: operator legal name and address, privacy / DPO / security / contact emails, VPS provider and region, Resend legal entity, transfer mechanism and sending region, liability cap, governing law, notice periods. All drafts need review by a lawyer or DPO. - Resend: verified sender domain (EU region),
EMAIL_FROM, an API key with sending access only. - VPS provider (EU) for the compose stack; Turso database in an EU region.
- OG image endpoint (not implemented).
License
AGPL-3.0. If you run a modified Toolkien as a network service, you must offer its source to its users.
Source: README.md at commit 8510bd7
Tools
0Version history
1- v0.0.1LatestNov 14, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declaredRequired10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts