Help us improve
Share bugs, ideas, or general feedback.
Configures MCP servers in the Tool Executor sandbox. Add/remove servers, set environment variables, regenerate registry, and manage type definitions.
npx claudepluginhub espalier-redoubt/claudikins-tool-executorHow this skill is triggered — by the user, by Claude, or both
Slash command
/claudikins-tool-executor:te-configThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Configure which MCP servers are available in the Tool Executor sandbox. Serena is mandatory and cannot be removed.
Configures MCP servers for Claude Code Tool Executor sandbox using tool-executor.config.json. Covers adding/removing servers, TypeScript types, env vars, registry regeneration, and rebuilds.
Guides integration of Model Context Protocol (MCP) servers into Claude Code plugins via .mcp.json or plugin.json for external service tools, with scope management (local, project, user).
Manages Model Context Protocol (MCP) servers for Claude Code projects: installs/configures .mcp.json, OAuth remotes, runtime enable/disable, troubleshooting connections.
Share bugs, ideas, or general feedback.
Configure which MCP servers are available in the Tool Executor sandbox. Serena is mandatory and cannot be removed.
tool-executor.config.json → clients.ts loads configs → Sandbox exposes clients
↓
npm run extract → registry/ YAML files
Create tool-executor.config.json in the project root:
{
"$schema": "./tool-executor.config.schema.json",
"servers": [
{
"name": "serena",
"displayName": "Serena",
"command": "uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server"]
},
{
"name": "gemini",
"displayName": "Gemini",
"command": "npx",
"args": ["-y", "@rlabs-inc/gemini-mcp"],
"env": {
"GEMINI_API_KEY": "${GEMINI_API_KEY}"
}
}
]
}
tool-executor.config.jsontool-executor.config.js.tool-executorrc.json{
"servers": [
// ... existing servers ...
{
"name": "newServer",
"displayName": "New Server",
"command": "npx",
"args": ["-y", "@example/new-mcp-server"],
"env": {
"API_KEY": "${NEW_SERVER_API_KEY}"
}
}
]
}
Edit src/types.ts to add the client type:
export interface MCPClients {
serena: Client | null;
// ... existing clients ...
newServer: Client | null; // Add this
}
npm run extract
This connects to all configured MCP servers and generates YAML files in registry/.
npm run build
# Restart Claude Code to pick up new MCP server
WARNING: Serena cannot be removed - it powers both search_tools and is available in the sandbox.
Delete the server entry from tool-executor.config.json.
Remove from src/types.ts MCPClients interface.
rm -rf registry/{category}/{serverName}/
npm run extract # Regenerate remaining
npm run build
Environment variables use ${VAR_NAME} syntax in config:
{
"env": {
"GEMINI_API_KEY": "${GEMINI_API_KEY}",
"CUSTOM_VAR": "${MY_CUSTOM_VAR}"
}
}
| Server | Variable | Purpose |
|---|---|---|
| gemini | GEMINI_API_KEY | Google AI API key |
| apify | APIFY_TOKEN | Apify platform token |
In Claude Code config (~/.claude.json):
{
"mcpServers": {
"tool-executor": {
"env": {
"GEMINI_API_KEY": "your-key-here",
"APIFY_TOKEN": "your-token-here"
}
}
}
}
Or in shell:
export GEMINI_API_KEY="your-key-here"
registry/
├── ai-models/gemini/ # Gemini tools (AI queries, images, diagrams)
├── code-nav/serena/ # Serena tools
├── knowledge/context7/ # Context7 tools
├── knowledge/notebooklm/ # NotebookLM tools
├── reasoning/sequentialThinking/
├── ui/shadcn/ # shadcn tools
└── web/apify/ # Apify tools
name: tool_name
server: serverName
category: category-folder
description: >-
What the tool does. Can be multi-line.
inputSchema:
type: object
properties:
param1:
type: string
description: Parameter description
required:
- param1
example: |
const result = await serverName.tool_name({ param1: "value" });
console.log(result);
notes: |
- Optional tips
- Gotchas to be aware of
If npm run extract fails for a server, create YAML files manually:
mkdir -p registry/{category}/{serverName}
Then create registry/{category}/{serverName}/{tool-name}.yaml with the format above.
Serena indexes the registry for semantic search. If search results seem stale:
# Re-run extraction to refresh YAML files
npm run extract
# Rebuild to pick up changes
npm run build
These are the built-in defaults if no config file exists:
| Name | Command | Package |
|---|---|---|
| serena | uvx | git+https://github.com/oraios/serena |
| context7 | npx | @upstash/context7-mcp |
| gemini | npx | @rlabs-inc/gemini-mcp |
| notebooklm | npx | notebooklm-mcp |
| shadcn | npx | shadcn-ui-mcp-server |
| apify | npx | @apify/actors-mcp-server |
| sequentialThinking | npx | @modelcontextprotocol/server-sequential-thinking |
${CLAUDE_PLUGIN_ROOT}/src/sandbox/clients.ts - Client configuration and lifecycle${CLAUDE_PLUGIN_ROOT}/src/config.ts - Config file loading${CLAUDE_PLUGIN_ROOT}/src/types.ts - Type definitions${CLAUDE_PLUGIN_ROOT}/scripts/extract-schemas.ts - Registry generation