[ PROMPT_NODE_24774 ]
skills
[ SKILL_DOCUMENTATION ]
# 技能提供程序 (Skills Provider)
> 将智能体技能作为 MCP 资源公开
智能体技能是包含指令和支持文件的目录,用于教导 AI 助手如何执行特定任务。Claude Code、Cursor 和 VS Code Copilot 等工具都有各自的技能目录,用户可以在其中添加自定义功能。技能提供程序将这些技能目录公开为 MCP 资源,使得技能可以在不同的 AI 工具和客户端之间被发现和共享。
## 为什么将技能作为资源?
技能存在于特定平台的目录中(如 `~/.claude/skills/`、`~/.cursor/skills/` 等),通常包含一个主要指令文件和支持参考资料。当你想要在不同工具之间共享技能或从自定义客户端访问它们时,你需要一种以编程方式发现和检索这些文件的方法。
技能提供程序通过将每个技能公开为一组 MCP 资源来解决此问题。客户端可以列出可用技能、读取主要指令文件、检查清单以查看存在哪些支持文件,并获取所需的任何文件。这会将本地技能目录转换为适用于任何 MCP 客户端的标准化 API。
## 快速入门
创建一个指向你的技能目录的提供程序,然后将其添加到你的服务器中。
python
from pathlib import Path
from fastmcp import FastMCP
from fastmcp.server.providers.skills import SkillsDirectoryProvider
mcp = FastMCP("Skills Server")
mcp.add_provider(SkillsDirectoryProvider(roots=Path.home() / ".claude" / "skills"))
每个包含 `SKILL.md` 文件的子目录都会成为一个可发现的技能。客户端随后可以列出资源以查看可用技能,并根据需要读取它们。
python
from fastmcp import Client
async with Client(mcp) as client:
# 列出所有技能资源
resources = await client.list_resources()
for r in resources:
print(r.uri) # skill://my-skill/SKILL.md, skill://my-skill/_manifest, ...
# 读取技能的主要指令文件
result = await client.read_resource("skill://my-skill/SKILL.md")
print(result[0].text)
## 技能结构
技能是一个包含主要指令文件(默认为 `SKILL.md`)和可选支持文件的目录。目录名称将成为技能的标识符。
~/.claude/skills/
├── pdf-processing/
│ ├── SKILL.md # 主要指令
│ ├── reference.md # 支持文档
│ └── examples/
│ └── sample.pdf
└── code-review/
└── SKILL.md
主文件可以...