Skip to main content
Glama

πŸ“¦ Consolidated. This package is now part of effectorHQ/effector β†’ packages/serve/src/mcp/. All active development continues in the monorepo. This repository remains available for reference.

Run: effector serve . via the unified CLI.


openclaw-mcp

npm version Status: Beta CI Node.js Version

PRs Welcome

δΈ­ζ–‡ζ–‡ζ‘£

Overview

openclaw-mcp bridges the effector SKILL.md format to the Model Context Protocol (MCP), enabling effector skills to work with any MCP-compatible agent runtime.

What It Does

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

Why It Matters

  • 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

Related MCP server: Skill-to-MCP

Install

npm install @effectorhq/skill-mcp

You can also use the CLI directly without installing globally:

npx @effectorhq/skill-mcp ./skills
npx @effectorhq/skill-mcp --stdio

See the published package on npm: https://www.npmjs.com/package/@effectorhq/skill-mcp

Quick Start

Start MCP Server

npx @effectorhq/skill-mcp serve ./skills/

The server listens on stdin/stdout (MCP standard) and exposes all SKILL.md files in ./skills/ as MCP tools.

In Claude Desktop

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.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   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.             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

CLI Usage

Serve

Start an MCP server hosting your skills:

skill-mcp serve <directory> [--port 3000]

Convert

Convert a single SKILL.md to MCP JSON schema:

skill-mcp convert <path-to-skill.md> [--output output.json]

Validate

Validate SKILL.md files for MCP compatibility:

skill-mcp validate <directory>

Help

skill-mcp --help

Programmatic API

parseSkill(filePath)

Parses 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);

convertToMCPTool(skill)

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', ... } }

createMCPServer(skillsDirectory)

Creates and returns a JSON-RPC 2.0 MCP server.

import { createMCPServer } from '@effectorhq/skill-mcp';

const server = createMCPServer('./skills');
await server.start();

File Structure

  • bin/skill-mcp.js β€” CLI entry point

  • src/index.js β€” Main module exports

  • src/parser.js β€” SKILL.md parser (YAML frontmatter)

  • src/converter.js β€” SKILL.md β†’ MCP tool converter

  • src/server.js β€” JSON-RPC 2.0 MCP server

  • tests/ β€” Test suite (Node.js built-in test runner)

  • docs/ β€” Architecture and mapping documentation

Development

npm test
npm run lint
npm run build

Contributing

Contributions welcome! See CONTRIBUTING.md.

License

This project is currently licensed under the Apache License, Version 2.0 。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Transform any AI agent into a domain expert by giving it access to modular, reusable skills through the Model Context Protocol. Brings Claude's Skills format to any MCP-compatible agent, allowing you to create skills once and use them everywhere.
    45 npm
    30
    -
  • A
    license
    A
    quality
    C
    maintenance
    Converts AI Skills (following Claude Skills format) into MCP server resources, enabling LLM applications to discover, access, and utilize self-contained skill directories through the Model Context Protocol. Provides tools to list available skills, retrieve skill details and content, and read supporting files with security protections.
    3
    29
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Turns Claude-style skills (SKILL.md files with resources) into callable MCP tools for any agent. Discovers skills from a directory, exposes their instructions and resources, and can execute bundled helper scripts.
    401
    MIT