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.
Configures MCP servers and environment variables for the Tool Executor sandbox.
/plugin marketplace add elb-pr/claudikins-tool-executor/plugin install elb-pr-claudikins-tool-executor@elb-pr/claudikins-tool-executorThis skill inherits all available tools. When active, it can use any tool Claude has access to.
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 generationUse when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.