skills-mcp-server
skills-mcp-server
BM25ランク付け検索、構造化メタデータ、およびコンテキスト効率の高いレスポンスを通じて、1300以上のAIスキルのカタログを公開する高性能MCP(Model Context Protocol)サーバーです。
「数千ものスキルがコンテキストウィンドウを圧迫する」という問題を解決するために構築されました。このサーバーはそれらをインデックス化し、ランク付けし、必要なものだけを提供します。
┌────────────────────────────────────────────────────────────┐
│ IDE / AI Client │
│ (Claude, Cursor, Gemini, Copilot, Windsurf, ...) │
│ │
│ "find me a skill for React dashboards" │
└──────────────────────┬─────────────────────────────────────┘
│ MCP Protocol
▼
┌────────────────────────────────────────────────────────────┐
│ skills-mcp-server │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Indexer │ │ BM25 │ │ 6 MCP │ │
│ │ 1300+ │──│ Search │──│ Tools │ │
│ │ skills │ │ Engine │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ Transports: stdio | HTTP/SSE | AWS Lambda │
└────────────────────────────────────────────────────────────┘特徴
BM25ランク付け検索 — 単なるキーワード一致ではありません。フィールドの重み付け(名前3倍、説明2倍、タグ2倍、本文1倍)による真の関連性スコアリングを行います。
コンテキスト効率 — スキルのメタデータ(約500文字)、要約(約2K文字)、または全文(最大25K文字に制限)を読み取れます。コンテキストの消費量を制御可能です。
構造化メタデータ — YAMLフロントマターを型付きフィールド(名前、説明、タグ、カテゴリ、リスク、作成者、ツール)に解析します。
ページネーション対応 — すべてのリスト/検索ツールが
offsetとlimitをサポートしています。3つのトランスポートモード — ローカルIDE用のstdio、リモートアクセス用のHTTP/SSE、サーバーレス用のAWS Lambdaに対応しています。
高速起動 — 1300以上のスキルを約1.5秒でインデックス化。メモリ使用量は約3MB(生の65MBと比較)です。
6つの専用ツール — ブラウズ、リスト、検索、読み取り、検査、更新
クイックスタート
前提条件
Node.js 18以上
SKILL.mdファイルを含むskills/ディレクトリ(スキルフォーマットを参照)
インストールとビルド
git clone https://github.com/LucasRomanzin/skills-mcp-server.git
cd skills-mcp-server
npm install
npm run buildローカル実行 (stdio)
node dist/index.jsHTTPサーバーとして実行 (SSE)
node dist/http.js
# Server starts on http://localhost:3000
# MCP endpoint: http://localhost:3000/mcp
# Health check: http://localhost:3000/healthMCPツール
skills_browse_categories
スキルカテゴリを件数付きで一覧表示します。最初にこれを使用してください。
Input: { response_format?: "markdown" | "json" }
Output: Table with 9 categories and skill countsskills_search
名前、説明、タグ、コンテンツ全体に対するBM25ランク付け全文検索を行います。
Input: { query: string, category?: string, risk?: string, offset?: 0, limit?: 10 }
Output: Ranked results with name, description, category, tags, scoreskills_list_by_category
特定のカテゴリ内のスキルをページネーション付きで一覧表示します。
Input: { category: string, offset?: 0, limit?: 20 }
Output: Paginated skill list with metadataskills_read
コンテキスト制御を行いながらスキルコンテンツを読み取ります。
Input: { slug: string, section?: "metadata" | "summary" | "full", file?: string }
section="metadata" → ~500 chars (frontmatter fields + file list)
section="summary" → ~2500 chars (metadata + first 2000 chars of body)
section="full" → up to 25000 chars (complete content, truncated if larger)skills_inspect
複数のスキルの構造化メタデータと、タグの重複による関連スキルを取得します。
Input: { slugs: string[] (1-10), response_format?: "json" }
Output: Metadata + related_skills for each slugskills_refresh_index
ディスク上のスキルを追加/削除/変更した後に、メモリ内のインデックスを再構築します。
Input: {}
Output: Previous count, new count, durationIDE設定
Claude Desktop / Claude Code
{
"mcpServers": {
"skills": {
"command": "node",
"args": ["/path/to/skills-mcp-server/dist/index.js"],
"env": {
"SKILLS_DIR": "/path/to/skills-mcp-server/skills"
}
}
}
}リモート (HTTP/SSE) — Cursor, VS Code, その他のMCPクライアント
{
"mcpServers": {
"skills": {
"url": "http://localhost:3000/mcp"
}
}
}AWS Lambda (デプロイ後)
{
"mcpServers": {
"skills": {
"url": "https://<function-url-id>.lambda-url.<region>.on.aws/mcp"
}
}
}すべてのモードとIDEの完全なステップバイステップのセットアップガイドについては、docs/SETUP.md を参照してください。
デプロイモード
モード | コマンド | ユースケース | SSEストリーミング |
stdio |
| ローカルIDE (Claude, Cursor, Gemini CLI) | N/A |
HTTP |
| 開発サーバー, EC2, VPS, Docker | はい |
Lambda | SAM deploy | サーバーレス, 自動スケーリング, 従量課金 | はい (レスポンスストリーミング) |
スキルフォーマット
各スキルは skills/ 配下のディレクトリであり、最低限YAMLフロントマターを含む SKILL.md ファイルが必要です:
skills/
├── CATALOG.md # Category-to-skill mapping (auto-generated)
├── my-skill/
│ ├── SKILL.md # Required: frontmatter + content
│ ├── references/ # Optional: additional .md files
│ └── scripts/ # Optional: helper scriptsSKILL.md 構造
---
name: my-skill
description: What this skill does in one sentence.
tags:
- react
- dashboard
- frontend
risk: safe
source: community
author: your-name
tools:
- claude-code
- cursor
---
# My Skill
## Overview
...
## When to Use This Skill
...フロントマターフィールド
フィールド | 型 | 必須 | 説明 |
| string | はい | スキル識別子 |
| string | はい | 1行の説明 |
| string[] | いいえ | 検索可能なキーワード |
| enum | いいえ |
|
| string | いいえ | 起源 ( |
| string | いいえ | 作成者名 |
| string[] | いいえ | 互換性のあるAIツール |
アーキテクチャ
src/
├── index.ts # stdio entry point
├── http.ts # Express HTTP/SSE entry point
├── lambda.ts # AWS Lambda handler
├── server.ts # McpServer factory (shared)
├── constants.ts # CHARACTER_LIMIT, pagination defaults
├── types.ts # TypeScript interfaces
├── indexer.ts # Frontmatter parser + skill index builder
├── catalog.ts # CATALOG.md parser → category mapping
├── search.ts # BM25 scoring engine
├── tools/
│ ├── browse.ts # skills_browse_categories
│ ├── list.ts # skills_list_by_category
│ ├── search.ts # skills_search
│ ├── read.ts # skills_read
│ ├── inspect.ts # skills_inspect
│ └── refresh.ts # skills_refresh_index
└── utils/
├── frontmatter.ts # gray-matter wrapper + tag normalization
├── format.ts # Markdown/JSON response formatters
├── truncate.ts # CHARACTER_LIMIT enforcement
└── paginate.ts # Generic pagination検索エンジン
BM25実装は、各スキルを重み付けされたドキュメントとしてインデックス化します:
フィールド | 重み | 例 |
| 3x | "react-patterns" を3回繰り返す |
| 2x | "Modern React patterns..." を2回繰り返す |
| 2x | "react frontend hooks" を2回繰り返す |
| 1x | "development" |
| 1x | 本文の最初の500文字 |
スコアリングには k1=1.5, b=0.75 のBM25を使用します。結果は関連性スコアの降順でソートされます。
パフォーマンス: 1300以上のスキルに対する検索は10ms未満で完了します。
環境変数
変数 | デフォルト | 説明 |
|
| スキルディレクトリへのパス |
|
| HTTPサーバーポート (http.tsのみ) |
技術スタック
TypeScript — 厳格モード, ESM
MCP SDK v1.29+ —
StreamableHTTPServerTransport,WebStandardStreamableHTTPServerTransportgray-matter — YAMLフロントマター解析
Zod — 入力バリデーションスキーマ
BM25 — カスタム実装(約80行)、外部依存関係なし
ライセンス
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LucasRomanzin/skills-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server