ecp/skillman
How it works
any mcp client

Use your Claude skills in Cursor, Codex, Copilot and beyond.

ecp-skillman publishes your Claude Code skills as a plugin marketplace in a GitHub repo you own, and serves those same skills over the Model Context Protocol (MCP). Any MCP-capable agent can use them: Cursor, OpenAI Codex, GitHub Copilot, Google Antigravity, OpenCode, Cline, Windsurf, Zed, and Claude's own web and desktop apps. You write a skill once and every agent you use picks it up.

two ways in

Pick a path

There are two ways to get your skills into a non-Claude-Code agent. They differ in transport, in what they read, and in how quickly your edits show up.

what differsecp-bridgeHosted MCP server
Transportstdio, spawned with npxHTTP (Streamable HTTP)
What it readsyour published marketplace repoyour live drafts, straight from the app
Updates arrivewhen you publishon every edit, no republish
Works with web-based clientsno, it needs a local processyes, it is just a URL
Setupone JSON block, no account neededone URL, generated in the app
Private or unpublished skillsno, the repo must be readableyes

Why the hosted server reaches clients the bridge cannot

A stdio MCP server is a program the client launches on your machine. That rules it out for any agent running in a browser tab or on someone else's infrastructure, because there is no local process for it to spawn. An HTTP MCP server is only a URL, so a web client can reach it the same way it reaches any other API. This is why we host one for you: for most browser-based agents it is the only way in. Claude is the exception, since it can also install your marketplace as a plugin directly.

setup

Connect in two minutes

Option A: ecp-bridge (local, reads your repo)

Runs the marketplace repo through a local MCP server. Good when your agent runs on your machine and your skills are already published.

  1. Publish your marketplace, so the repo exists and is readable.
  2. Add the block below to your MCP client's config file.
  3. Restart the client. Your skills appear as tools and prompts.
mcp config
{
  "mcpServers": {
    "ecp-bridge": {
      "command": "npx",
      "args": ["-y", "ecp-bridge", "your-github/skills"]
    }
  }
}

Replace your-github/skills with your own repo. One more argument is optional: add a comma-separated plugin list to serve only part of the marketplace, or leave it off to serve all of it.

Option B: hosted MCP server (live, works anywhere)

One private URL that serves your skills as you edit them. Usually the only option for clients that cannot run a local process.

  1. Sign in with GitHub and open the Publish page.
  2. Generate your private server URL.
  3. Paste it into your MCP client's config, as below.
mcp config
{
  "mcpServers": {
    "ecp-skillman": {
      "type": "http",
      "url": "https://ecp-skillman.itdo.at/api/mcp/EXAMPLEtoken8Kq2rN7vXwZ4mB6yH3pL"
    }
  }
}

Your URL contains a secret. Treat it like a password: do not commit it to a public repo or paste it into a shared config. You can rotate or revoke it at any time.

In Claude Code you can skip the file and run claude mcp add --transport http ecp-skillman "https://ecp-skillman.itdo.at/api/mcp/EXAMPLEtoken8Kq2rN7vXwZ4mB6yH3pL".

client by client

How do I connect my marketplace to a given agent?

The steps for each client, plus which transport it speaks and where it keeps its MCP config. Paths are accurate as of early 2026 and do move between releases, so each entry links to that client's own documentation as the authority.

First, once: get your server URL

Every recipe below starts from the same three steps.

  1. Sign in with GitHub. That creates your ecp-skillman account.
  2. Import the repository holding the skills you want, then organise them into a plugin.
  3. On the Publish page, generate your MCP server URL. It looks like https://ecp-skillman.itdo.at/api/mcp/EXAMPLEtoken8Kq2rN7vXwZ4mB6yH3pL, with your own token in place of that last segment.

That token is a password in a URL. Keep it out of public repos and shared configs, and rotate it if it leaks.

How do I connect my Claude plugin marketplace to Cursor?
  1. Open ~/.cursor/mcp.json, creating it if it does not exist.
  2. Paste either config block from above into it, keeping the outer mcpServers object.
  3. Save, then check the Output panel, MCP Logs, for connection errors.
Transport
Both. Runs locally, so stdio and HTTP both work.
Config
~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one project

Project-level config is the tidier choice when a skill set belongs to one repo. Omit the type field on the hosted entry: Cursor picks the transport from whether you give it url or command.

Cursor MCP docs →
How do I connect my Claude plugin marketplace to OpenAI Codex?
  1. Open ~/.codex/config.toml.
  2. Add an [mcp_servers.ecp-skillman] table with the same command or URL as the blocks above.
  3. Restart Codex and confirm the server is listed.
Transport
Both, on current releases. Older builds are stdio only.
Config
~/.codex/config.toml, under an [mcp_servers] table

Codex uses TOML rather than JSON, so translate the block above into a table entry instead of pasting it verbatim.

