cursor-plugin-cc
Claude plans. Cursor writes. Claude reviews. A Claude Code plugin that delegates coding execution to Cursor's Composer โ without ever leaving the Claude Code TUI.
๐ฆ Model Context Protocol (MCP) server for OpenClaw AI assistant integration.
> /plugin marketplace add freema/openclaw-mcp> /plugin install openclaw@openclaw-mcp
๐ฆ Model Context Protocol (MCP) server for OpenClaw AI assistant integration.
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?
Pre-built images are published to GitHub Container Registry on every release.
docker pull ghcr.io/freema/openclaw-mcp:latest
Create a docker-compose.yml:
services:
mcp-bridge:
image: ghcr.io/freema/openclaw-mcp:latest
container_name: openclaw-mcp
restart: unless-stopped
ports:
- "3000:3000"
environment:
- OPENCLAW_URL=http://host.docker.internal:18789
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- OPENCLAW_AGENT_ID=${OPENCLAW_AGENT_ID:-}
- OPENCLAW_MODEL=openclaw
- AUTH_ENABLED=true
- MCP_CLIENT_ID=openclaw
- MCP_CLIENT_SECRET=${MCP_CLIENT_SECRET}
- MCP_ISSUER_URL=${MCP_ISSUER_URL:-}
- MCP_REDIRECT_URIS=https://claude.ai/api/mcp/auth_callback,https://claude.com/api/mcp/auth_callback
- TRUST_PROXY=1
- CORS_ORIGINS=https://claude.ai
extra_hosts:
- "host.docker.internal:host-gateway"
read_only: true
security_opt:
- no-new-privileges
Generate secrets and start:
export MCP_CLIENT_SECRET=$(openssl rand -hex 32)
export OPENCLAW_GATEWAY_TOKEN=your-gateway-token
docker compose up -d
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.1.0
npx openclaw-mcp
Add to your Claude Desktop config:
{
"mcpServers": {
"openclaw": {
"command": "npx",
"args": ["openclaw-mcp"],
"env": {
"OPENCLAW_URL": "http://127.0.0.1:18789",
"OPENCLAW_GATEWAY_TOKEN": "your-gateway-token",
"OPENCLAW_AGENT_ID": "main",
"OPENCLAW_MODEL": "openclaw",
"OPENCLAW_TIMEOUT_MS": "300000"
}
}
}
}
AUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=your-secret \
MCP_ISSUER_URL=https://mcp.your-domain.com \
CORS_ORIGINS=https://claude.ai OPENCLAW_GATEWAY_TOKEN=your-gateway-token \
npx openclaw-mcp --transport http --port 3000
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.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Your Server โ
โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OpenClaw โ โ OpenClaw MCP โ โ
โ โ Gateway โโโโโโโบโ Bridge Server โ โ
โ โ :18789 โ โ :3000 โ โ
โ โ โ โ โ โ
โ โ OpenAI-compat โ โ - OAuth 2.1 auth โ โ
โ โ /v1/chat/... โ โ - CORS protection โ โ
โ โโโโโโโโโโโโโโโโโโโ โ - Input validation โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTPS + OAuth 2.1
โผ
โโโโโโโโโโโโโโโโโโโ
โ Claude.ai โ
โ (MCP Client) โ
โโโโโโโโโโโโโโโโโโโ
| Tool | Description |
|---|---|
openclaw_chat | Send messages to OpenClaw and get responses |
openclaw_status | Check OpenClaw gateway health |
openclaw_instances | List all configured OpenClaw instances |
| Tool | Description |
|---|---|
openclaw_chat_async | Queue a message, get task_id immediately |
openclaw_task_status | Check task progress and get results |
openclaw_task_list | List your tasks with filtering |
openclaw_task_cancel | Cancel a pending task |
Tasks are scoped to the MCP connection that created them. In HTTP mode, where
one process serves many clients, a client can only see and cancel its own
tasks โ another client's task_id reads as "not found" even if it is known.
Reconnecting starts a fresh scope, so poll a task on the connection that
queued it.
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).
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude.ai / Claude Desktop โ
โ (MCP Client) โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OpenClaw MCP Bridge Server โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Instance โ โ Instance โ โ Instance โ โ
โ โ Registry โ โ Resolver โ โ Validator โ โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโ โ
โ โ Per-Instance OpenClaw Clients โ โ
โ โ (separate auth, timeout, URL per instance) โ โ
โ โโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ ๐ฆ prod โ โ ๐ฆ staging โ โ ๐ฆ dev โ
โ (default) โ โ โ โ โ
โ :18789 โ โ :18789 โ โ :18789 โ
โ OpenClaw GW โ โ OpenClaw GW โ โ OpenClaw GW โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
OPENCLAW_INSTANCES='[
{"name": "prod", "url": "http://prod:18789", "token": "tok1", "default": true},
{"name": "staging", "url": "http://staging:18789", "token": "tok2"},
{"name": "dev", "url": "http://dev:18789", "token": "tok3"}
]'
All tools accept an optional instance parameter to target a specific gateway:
# Chat with staging instance
openclaw_chat message="Deploy status?" instance="staging"
# Check health of prod
openclaw_status instance="prod"
# List all configured instances
openclaw_instances
# Async task targeting dev
openclaw_chat_async message="Run tests" instance="dev"
When instance is omitted, the default instance is used. Each instance has its own auth token, timeout, and URL โ fully isolated.
openclaw_instancesSee Configuration โ Multi-Instance Mode for the full reference.
โ ๏ธ Always enable authentication in production!
# Generate secure client secret
export MCP_CLIENT_SECRET=$(openssl rand -hex 32)
# Run with auth enabled
AUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=$MCP_CLIENT_SECRET \
openclaw-mcp --transport http
CORS is disabled unless you opt in. Set CORS_ORIGINS only when a browser
client needs to reach the server directly:
CORS_ORIGINS=https://claude.ai,https://your-app.com
See Configuration for all security options.
Two defaults changed for security. Both only affect HTTP mode; stdio is unchanged.
CORS_ORIGINS sent
Access-Control-Allow-Origin: *. If a browser client depends on that, set
the origins explicitly (CORS_ORIGINS=https://your-app.com), or
CORS_ORIGINS=* to restore the old behaviour.task_id queued by a different connection will now get
"not found".Claude plans. Cursor writes. Claude reviews. A Claude Code plugin that delegates coding execution to Cursor's Composer โ without ever leaving the Claude Code TUI.
openclaw-mcp is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the MCP Servers category. Install it with the command on its page. It includes openclaw-management. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it