openclaw-mcp bridges OpenClaw's SKILL.md format to the Model Context Protocol (MCP), enabling OpenClaw skills to work with any MCP-compatible agent runtime.
Converts SKILL.md skill definitions into MCP-compatible tool definitions. Your OpenClaw skills instantly become available to:
- Claude (Claude Desktop, API)
- Cursor IDE
- Windsurf IDE
- Any MCP-supporting agent runtime
- Cross-Ecosystem Portability: Build once in OpenClaw, deploy everywhere MCP is supported
- No Code Changes: Your existing SKILL.md files work without modification
- Composable Skills: Combine OpenClaw skills with MCP tools from other sources
- Standardized Interoperability: MCP is the industry standard for AI tool integration
npm install -D @effectorhq/skill-mcpnpx @effectorhq/skill-mcp serve ./skills/The server listens on stdin/stdout (MCP standard) and exposes all SKILL.md files in ./skills/ as MCP tools.
Add to ~/.claude/desktop/config.json (macOS/Linux) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"openclaw": {
"command": "node",
"args": ["[path-to-node-modules]/@effectorhq/skill-mcp/bin/skill-mcp.js", "serve", "./skills"]
}
}
}Restart Claude Desktop. Your OpenClaw skills are now available as tools.
┌─────────────────────┐
│ SKILL.md Files │
│ (frontmatter + │
│ markdown body) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ skill-mcp Parser │
│ (YAML → JSON) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ MCP Converter │
│ (schema mapping) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ MCP Server (stdio) │
│ (JSON-RPC 2.0) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ MCP Clients │
│ • Claude │
│ • Cursor │
│ • Windsurf │
│ • etc. │
└─────────────────────┘
Start an MCP server hosting your skills:
skill-mcp serve <directory> [--port 3000]Convert a single SKILL.md to MCP JSON schema:
skill-mcp convert <path-to-skill.md> [--output output.json]Validate SKILL.md files for MCP compatibility:
skill-mcp validate <directory>skill-mcp --helpParses a SKILL.md file into a skill object.
import { parseSkill } from '@effectorhq/skill-mcp';
const skill = await parseSkill('./skills/my-skill.md');
console.log(skill.frontmatter.name);Converts a parsed skill to MCP tool schema.
import { convertToMCPTool, parseSkill } from '@effectorhq/skill-mcp';
const skill = await parseSkill('./skills/my-skill.md');
const mcpTool = convertToMCPTool(skill);
console.log(mcpTool);
// { name: '...', description: '...', inputSchema: { type: 'object', ... } }Creates and returns a JSON-RPC 2.0 MCP server.
import { createMCPServer } from '@effectorhq/skill-mcp';
const server = createMCPServer('./skills');
await server.start();bin/skill-mcp.js— CLI entry pointsrc/index.js— Main module exportssrc/parser.js— SKILL.md parser (YAML frontmatter)src/converter.js— SKILL.md → MCP tool convertersrc/server.js— JSON-RPC 2.0 MCP servertests/— Test suite (Node.js built-in test runner)docs/— Architecture and mapping documentation
npm test
npm run lint
npm run buildContributions welcome! See CONTRIBUTING.md.
MIT © 2026 effectorHQ Contributors