OpenClaw plugin that exposes MCP server tools as native agent tools
npm install xiaowanExposes MCP (Model Context Protocol) server tools as native OpenClaw agent tools.
Instead of running MCP servers through a CLI skill, this plugin connects to your MCP servers at startup, discovers their tools, and registers each one as a first-class tool that agents can invoke directly.
- OpenClaw gateway
- Node.js 18+
- MCP servers you want to connect to
``bash`
openclaw plugins install mcp-adapter
Alternative: install from source
`bash`
git clone https://github.com/androidStern/openclaw-mcp-adapter.git
openclaw plugins install ./openclaw-mcp-adapter
Add to ~/.openclaw/openclaw.json:
`json`
{
"plugins": {
"entries": {
"mcp-adapter": {
"enabled": true,
"config": {
"servers": [
{
"name": "myserver",
"transport": "stdio",
"command": "npx",
"args": ["-y", "some-mcp-server"],
"env": {
"API_KEY": "${MY_API_KEY}"
}
}
]
}
}
}
}
}
Add "mcp-adapter" to your sandbox tool allowlist:
`json`
{
"tools": {
"sandbox": {
"tools": {
"allow": ["group:runtime", "group:fs", "mcp-adapter"]
}
}
}
}
`bash`
openclaw gateway restart
`bash`
openclaw plugins listShould show: MCP Adapter | mcp-adapter | loaded
`json`
{
"name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem", "/path/to/dir"],
"env": {
"SOME_VAR": "value"
}
}
`json`
{
"name": "api",
"transport": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| servers | array | [] | List of MCP servers to connect to |toolPrefix
| | boolean | true | Prefix tool names with server name (e.g., myserver_toolname) |
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| name | string | Yes | Unique name for this server |transport
| | "stdio" \| "http" | No | Connection type (default: stdio) |command
| | string | stdio only | Command to spawn |args
| | string[] | No | Command arguments |env
| | object | No | Environment variables |url
| | string | http only | Server URL |headers
| | object | No | HTTP request headers |
Use ${VAR_NAME} in env and headers values to reference environment variables from ~/.openclaw/.env:
`json`
{
"env": {
"API_KEY": "${MY_SERVICE_API_KEY}"
}
}
1. On gateway startup, the plugin connects to each configured MCP server
2. Calls listTools() to discover available tools
3. Registers each tool with OpenClaw using its name, description, and JSON Schema
4. When an agent invokes a tool, the plugin proxies the call to the MCP server
5. If the connection dies, it automatically reconnects on the next tool call
`json`
{
"name": "agentmail",
"transport": "stdio",
"command": "npx",
"args": ["-y", "agentmail-mcp"],
"env": {
"AGENTMAIL_API_KEY": "${AGENTMAIL_API_KEY}"
}
}
This registers tools like agentmail_create_inbox, agentmail_send_email`, etc.
MIT