Use this skill when users ask "add MCP server", "remove MCP", "configure tool executor", "add new tool", "environment variables for tool executor", "regenerate registry", or need to modify which MCP servers are available in the sandbox.
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 generationSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer