Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP server bridging Claude.ai/Desktop with self-hosted OpenClaw via OAuth 2.1.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
OPENCLAW_URL, OPENCLAW_GATEWAY_TOKEN, OPENCLAW_MODEL, OPENCLAW_TIMEOUT_MSValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"openclaw": {
"command": "npx",
"args": [
"-y",
"openclaw-mcp"
],
"env": {
"OPENCLAW_URL": "your-value",
"OPENCLAW_GATEWAY_TOKEN": "your-value",
"OPENCLAW_MODEL": "your-value",
"OPENCLAW_TIMEOUT_MS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add openclaw --env OPENCLAW_URL=your-value --env OPENCLAW_GATEWAY_TOKEN=your-value --env OPENCLAW_MODEL=your-value --env OPENCLAW_TIMEOUT_MS=your-value -- npx -y openclaw-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"openclaw": {
"command": "npx",
"args": [
"-y",
"openclaw-mcp"
],
"env": {
"OPENCLAW_URL": "your-value",
"OPENCLAW_GATEWAY_TOKEN": "your-value",
"OPENCLAW_MODEL": "your-value",
"OPENCLAW_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"openclaw": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"openclaw-mcp"
],
"env": {
"OPENCLAW_URL": "your-value",
"OPENCLAW_GATEWAY_TOKEN": "your-value",
"OPENCLAW_MODEL": "your-value",
"OPENCLAW_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
OPENCLAW_MODEL envOPENCLAW_TIMEOUT_MS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account freema, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: OPENCLAW_URL, OPENCLAW_GATEWAY_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.8.1) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js, Docker on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, LexPact UK Contracts
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Generate UK-law contracts: NDA, service, freelance, recruiter terms of business, IR35.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
🦞 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:
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:
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.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.
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" } } } }
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 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.
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"
openclaw_status instance="prod"
openclaw_instances
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)
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.
The bridge passes text to an OpenClaw agent and cannot judge what that text makes
Only the beginning is shown; read the rest in the repo