mcpField
C
creating-mcp-servers

creating-mcp-servers

github.com/oaustegard开发15744 次安装1 天前更新
代码仓库

关于 creating-mcp-servers

用于使用 FastMCP v2 构建 MCP 服务的开发技能,面向实现服务器的开发者。它涵盖工具描述优化、渐进式披露和 MCPB 打包,并提供网关模式参考。

主要功能

  1. 01FastMCP v2 实现指导
  2. 02渐进式披露与网关模式
  3. 03工具描述及注解优化
  4. 04通过 LLMS_TXT.md 检索文档
  5. 05打包并验证 MCPB 文件

适用场景

  1. 01为多个相关能力设计网关模式
  2. 02减少工具描述与上下文占用
  3. 03按 FastMCP 文档实现服务器
  4. 04将 MCP 服务打包为 MCPB 文件

MCP 相关

该技能指导开发者使用 FastMCP v2 构建 MCP 服务,并介绍工具设计、网关模式与 MCPB 打包。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oaustegard/claude-skills --skill creating-mcp-servers

安装后在 Claude Code 中输入/creating-mcp-servers确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
README.md
references/
GATEWAY_PATTERNS.md
LLMS_TXT.md
MANDATORY_PATTERNS.md
MCPB_BUNDLING.md
PROGRESSIVE_DISCLOSURE.md
scripts/
create_mcpb.py

详细介绍

创建 MCP 服务

使用 FastMCP v2 构建可用于生产环境的 MCP 服务,通过渐进式披露模式实现最佳上下文效率。

核心能力

  1. 应用核心模式 - 确保一致性的四项要求
  2. 实现渐进式披露 - 通过网关模式将令牌用量减少 85-93%
  3. 优化工具描述 - 通过恰当的模式将令牌用量减少 65-70%
  4. 打包服务 - 将其打包为 MCPB 文件并进行验证
  5. 经过验证的网关模式 - 三种完整实现(技能、API、查询)

架构决策

1-3 simple tools?
  → Standard FastMCP with optimized tools
  Load: references/MANDATORY_PATTERNS.md

5+ related capabilities?
  → Gateway pattern (progressive disclosure)
  Load: references/PROGRESSIVE_DISCLOSURE.md
  Load: references/GATEWAY_PATTERNS.md

Optimize existing server?
  → Apply mandatory patterns
  Load: references/MANDATORY_PATTERNS.md

Package for distribution?
  → MCPB bundler
  Load: references/MCPB_BUNDLING.md
  Execute: scripts/create_mcpb.py

Need FastMCP documentation?
  → Search references/LLMS_TXT.md for relevant URLs
  → Use web_fetch on gofastmcp.com URLs

强制模式(摘要)

每种实现都应满足以下四项要求:

  1. uv(绝不使用 pip) - uv pip install fastmcp
  2. 优化工具描述 - 注释、Annotated、简洁的文档字符串
  3. 权威文档 - 通过 LLMS_TXT.md 索引从 gofastmcp.com 获取
  4. 应用所有模式 - 每种实现都满足验证清单

详情请参阅 references/MANDATORY_PATTERNS.md

文档检索工作流

获取 FastMCP 文档:

1. Read references/LLMS_TXT.md - complete URL index
2. Search for relevant topic keywords
3. Use web_fetch on matched URLs (append .md for markdown)
4. Apply patterns from fetched documentation

**示例:**身份验证模式 → 在 LLMS_TXT.md 中搜索“authentication” → web_fetch https://gofastmcp.com/servers/auth/authentication.md

渐进式披露模式

适用于具备 5 项或更多能力的服务:

三级加载:

  1. 元数据(每项能力约 20 个令牌)- 始终加载
  2. 内容(约 500 个令牌)- 按需加载
  3. 执行(0 个令牌)- 无需加载即可执行

可将基线用量减少 85-93%。请参阅 references/PROGRESSIVE_DISCLOSURE.md

实现阶段

阶段 1:调研

读取 LLMS_TXT.md → 查找相关 URL → web_fetch 文档

阶段 2:实现

根据架构决策加载适用的参考资料。应用所有四种模式。

阶段 3:打包(可选)
cd /home/claude
zip -r server-name.mcpb manifest.json server.py README.md
cp server-name.mcpb /mnt/user-data/outputs/

清单格式请参阅 references/MCPB_BUNDLING.md。

参考资料库

文档索引(首先加载以了解 FastMCP):

核心模式:

实现:

脚本:

  • scripts/create_mcpb.py - 将 MCP 服务打包为 .mcpb 文件

验证清单

完成任何 FastMCP 实现之前:

✓ Uses uv (not pip)
✓ FastMCP docs fetched from LLMS_TXT.md URLs (not web_search)
✓ Tool annotations (readOnlyHint, title, openWorldHint)
✓ Annotated parameters with Field
✓ Single-sentence docstrings
✓ 65-70% token reduction vs verbose
✓ Server instructions concise (<100 chars)

对于网关实现,还需验证:

✓ 85%+ baseline context reduction
✓ Discover returns metadata only
✓ Load fetches content on demand
✓ Execute runs without context cost

工具描述模式

之前(180 个令牌):

@mcp.tool()
async def search_items(query: str):
    """Search for items in the database.
    This tool allows comprehensive searching..."""

之后(55 个令牌):

@mcp.tool(
    annotations={"title": "Search", "readOnlyHint": True, "openWorldHint": False}
)
async def search_items(
    query: Annotated[str, Field(description="Search text")],
    ctx: Context = None
):
    """Search items. Fast full-text search across all fields."""

常见陷阱

❌ 使用 mcpb pack CLI(会导致崩溃,直接使用 zip)
❌ 使用 pip 而非 uv
❌ 使用 web_search 搜索 FastMCP 文档(应对 LLMS_TXT.md 中的 URL 使用 web_fetch)
❌ 工具描述冗长
❌ 缺少工具注释
❌ 仅有 1-3 个工具时使用网关(开销超过收益)
❌ 在单个网关中混合无关能力

评论

支持 Markdown