#MCP servers register and launch but tools don't reach the agent (2026.5.7, Anthropic provider)

1 messages · Page 1 of 1 (latest)

steel trail
#

Hey 👋 hoping someone can sanity-check this before I keep banging my head on it. Already filed a GitHub issue but figured I'd ask here in case it's a known config thing.
Setup:

OpenClaw 2026.5.7 (npm install, Ubuntu 24.04 VPS)
anthropic/claude-sonnet-4-6 with API key auth
tools.profile: "coding"
One Telegram channel, one agent

What I did:
Wrote a minimal stdio MCP server with one tool (say_hello). Registered it with openclaw mcp set hello '{"command":"node","args":["/path/server.js"]}'. Confirmed registration with openclaw mcp list.
What works:
The MCP server launches correctly. Gateway log shows:
bundle-mcp:hello: hello MCP server running on stdio
What doesn't:
The agent doesn't see the tool. When asked, Prime lists only built-ins (read/write/edit/exec/process/sessions_/image). No say_hello, no bundle-mcp:, no mcp:*.
Suspicious log:
Every agent turn goes through:
embedded run prompt start: provider=anthropic api=anthropic-messages endpoint=anthropic-public route=native policy=none
The route=native policy=none looks like it's bypassing MCP injection.
Stuff I tried that didn't work:

tools.alsoAllow with mcp, bundle-mcp, bundle-mcp:hello — all rejected as "unknown entries"
tools.profile: "full"
agents.defaults.agentRuntime: {"id":"pi"} — accepted but route stayed native
Per-model and per-provider agentRuntime — schema rejected

A reviewer on the GitHub issue confirmed agents.defaults.agentRuntime is legacy/ignored, and that runtime selection is provider/model-scoped — but I can't find the right key to set it on.
Question: Has anyone successfully exposed user-MCP tools to an Anthropic-provider agent on 2026.5.7? What's the right config shape?

restive umbraBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

livid bayBOT
#

I checked the current docs/source path for this. A couple sanity points:

  1. route=native policy=none is probably a red herring. That’s the Anthropic API transport path, not necessarily “MCP was bypassed”. For API-key Anthropic, OpenClaw’s embedded PI runtime is the compatibility path that should materialize configured MCP tools.

  2. The runtime key shape is provider/model-scoped, not whole-agent:

{
  models: {
    providers: {
      anthropic: {
        agentRuntime: { id: "pi" }
      }
    }
  }
}
#

or model-specific:

{
  agents: {
    defaults: {
      models: {
        "anthropic/claude-sonnet-4-6": {
          agentRuntime: { id: "pi" }
        }
      }
    }
  }
}

agents.defaults.agentRuntime / agents.list[].agentRuntime are legacy and ignored, which matches what the reviewer told you.