Skip to main content
Glama
amazingashis

skills-mcp-server

by amazingashis

skills-mcp-server

A small Model Context Protocol (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 SSEGET /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).

Related MCP server: Skillz

Quick start (local stdio)

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:

npx skills-mcp-server
# or: node dist/main.js

In Cursor MCP settings, use command-based config with MCP_TRANSPORT unset or stdio:

{
  "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.

Available Tools

3 tools
get_skillA

Load the full SKILL.md contents for a skill id.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_idYesSkill id as returned by list_skills

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'Load the full SKILL.md contents' with no details on side effects, authentication needs, or what 'full contents' entails (e.g., format, size limits).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no wasted words. Perfectly concise for the information it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 param, no nested objects), the description is adequate but lacks guidance on return format or constraints, which would be helpful since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description adds no extra meaning beyond the schema's existing explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Load the full SKILL.md contents') and the resource ('for a skill id'), distinguishing it from sibling tools like list_skills and search_skills.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing the full contents of a specific skill, but no explicit guidance on when to use versus alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_skillsA

Return a manifest of available skills (id, title, description teaser). No filesystem paths are exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that no filesystem paths are exposed, implying safety. However, it does not mention auth requirements, rate limits, or other behavioral aspects. For a simple read operation, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, and adds a concise safety note. Every word earns its place with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's extreme simplicity (no params, no output schema), the description adequately explains the return fields and a key behavioral trait. It provides sufficient context for an agent to invoke correctly, despite not contrasting with siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. According to guidelines, zero parameters yield a baseline of 4. The description adds no parameter info as there are none, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns a manifest of available skills with specific fields (id, title, description teaser). It uses a specific verb 'Return' and resource 'manifest of available skills', and implicitly distinguishes from siblings like get_skill (single) and search_skills (filtered).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives (get_skill, search_skills). The context implies it is for listing all skills, but no guidance on when to choose it over the others is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_skillsA

Filter skills by free-text query over id, title, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCase-insensitive substring match

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only describes the operation as filtering without mentioning safety (read-only), pagination, error handling, or what happens with no matches. Insufficient for a tool lacking annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 9 words, front-loaded with verb and resource, no redundant information. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has only one parameter and no output schema. While the description covers input, it fails to explain return values (e.g., what fields are returned, pagination). For a straightforward search, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'query' described as 'Case-insensitive substring match.' The description adds value by specifying which fields (id, title, description) are searched, going beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Filter skills by free-text query over id, title, and description.' It specifies the verb (filter), resource (skills), and scope (fields searched), distinguishing from sibling tools get_skill and list_skills.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit comparison to siblings or guidance on when to use vs alternatives. However, the context signals indicate siblings exist, and the purpose implies it's for searching, not retrieving a single skill or listing all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.0.0
    • First observedget_skill
    • First observedlist_skills
    • First observedsearch_skills

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

Related MCP Connectors

Related MCP Servers

  • 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
    27
    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.
    162 PyPI
    401
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that serves agent skills (SKILL.md bundles) to any MCP client, exposing them via tools and resources for tool-oriented and resource-aware clients.
    3
    13 npm
    ISC