
OpenClaw MCP Server
io.github.freemaPublished by GitHub account freemav1.8.1Updated Nov 7, 2026
MCP server bridging Claude.ai/Desktop with self-hosted OpenClaw via OAuth 2.1.
The publisher's own server: OpenClaw Direct
Overview
Bridges Claude clients to a self-hosted OpenClaw AI assistant, letting the assistant send messages to OpenClaw agents and track long-running tasks.
- What you can do
- Send messages to an OpenClaw agent and get responses, or queue them asynchronously and poll, list or cancel tasks
- Check gateway health and list configured OpenClaw instances
- Route requests to one of several named OpenClaw gateways (prod, staging, dev) per call
- Run locally over stdio for Claude Desktop, or as an HTTP bridge with OAuth 2.1 for Claude.ai
- When to use it
- Use it when you run a self-hosted OpenClaw assistant and want Claude Desktop or Claude.ai to delegate work to it, including long-running jobs handled through async tasks, or to reach several OpenClaw gateways from one connector.
- Requirements
- Node.js 20 or newer, or the published Docker image. A reachable OpenClaw gateway with its HTTP chat-completions endpoint enabled, plus OPENCLAW_URL and the OPENCLAW_GATEWAY_TOKEN bearer token. HTTP mode requires MCP_CLIENT_ID and MCP_CLIENT_SECRET, and behind a reverse proxy also MCP_ISSUER_URL and TRUST_PROXY.
Installation
In SourceWeft
- Open OpenClaw MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
OpenClaw MCP Server
[npm version] [CI] [License: MIT] [GHCR] [Website]
[Image]🦞 Model Context Protocol (MCP) server for OpenClaw AI assistant integration.
Demo
Why I Built This
Hey! I created this MCP server because I didn't want to rely solely on messaging channels to communicate with OpenClaw. What really excites me is the ability to connect OpenClaw to the Claude web UI. Essentially, my chat can delegate tasks to my Claw bot, which then handles everything else — like spinning up Claude Code to fix issues for me.
Think of it as an AI assistant orchestrating another AI assistant. Pretty cool, right?
Quick Start
Docker (Recommended)
Pre-built images are published to GitHub Container Registry on every release.
Create a docker-compose.yml:
The port is published on 127.0.0.1 only: the bridge speaks plain HTTP and is
meant to sit behind a TLS-terminating reverse proxy on the same host (see
Deployment).
Generate secrets and start:
Then in Claude.ai add a custom MCP connector pointing to https://your-domain.com/mcp with MCP_CLIENT_ID=openclaw and your MCP_CLIENT_SECRET.
Important: The connector URL must end with
/mcp— that's the Streamable HTTP endpoint. A bare domain (https://your-domain.com) hits the server root and returns 404 after OAuth completes.
Tip: Pin a specific version instead of
latestfor production:ghcr.io/freema/openclaw-mcp:1.8.1
Use a least-privilege agent. Set
OPENCLAW_AGENT_IDto a dedicated OpenClaw agent that only has the tools you want Claude to reach — not your main agent with shell access. See Security.
Local (Claude Desktop)
Add to your Claude Desktop config:
Remote (Claude.ai) without Docker
Important: When running behind a reverse proxy (Caddy, nginx, Traefik, Cloudflare Tunnel, etc.) you must set:
MCP_ISSUER_URL(or--issuer-url) to your public HTTPS URL — otherwise OAuth metadata advertiseshttp://localhost:3000and clients fail to authenticate.TRUST_PROXY=1(or--trust-proxy 1) — otherwiseexpress-rate-limitrejects the proxy'sX-Forwarded-Forheader and/tokencrashes withERR_ERL_UNEXPECTED_X_FORWARDED_FOR.
Recommended: Set
MCP_REDIRECT_URIS=https://claude.ai/api/mcp/auth_callback,https://claude.com/api/mcp/auth_callbackso authorization codes can only be delivered to Claude's callbacks. Note the exact/api/mcp/auth_callbackpath — matching is exact, and getting it wrong fails OAuth withUnregistered redirect_uri(see Troubleshooting).
See Installation Guide for details.
Architecture
Available Tools
Sync Tools
Async Tools (for long-running operations)
Tasks belong to whoever created them. In HTTP mode that is the authenticated
OAuth client, so a client can poll its tasks from a new MCP session, and
another client's task_id reads as "not found" even if it is known. Without
an authenticated client (stdio) tasks are scoped to the connection.
Multi-Instance Mode
Orchestrate multiple OpenClaw gateways from a single MCP server. One bridge, many claws — route requests to prod, staging, dev, or whatever you name them (lobster-supreme and the-claw-abides are perfectly valid names).
Setup
Usage
All tools accept an optional instance parameter to target a specific gateway:
When instance is omitted, the default instance is used. Each instance has its own auth token, timeout, and URL — fully isolated.
Key Features
- Zero-migration upgrade — existing single-instance deployments work without any config change
- Per-instance isolation — separate auth tokens, timeouts, and URLs
- Dynamic routing — Claude picks the right instance per request
- Task tracking — async tasks remember which instance they target
- Security — tokens are never exposed via
openclaw_instances
See Configuration — Multi-Instance Mode for the full reference.
Documentation
- Installation — Setup for Claude Desktop & Claude.ai
- Configuration — Environment variables & options
- Deployment — Docker & production setup
- Threat Model — What Claude can/can't trigger, trust boundaries & attack surfaces
- Logging — What gets logged, where, and what is never logged
- Development — Contributing & adding tools
- Security — Security policy & best practices
Security
⚠️ Always enable authentication in production!
CORS is disabled unless you opt in. Set CORS_ORIGINS only when a browser
client needs to reach the server directly:
See Configuration for all security options.
Give the bridge a least-privilege agent
The bridge passes text to an OpenClaw agent and cannot judge what that text
makes the agent do. Anything Claude reads — a web page, an email, a document —
can end up in an openclaw_chat call, so prompt injection into an agent that
can run shell commands is the biggest real-world risk of this setup, and OAuth
does not help against it. Do not point the bridge at your main agent: create a
dedicated OpenClaw agent with only the tools it needs, sandboxed, and select it
with OPENCLAW_AGENT_ID. Details in SECURITY.md
and the Threat Model.
Upgrading to 1.8.1
A security and maintenance release; no configuration changes are required.
docker-compose.ymlnow publishes the port on127.0.0.1only. If you use the compose file from this repository and reach port 3000 directly from another machine (no reverse proxy on the same host), it stops being reachable after you update the file. Put a reverse proxy in front, or setBIND_ADDRESS=0.0.0.0to restore the old binding. A compose file you maintain yourself, anddocker run, are not affected. The compose file also drops all Linux capabilities (cap_drop: [ALL]).- MCP SDK 1.32.2 with its security fixes; the Docker image runs on Node.js 24. The npm package still supports Node.js ≥ 20.
- Request bodies on
/mcpand/messagesare limited to 4 MiB and parsed only after authentication. Long non-ASCII messages that used to fail with413under the old implicit 100 kB limit now work; JSON-RPC batches are capped at 100 messages by the SDK.
See the changelog for the full list.
Upgrading to 1.8.0
OAuth is now mandatory for the HTTP transport. Before 1.8.0 HTTP mode ran
without authentication unless AUTH_ENABLED=true was set, so a bare
docker run of the image exposed every tool to anyone who could reach the
port. Now:
- Without
MCP_CLIENT_IDandMCP_CLIENT_SECRETthe server refuses to start.AUTH_ENABLED=truestill works but is no longer needed. AUTH_ENABLED=false/--no-authrefuses to start instead of silently disabling auth. If you really need an unauthenticated server (e.g. a proxy in front already authenticates every request), setMCP_DANGEROUSLY_DISABLE_AUTH=true(--dangerously-disable-auth).- stdio is unchanged.
Async tasks now belong to the OAuth client, not the MCP connection. A client that opens a new MCP session between tool calls can poll the tasks it created (#44). The bridge is single-tenant — whoever holds the client secret already has full access to the same OpenClaw gateway — so the OAuth client is the isolation boundary. Dynamically registered clients each get their own namespace. Without auth, tasks stay scoped to the connection.
New ALLOWED_HOSTS for a loopback bind behind a reverse proxy that
preserves the public Host header (Tailscale Serve, nginx with
proxy_set_header Host $host), which previously failed with 403 Invalid Host
(#41). See
configuration.
Upgrading to 1.7.0
Two defaults changed for security. Both only affect HTTP mode; stdio is unchanged.
- CORS is now off by default. Previously an unset
CORS_ORIGINSsentAccess-Control-Allow-Origin: *. If a browser client depends on that, set the origins explicitly (CORS_ORIGINS=https://your-app.com), orCORS_ORIGINS=*to restore the old behaviour. - Async tasks are scoped to the connection that created them. A client
that used to poll a
task_idqueued by a different connection will now get "not found". (1.8.0 relaxes this to the authenticated OAuth client.)
Migrating from SSE to HTTP transport
Starting with v1.5.0, the primary transport is Streamable HTTP (--transport http). The legacy SSE transport (--transport sse) is deprecated but still works for backward compatibility.
What changed
Migration steps
-
CLI / Docker: Replace
--transport ssewith--transport http -
Claude.ai connector URL: No change needed — Claude.ai already uses
/mcp(Streamable HTTP) -
Legacy clients: The
/sseand/messagesendpoints still work. A deprecation warning is logged on each SSE connection. -
Dockerfile ENTRYPOINT: Updated automatically if using the official Docker image
Note:
--transport ssewill continue to work as a deprecated alias. Both transports are served simultaneously regardless of which flag you use.
Requirements
- Node.js ≥ 20
- OpenClaw gateway running with HTTP API enabled:
License
MIT
Author
Created by Tomáš Grasl
Related Projects
- OpenClaw — The AI assistant this MCP connects to
- MCP Specification — Model Context Protocol docs
Source: README.md at commit 95eba1b
Tools
0Version history
3- v1.8.1LatestNov 7, 2026
- v1.8.0Oct 25, 2026
- v1.7.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Openclaw integrations
OpenClaw Direct
direct.openclawOfficial publisher
A remote MCP endpoint that lets an assistant deploy, monitor and manage OpenClaw AI assistants through natural language.

OpenClaw MCP Ecosystem
Published by GitHub account yedanyagamiai-cmd
A remote Cloudflare Workers endpoint advertising a bundle of nine MCP servers covering security scanning, knowledge graph, compliance, finance, memory…

Openclaw Upgrade Orchestrator Mcp
Published by GitHub account temurkhan13
A local MCP server for AI runtime upgrade safety, offering snapshot diff and fingerprint checks to detect provider-side regressions.

Openclaw Skill Vetter Mcp
Published by GitHub account temurkhan13
A local MCP server that lets an assistant vet third-party AI agent extensions and agent-configuration files such as AGENTS.md, .cursor/rules and CLAUDE.md.

Openclaw Output Vetter Mcp
Published by GitHub account temurkhan13
Local MCP server that checks AI agent claims against reality, with inline grounding checks, swallowed-exception detection and transcript review.