Skip to content
Conduit

mcp server

openclaw-mcp-adapter

OpenClaw MCP Adapter - Fixed version with factory function for multi-agent support

laozuzhen/openclaw-mcp-adaptercommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "openclaw-mcp-adapter": {
      "command": "npx",
      "args": [
        "-y",
        "openclaw-mcp-adapter"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 23, 2026

MCP Adapter (OpenClaw Plugin)

🔧 Fixed Fork: This is a fixed version of androidStern-personal/openclaw-mcp-adapter that resolves the multi-agent tool registration issue.

Exposes 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.

🆕 What's Fixed

Original Issue: MCP tools were only available to the main agent, not to other agents.

Root Cause: The plugin registered tools as static objects instead of factory functions, preventing proper per-agent tool instantiation.

Fix: Changed tool registration to use factory functions that are called for each agent:

// ❌ Before: Static object (only works for main agent)
api.registerTool({
  name: toolName,
  description: "...",
  parameters: {...},
  async execute(id, params) {...}
})

// ✅ After: Factory function (works for all agents)
api.registerTool(
  (ctx) => ({
    name: toolName,
    description: "...",
    parameters: {...},
    async execute(id, params) {...}
  }),
  { name: toolName }
)

Now MCP tools are properly available to all agents in your OpenClaw setup.

Requirements

  • OpenClaw gateway
  • Node.js 18+
  • MCP servers you want to connect to

Installation

# Install from this fixed fork
openclaw plugins install https://github.com/laozuzhen/openclaw-mcp-adapter.git

Alternative: install from source

git clone https://github.com/laozuzhen/openclaw-mcp-adapter.git
openclaw plugins install ./openclaw-mcp-adapter

Configuration

1. Enable the plugin and configure servers

Add to ~/.openclaw/openclaw.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}"
              }
            }
          ]
        }
      }
    }
  }
}

2. Allow for sandboxed agents

Add "mcp-adapter" to your sandbox tool allowlist:

{
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["group:runtime", "group:fs", "mcp-adapter"]
      }
    }
  }
}

3. Restart the gateway

openclaw gateway restart

4. Verify

openclaw plugins list
# Should show: MCP Adapter | mcp-adapter | loaded

Server Configuration

Stdio transport (spawns a subprocess)

{
  "name": "filesystem",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-filesystem", "/path/to/dir"],
  "env": {
    "SOME_VAR": "value"
  }
}

HTTP transport (connects to a running server)

{
  "name": "api",
  "transport": "http",
  "url": "http://localhost:3000/mcp",
  "headers": {
    "Authorization": "Bearer ${API_TOKEN}"
  }
}

Config Options

OptionTypeDefaultDescription
serversarray[]List of MCP servers to connect to
toolPrefixbooleantruePrefix tool names with server name (e.g., myserver_toolname)

Server Options

OptionTypeRequiredDescription
namestringYesUnique name for this server
transport"stdio" | "http"NoConnection type (default: stdio)
commandstringstdio onlyCommand to spawn
argsstring[]NoCommand arguments
envobjectNoEnvironment variables
urlstringhttp onlyServer URL
headersobjectNoHTTP request headers

Environment Variable Interpolation

Use ${VAR_NAME} in env and headers values to reference environment variables from ~/.openclaw/.env:

{
  "env": {
    "API_KEY": "${MY_SERVICE_API_KEY}"
  }
}

How It Works

  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

Example: AgentMail

{
  "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.

License

MIT

↑↓ navigate openesc close