{"id":43612588,"url":"https://github.com/freema/openclaw-mcp","last_synced_at":"2026-03-14T23:12:26.280Z","repository":{"id":336117858,"uuid":"1148161052","full_name":"freema/openclaw-mcp","owner":"freema","description":"🦞 MCP server for OpenClaw - secure bridge between Claude.ai and your self-hosted OpenClaw assistant with OAuth2 authentication","archived":false,"fork":false,"pushed_at":"2026-02-07T21:10:46.000Z","size":762,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-08T01:09:21.442Z","etag":null,"topics":["docker-compose","mcp-server","open-claw","productivity","security","typescript"],"latest_commit_sha":null,"homepage":"https://www.tomasgrasl.cz/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freema.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T16:42:53.000Z","updated_at":"2026-02-07T21:10:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/freema/openclaw-mcp","commit_stats":null,"previous_names":["freema/openclaw-mcp"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/freema/openclaw-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freema%2Fopenclaw-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freema%2Fopenclaw-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freema%2Fopenclaw-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freema%2Fopenclaw-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freema","download_url":"https://codeload.github.com/freema/openclaw-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freema%2Fopenclaw-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29556404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T18:16:07.221Z","status":"ssl_error","status_checked_at":"2026-02-17T18:16:04.782Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","mcp-server","open-claw","productivity","security","typescript"],"created_at":"2026-02-04T12:11:19.705Z","updated_at":"2026-03-14T23:12:26.260Z","avatar_url":"https://github.com/freema.png","language":"TypeScript","funding_links":[],"categories":["Integrations \u0026 Extensions","پیاده‌سازی‌های سرور","MCP 工具","Configuration","Open Source Projects"],"sub_categories":["🖥️ \u003ca name=\"command-line\"\u003e\u003c/a\u003eخط فرمان","多智能体编排与工作流","MCP Server Integration","Security"],"readme":"# OpenClaw MCP Server\n\n[![npm version](https://badge.fury.io/js/openclaw-mcp.svg)](https://www.npmjs.com/package/openclaw-mcp)\n[![CI](https://github.com/freema/openclaw-mcp/workflows/CI/badge.svg)](https://github.com/freema/openclaw-mcp/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GHCR](https://img.shields.io/badge/GHCR-ghcr.io%2Ffreema%2Fopenclaw--mcp-blue?logo=github)](https://github.com/freema/openclaw-mcp/pkgs/container/openclaw-mcp)\n\n\u003ca href=\"https://glama.ai/mcp/servers/@freema/openclaw-mcp\"\u003e\n  \u003cimg width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@freema/openclaw-mcp/badge\" /\u003e\n\u003c/a\u003e\n\n🦞 Model Context Protocol (MCP) server for [OpenClaw](https://github.com/openclaw/openclaw) AI assistant integration.\n\n## Demo\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/claude-ai-demo.gif\" alt=\"OpenClaw MCP in Claude.ai\" width=\"720\" /\u003e\n\u003c/p\u003e\n\n## Why I Built This\n\nHey! 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.\n\nThink of it as an AI assistant orchestrating another AI assistant. Pretty cool, right?\n\n## Quick Start\n\n### Docker (Recommended)\n\nPre-built images are published to GitHub Container Registry on every release.\n\n```bash\ndocker pull ghcr.io/freema/openclaw-mcp:latest\n```\n\nCreate a `docker-compose.yml`:\n\n```yaml\nservices:\n  mcp-bridge:\n    image: ghcr.io/freema/openclaw-mcp:latest\n    container_name: openclaw-mcp\n    restart: unless-stopped\n    ports:\n      - \"3000:3000\"\n    environment:\n      - OPENCLAW_URL=http://host.docker.internal:18789\n      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}\n      - AUTH_ENABLED=true\n      - MCP_CLIENT_ID=openclaw\n      - MCP_CLIENT_SECRET=${MCP_CLIENT_SECRET}\n      - MCP_ISSUER_URL=${MCP_ISSUER_URL:-}\n      - CORS_ORIGINS=https://claude.ai\n    extra_hosts:\n      - \"host.docker.internal:host-gateway\"\n    read_only: true\n    security_opt:\n      - no-new-privileges\n```\n\nGenerate secrets and start:\n\n```bash\nexport MCP_CLIENT_SECRET=$(openssl rand -hex 32)\nexport OPENCLAW_GATEWAY_TOKEN=your-gateway-token\ndocker compose up -d\n```\n\nThen in Claude.ai add a custom MCP connector pointing to your server with `MCP_CLIENT_ID=openclaw` and your `MCP_CLIENT_SECRET`.\n\n\u003e **Tip:** Pin a specific version instead of `latest` for production: `ghcr.io/freema/openclaw-mcp:1.1.0`\n\n### Local (Claude Desktop)\n\n```bash\nnpx openclaw-mcp\n```\n\nAdd to your Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"openclaw\": {\n      \"command\": \"npx\",\n      \"args\": [\"openclaw-mcp\"],\n      \"env\": {\n        \"OPENCLAW_URL\": \"http://127.0.0.1:18789\",\n        \"OPENCLAW_GATEWAY_TOKEN\": \"your-gateway-token\",\n        \"OPENCLAW_TIMEOUT_MS\": \"300000\"\n      }\n    }\n  }\n}\n```\n\n### Remote (Claude.ai) without Docker\n\n```bash\nAUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=your-secret \\\n  MCP_ISSUER_URL=https://mcp.your-domain.com \\\n  CORS_ORIGINS=https://claude.ai OPENCLAW_GATEWAY_TOKEN=your-gateway-token \\\n  npx openclaw-mcp --transport sse --port 3000\n```\n\n\u003e **Important:** When running behind a reverse proxy (Caddy, nginx, etc.), you **must** set `MCP_ISSUER_URL` (or `--issuer-url`) to your public HTTPS URL. Without this, OAuth metadata will advertise `http://localhost:3000` and clients will fail to authenticate.\n\nSee [Installation Guide](docs/installation.md) for details.\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                         Your Server                             │\n│                                                                 │\n│  ┌─────────────────┐      ┌─────────────────────────┐          │\n│  │   OpenClaw      │      │    OpenClaw MCP         │          │\n│  │   Gateway       │◄────►│    Bridge Server        │          │\n│  │   :18789        │      │    :3000                │          │\n│  │                 │      │                         │          │\n│  │  OpenAI-compat  │      │  - OAuth 2.1 auth       │          │\n│  │  /v1/chat/...   │      │  - CORS protection      │          │\n│  └─────────────────┘      │  - Input validation     │          │\n│                           └──────────┬──────────────┘          │\n│                                      │                          │\n└──────────────────────────────────────┼──────────────────────────┘\n                                       │ HTTPS + OAuth 2.1\n                                       ▼\n                              ┌─────────────────┐\n                              │   Claude.ai     │\n                              │   (MCP Client)  │\n                              └─────────────────┘\n```\n\n## Available Tools\n\n### Sync Tools\n\n| Tool | Description |\n|------|-------------|\n| `openclaw_chat` | Send messages to OpenClaw and get responses |\n| `openclaw_status` | Check OpenClaw gateway health |\n\n### Async Tools (for long-running operations)\n\n| Tool | Description |\n|------|-------------|\n| `openclaw_chat_async` | Queue a message, get task_id immediately |\n| `openclaw_task_status` | Check task progress and get results |\n| `openclaw_task_list` | List all tasks with filtering |\n| `openclaw_task_cancel` | Cancel a pending task |\n\n## Documentation\n\n- [Installation](docs/installation.md) — Setup for Claude Desktop \u0026 Claude.ai\n- [Configuration](docs/configuration.md) — Environment variables \u0026 options\n- [Deployment](docs/deployment.md) — Docker \u0026 production setup\n- [Threat Model](docs/threat-model.md) — What Claude can/can't trigger, trust boundaries \u0026 attack surfaces\n- [Logging](docs/logging.md) — What gets logged, where, and what is never logged\n- [Development](docs/development.md) — Contributing \u0026 adding tools\n- [Security](SECURITY.md) — Security policy \u0026 best practices\n\n## Security\n\n⚠️ **Always enable authentication in production!**\n\n```bash\n# Generate secure client secret\nexport MCP_CLIENT_SECRET=$(openssl rand -hex 32)\n\n# Run with auth enabled\nAUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=$MCP_CLIENT_SECRET \\\n  openclaw-mcp --transport sse\n```\n\nConfigure CORS to restrict access:\n\n```bash\nCORS_ORIGINS=https://claude.ai,https://your-app.com\n```\n\nSee [Configuration](docs/configuration.md) for all security options.\n\n## Requirements\n\n- Node.js ≥ 20\n- OpenClaw gateway running with HTTP API enabled:\n  ```json5\n  // openclaw.json\n  { \"gateway\": { \"http\": { \"endpoints\": { \"chatCompletions\": { \"enabled\": true } } } } }\n  ```\n\n## License\n\nMIT\n\n## Author\n\nCreated by [Tomáš Grasl](https://www.tomasgrasl.cz/)\n\n## Related Projects\n\n- [OpenClaw](https://github.com/openclaw/openclaw) — The AI assistant this MCP connects to\n- [MCP Specification](https://spec.modelcontextprotocol.io/) — Model Context Protocol docs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreema%2Fopenclaw-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreema%2Fopenclaw-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreema%2Fopenclaw-mcp/lists"}