skill-mcp

skill-mcp

An MCP server that serves company documentation from a Markdown folder, exposing read-only search and fetch tools for agents to discover and retrieve authoritative documents.

Category
访问服务器

README

skill-mcp

Serve company documentation through one read-only MCP server. Point the server at any compatible Markdown folder and agents get two portable tools: search(query) to discover relevant information and fetch(id) to retrieve an authoritative document with its canonical URL and metadata.

The content model is deliberately broader than Agent Skills. It works for internal-library guidance, data-source instructions, engineering standards, runbooks, architecture notes, and any other bounded company context.

Run the example catalog

Requires Python 3.14 or newer and uv.

git clone https://github.com/jacobragsdale/skill-mcp.git
cd skill-mcp
uv sync --locked
SKILL_MCP_CONTENT_ROOT=/absolute/path/to/skill-mcp/examples/context uv run skill-mcp

Connect an MCP client to http://127.0.0.1:8000/mcp. The readiness endpoint validates the live catalog and reports its document count:

curl http://127.0.0.1:8000/health

FastAPI's OpenAPI UI is available at http://127.0.0.1:8000/docs.

To keep the path in a local file, copy .env.example, set its required value, and load it explicitly:

cp .env.example .env
uv run --env-file .env skill-mcp

The root is selected once at startup. Restart with a different SKILL_MCP_CONTENT_ROOT to serve another compatible folder. Documents inside the selected folder are validated and reread on every tool call, so edits go live without rebuilding or restarting the server.

Add information to search and fetch

Create a UTF-8 Markdown file anywhere below the configured content root. Keep one file focused on one fetchable topic and begin it with this strict YAML frontmatter:

---
id: data/customer-orders
title: Customer order data source
url: https://docs.example.com/data/customer-orders
summary: Find governed customer order data and choose the supported table.
metadata:
  owner: Data Platform
  authority: example
  updated: "2026-08-04"
---

# Customer order data

The supported source is ...

Then validate the entire root:

uv run skill-mcp-validate /absolute/path/to/company-context

Repository contributors can invoke the repo-scoped $add-company-context skill for the complete authoring and retrieval-regression workflow. Do not hardcode topic-specific branches in search or fetch; adding a valid document makes it available to both tools automatically.

Content contract

The configured root is scanned recursively for non-hidden *.md files. Every discovered file must satisfy the contract; one invalid document fails the catalog rather than silently serving partial company guidance.

Field Requirement
id Required stable lowercase identifier using path segments and hyphens, such as engineering/python-settings. It must be unique across the root.
title Required human-readable title, 1–200 characters.
url Required absolute HTTP or HTTPS canonical source URL.
summary Required search-oriented summary, 1–500 characters.
metadata Optional string-to-string provenance fields such as owner, authority, version, and updated. Quote YAML values that would otherwise become dates or numbers.
body Required non-empty Markdown. A document may contain at most 60,000 characters so a fetch stays bounded.

Keep identifiers stable when moving files: callers fetch by frontmatter id, not by filesystem path. Hidden directories, hidden files, and common cache directories are ignored. Symlinks that escape the configured root, duplicate identifiers, malformed YAML, unknown frontmatter fields, non-UTF-8 text, and empty bodies are rejected.

MCP reference

The server intentionally exposes tools only. That is the common denominator across coding agents; clients do not need MCP resource or prompt support.

Tool Input Structured result
search query: string (1–500 characters) {results: [{id, title, url}]} with at most 10 BM25-ranked matches.
fetch id: string from search {id, title, text, url, metadata} for one exact document.

Both tools are declared read-only, non-destructive, idempotent, and closed-world. Search is deterministic keyword retrieval over identifiers, titles, summaries, metadata, and Markdown bodies. Titles and summaries receive extra weight; an exact phrase in either receives a further boost. A query with no matching terms returns an empty results array.

The server instructions tell agents to search whenever company-specific context could help, fetch before relying on a result, preserve canonical URLs as provenance, and avoid inventing internal facts when the catalog has no answer.

Production boundary

The included process binds only to 127.0.0.1:8000 and has no built-in authentication or browser CORS policy. For company deployment, put it behind your existing identity-aware gateway or reverse proxy, terminate TLS there, and record per-tool latency, result count, fetched document id, caller, and errors there or in structured application logs. Do not log full queries or document bodies unless your privacy policy explicitly permits it.

Authentication controls who can reach a server; it is not document-level authorization. Run separate catalogs or add an authorization-aware storage adapter before mixing content with different audiences. The server is read-only and never executes, edits, or installs any served content.

Develop

uv sync --locked
uv run pytest
uv run pre-commit run --all-files
uv build --no-sources

Retrieval examples live in examples/context/, and human-readable evaluation queries live in evals/retrieval.json. The test suite checks every evaluation, strict content rejection, live root swapping, the official in-memory MCP client contract, tool annotations and schemas, and the FastAPI lifespan and health route. CI runs the suite and all repository checks on Python 3.14.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选