skills-mcp-server
by amazingashis
README.md
# skills-mcp-server
A small [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that exposes **Cursor-style skill packs** (`SKILL.md` trees) to any MCP client. It uses the official TypeScript SDK and supports:
- **stdio** — local subprocess mode (typical for Cursor / Claude Desktop spawning a command).
- **Streamable HTTP** — remote mode on **`POST /mcp`** (stateless), MCP **2025-03-26+**.
- **Legacy SSE** — **`GET /sse`** + **`POST /messages?sessionId=...`** for clients (including many Cursor remote setups) that expect the older HTTP+SSE transport.
This package is **client-agnostic**: anything that speaks MCP can use it.
## Features (MCP surfaces)
| Surface | Purpose |
|--------|---------|
| **Resources** | `skills://skill/{skillId}` — discover via template listing; bodies are Markdown. |
| **Tools** | `list_skills`, `get_skill`, `search_skills` |
| **Prompts** | `skill_context` — wraps a skill in a user message |
Skill ids are the POSIX path from `SKILLS_ROOT` to the folder containing `SKILL.md` (root-level file uses id `_root`).
## Quick start (local stdio)
```bash
npm install
npm run build
```
Default **`skills/`** includes packs copied from **`.cursor/skills`** in this repo. Add more folders with `SKILL.md` as needed. Run:
```bash
npx skills-mcp-server
# or: node dist/main.js
```
In **Cursor** MCP settings, use command-based config with `MCP_TRANSPORT` unset or `stdio`:
```json
{
"mcpServers": {
"skills": {
"command": "node",
"args": ["C:/absolute/path/to/skills-mcp-server/dist/main.js"],
"env": {
"SKILLS_ROOT": "C:/absolute/path/to/your/skills"
}
}
}
}
```
## Remote (hosted — Cursor without local stdio)
Use **`HOSTING_AND_CURSOR.md`** for free-tier hosts (Render, Railway, Fly, Koyeb, etc.), env vars, and **Cursor `mcp.json` with `url` + `headers`**.
Endpoints (same host, HTTPS):
- **Streamable HTTP:** `https://your-host/mcp`
- **Legacy SSE (often best for Cursor remote):** `https://your-host/sse` (messages go to `/messages`)
Health: **`GET https://your-host/health`**. Env reference: **`env.example`**.
## Claude / other clients
Any MCP client that supports **stdio** or **Streamable HTTP** can attach the same server. Configure the vendor’s “remote MCP” or “HTTP MCP” entry with your HTTPS URL and bearer token if enabled.
## Documentation
- **`HOSTING_AND_CURSOR.md`** — free hosting, env vars, Cursor remote MCP (`url` / SSE vs streamable).
- **`DEPLOYMENT.md`** — Docker, Compose, reverse proxy, operational checklist.
## License
MIT.
TDQS
A4.1/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: retrieving full skill content by ID, listing all skills, and searching skills by query. No overlap or ambiguity.
Naming Consistency5/5
All tool names follow the verb_noun pattern (get_skill, list_skills, search_skills), making them predictable and easy to understand.
Tool Count5/5
Three tools is well-scoped for a skills server: listing, searching, and retrieving full details. No unnecessary extras or missing essentials.
Completeness5/5
The tool set covers the expected read-only operations for a skills repository: listing all, searching, and getting full content. No apparent gaps for its purpose.
Maintenance
ActivityInactive
ResponsivenessNo issues