OpenAI Codex MCP docs →
How do I connect my Claude plugin marketplace to GitHub Copilot (VS Code)?
  1. Create .vscode/mcp.json in the workspace.
  2. Add the server entry, using the hosted URL or the npx command from above.
  3. Open Chat, switch to Agent mode, and confirm the tools appear.
Transport
Both. Agent mode is what consumes MCP servers.
Config
.vscode/mcp.json in the workspace, or your user settings.json

MCP servers are used by Copilot's agent mode; they are not read in plain chat mode.

GitHub Copilot (VS Code) MCP docs →
How do I connect my Claude plugin marketplace to Google Antigravity?
  1. Open Settings, then Customizations, then Installed MCP Servers, and click Add MCP. In the IDE it is the ... menu on the agent panel.
  2. For a custom server, edit mcp_config.json and add your entry under mcpServers.
  3. Hit Refresh, then check the status ring shows the server as active.
Transport
Both. Transport is inferred from the field you set, with no type key.
Config
~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json in a workspace

Antigravity will not take the hosted block unchanged. Remote servers must use serverUrl, because url and httpUrl are explicitly unsupported. Note the config lives under .gemini, not .antigravity.

Google Antigravity MCP docs →
How do I connect my Claude plugin marketplace to OpenCode?
  1. Open opencode.json in the project.
  2. Add the server under mcp, with type: "remote" and your URL, or type: "local" and the npx command.
  3. Run opencode mcp list to confirm it connected.
Transport
Both. Local servers and remote URLs are separate config shapes.
Config
opencode.json in the project, or ~/.config/opencode/opencode.json globally. Project wins.

OpenCode does not take the mcpServers block unchanged. Its key is mcp, command is one array holding the executable and its arguments, and environment variables go under environment.

OpenCode MCP docs →
How do I connect my Claude plugin marketplace to Claude web and desktop?
  1. Generate your hosted server URL on the Publish page.
  2. In Claude, open Settings, then Connectors, then Add custom connector. Paste the URL and save.
  3. In a chat, open the + menu and toggle the connector on.
Transport
HTTP only. There is no local process to spawn.
Config
no config file. Settings, then Connectors, then Add custom connector. The same list syncs across web, desktop and mobile.

Connectors are off per conversation by default, which is the usual reason a correctly added server seems to do nothing. On Team and Enterprise an owner has to add it for the organisation first. You can also install your marketplace directly as a plugin, which is the better route if you only use Claude.

Claude web and desktop MCP docs →
How do I connect my Claude plugin marketplace to any other MCP client?
  1. Find where the client keeps its MCP config, in a file or a settings panel.
  2. Add the hosted URL if it accepts a server URL, or the npx command if it can run a local process.
  3. Restart the client and confirm the skills are listed.
Transport
Whatever it supports. If it can run a local command, use ecp-bridge; if it takes a server URL, use the hosted server.
Config
Most clients accept the standard mcpServers shape and take the blocks above unchanged. A few use their own key names, so check the client's docs before assuming a straight paste works.

If a client handles parts of MCP poorly, two compatibility settings reshape what we send: one serves skills as resources instead of tools and prompts, the other folds every support file into a single payload for clients that cannot read resources at all. Client support for the first is limited, so most people should leave both off.

questions

Frequently asked

Do I need Claude Code to use ecp-skillman?

No. ecp-skillman publishes your skills to a GitHub repository you own, and serves them over MCP to any compatible agent. Claude Code can install the marketplace directly, but Cursor, Codex, Copilot, Antigravity and OpenCode all reach the same skills through MCP instead.

What is the difference between a Claude skill and an MCP tool?

A skill is a folder of Markdown instructions that tells an agent how to do something. An MCP tool is a callable endpoint an agent can invoke. ecp-skillman bridges the two: each skill is served as a tool the agent can call, as a prompt you can trigger, and its supporting files as MCP resources.

Does this work with web-based agents that cannot run local processes?

Yes, through the hosted MCP server, which is reachable as a plain HTTPS URL. The ecp-bridge option cannot do this because it is a stdio server that the client has to launch as a local process, and a browser-based agent has no way to do that.

Do my skills update automatically in other agents?

Yes, and the timing depends on the path. With ecp-bridge, agents pick up changes when you publish, because it reads your marketplace repo. With the hosted MCP server, every edit is live on the agent's next request, with no republish and no reinstall.

Who owns the skills and the marketplace repository?

You do. The marketplace is an ordinary GitHub repository under your own account, not something we host on your behalf. If you stop using ecp-skillman, the repo and every skill in it stay exactly where they are and keep working.

What if my MCP client does not support prompts or resources?

Two compatibility settings reshape what the server sends. One serves each skill as a resource instead of a tool and prompt, for clients that read resources but handle tools poorly. The other inlines every supporting file into one payload, so a client with no resource support still receives the whole skill.

Write it once. Use it everywhere.

the marketplace repo is yours, in your own account

new here? see how ecp-skillman works →