内容
# 🧩 FastMCP 提示示例
[](https://x.com/mcoding_off)
[](https://wa.me/212608105946)
[](LICENSE)
[](https://www.python.org/)
[](https://gofastmcp.com/)
[](https://modelcontextprotocol.io/)
[](https://docs.astral.sh/uv/)
一个小型、专注的教程,展示如何使用 [FastMCP](https://gofastmcp.com/) 构建 **MCP 提示** —— 可重用、参数化的消息模板,任何 MCP 客户端(Claude Desktop、IDE、自定义代理)都可以发现和渲染。
> 📚 完美地作为进入 [模型上下文协议](https://modelcontextprotocol.io/) 的第一步,然后再深入了解工具和资源。
---
## 📖 什么是 MCP 提示?
虽然 MCP **工具** 让模型 *执行* 操作,而 **资源** 让模型 *读取* 内容,但 **提示** 是用户控制的模板:客户端列出它们,填充参数,并将渲染的消息注入对话中。可以将其视为 *LLM 的斜杠命令*。
## ✨ 本示例涵盖的内容
[main.py](main.py) 演示了最常用的三种模式,从最简单到最强大:
| # | 提示 | 模式 | 演示的概念 |
|---|--------|---------|----------------------|
| 1 | `research_prompt` | 返回纯 `str` | 最简单形式 — 自动包装在一个 `user` 消息中 |
| 2 | `summarize_prompt` | 可选 + 约束参数 | `Literal` 类型和默认值成为客户端可见的参数模式 |
| 3 | `code_review_prompt` | 返回 `list[Message]` | 种子一个完整的、多轮的对话(用户 + 助手消息) |
在此过程中,您还将看到:命名、描述、`tags` 和服务器 `instructions`。
## 🚀 快速开始
**先决条件:** [Python 3.12+](https://www.python.org/downloads/) 和 [uv](https://docs.astral.sh/uv/getting-started/installation/)。
```bash
# 1. 克隆并进入项目
git clone https://github.com/mohamedelamraoui1/fastMCP-2-0-example.git
cd fastMCP-2-0-example
# 2. 安装依赖项
uv sync
# 3. 运行服务器(stdio 传输)
uv run main.py
```
如果一切设置正确,您将看到 FastMCP 横幅和服务器在 stdio 上等待客户端:

## 🔍 使用 MCP Inspector 进行测试
探索提示的最快方法是使用 **MCP Inspector** —— 一个用于探测任何 MCP 服务器的 Web 界面。它需要 [Node.js](https://nodejs.org/) (Inspector 是一个 npm 包,FastMCP 为您启动)。
**步骤 1 — 启动 Inspector:**
```bash
uv run fastmcp dev inspector main.py
```
您将看到类似的输出,浏览器将自动打开:
```
🚀 MCP Inspector 已启动并正在运行,位于:
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<session-token>
⚙️ 代理服务器正在 localhost:6277 上监听
```
> 如果浏览器未打开,请从终端复制完整的 URL(包括令牌)。
**步骤 2 — 连接到服务器。** 连接表单已预先填充(传输 `STDIO`,命令 `fastmcp run main.py`)。只需点击 **连接** —— 当握手成功时,指示器变为绿色。
**步骤 3 — 列出提示。** 打开 **提示** 选项卡并点击 **列出提示**。您应该看到所有三个:`research_prompt`、`summarize_prompt` 和 `code_review_prompt`,每个都有其描述。
**步骤 4 — 渲染提示。** 点击提示,在表单中填写参数(例如 `topic = "quantum computing"` for `research_prompt`),然后点击 **获取提示**。右侧面板显示服务器返回的确切消息。
**步骤 5 — 查看有趣的案例:**
- 在 `summarize_prompt` 上,注意 `length` 和 `tone` 字段仅接受来自类型提示的 `Literal` 值 —— 这是参数模式的作用。
- 在 `code_review_prompt` 上,粘贴任何代码段作为 `code`,并注意结果是 **三个消息** (`user` → `assistant` → `user`),而不是一个 —— 一个预先播种的对话。
当您完成后,使用终端中的 `Ctrl+C` 停止 Inspector。
## 🖥️ 从 Claude Desktop 使用
将服务器添加到您的 Claude Desktop 配置中(`claude_desktop_config.json`):
```json
{
"mcpServers": {
"prompt-examples": {
"command": "uv",
"args": ["run", "--directory", "C:/absolute/path/to/fastMCP-2-0-example", "main.py"]
}
}
}
```
重新启动 Claude Desktop,然后在 **+** (附件)菜单中查找提示。
> 💡 **不需要 API 密钥。** Claude Desktop 使用您的 Claude 帐户,此 MCP 服务器仅提供提示 *模板* —— 它本身从不调用 LLM。如果您编写自己的客户端将渲染的提示发送到 API,则只需要 Anthropic API 密钥。
## 🗂️ 项目结构
```
.
├── main.py # MCP 服务器 — 3 种提示模式,完全注释
├── assets/ # 本 README 中使用的截图
├── pyproject.toml # 项目元数据和依赖项
├── uv.lock # 锁定依赖项版本
└── README.md
```
## 📚 了解更多
- [FastMCP 文档](https://gofastmcp.com/) —— 这里使用的框架
- [FastMCP:提示指南](https://gofastmcp.com/servers/prompts) —— 深入提示 API
- [模型上下文协议](https://modelcontextprotocol.io/) —— 开放协议规范
- [MCP:提示概念](https://modelcontextprotocol.io/docs/concepts/prompts) —— 客户端如何使用提示
## 🛠️ 技术栈
| 技术 | 角色 |
|------------|------|
| [Python 3.12+](https://www.python.org/) | 语言 |
| [FastMCP 3.x](https://gofastmcp.com/) | MCP 服务器框架 |
| [uv](https://docs.astral.sh/uv/) | 依赖项和环境管理 |
## 📄 许可证
该项目在 MIT 许可证下许可 — 有关详细信息,请参见 [LICENSE](LICENSE) 文件。
---
由 [@mcoding_off](https://x.com/mcoding_off) 为 MCP 社区精心打造。