如果你听说过模型上下文协议(MCP)但不确定如何用它构建东西,这份指南就是为你准备的。
本文是我 MCP 系列的一部分。如果你对这个主题还不熟悉,请从我之前的文章开始:Model Context Protocol (MCP) Servers Explained: A Complete Beginner’s Guide。
理解概念是一回事。构建一个真正使用 MCP 的 AI 代理则是另一回事。
在本指南中,你将构建一个简单的 AI 代理,它能与 MCP 服务器通信、使用外部工具并返回有用的响应。更重要的是,你会理解为什么每个组件存在以及它们如何协同工作。
完成本指南后,你将拥有一个可以扩展到更高级 AI 应用中的坚实基础。
你将构建什么
想象一下向 AI 助手提问:
“今天多伦多的天气怎么样?”
AI 不会猜测答案,而是联系一个天气工具,获取真实信息,然后自然地作出回应。
整个交互都通过模型上下文协议实现。
我们的简单 AI 代理将:
- 接收用户的问题
- 决定是否需要工具
- 调用 MCP 服务器
- 接收结构化数据
- 生成最终响应
虽然我们使用天气示例,但相同的架构也适用于:
- AI 编码助手
- 客户支持代理
- 文档搜索应用
- 数据库助手
- 内部企业聊天机器人
前置要求
在开始之前,请确保你拥有:
- Python 3.11 或更高版本
- Claude Desktop
- Visual Studio Code(推荐)
- 基本的 Python 知识
我们还将使用官方的 MCP Python SDK。
理解架构
在编写代码之前,理解请求如何流经 MCP 应用程序会很有帮助。
┌──────────┐
│ User │
└────┬─────┘
│
▼
┌───────────────┐
│ Claude Desktop│
└────┬──────────┘
│
▼
┌───────────────┐
│ MCP Client │
└────┬──────────┘
│
▼
┌───────────────┐
│ MCP Server │
└────┬──────────┘
│
▼
┌───────────────┐
│ Custom Tool │
└────┬──────────┘
│
▼
Structured Data
│
▼
Claude generates
natural response
│
▼
User
Enter fullscreen mode Exit fullscreen mode
每个组件都有特定的职责。
| 组件 | 职责 |
|---|---|
| User | 提出问题 |
| Claude | 理解请求 |
| MCP Client | 发送工具请求 |
| MCP Server | 暴露可用工具 |
| Tool | 执行请求的任务 |
| Claude | 生成最终响应 |
步骤 1:创建项目
创建一个新的项目文件夹。
mkdir weather-agent
cd weather-agent
Enter fullscreen mode Exit fullscreen mode
创建一个虚拟环境。
python -m venv .venv
Enter fullscreen mode Exit fullscreen mode
激活它。
Windows
.venv\Scripts\activate
Enter fullscreen mode Exit fullscreen mode
macOS/Linux
source .venv/bin/activate
Enter fullscreen mode Exit fullscreen mode
安装 MCP SDK。
pip install mcp
Enter fullscreen mode Exit fullscreen mode
步骤 2:构建你的第一个 MCP 服务器
每个 MCP 服务器都会暴露一个或多个工具。
工具只是一个函数,AI 模型在需要信息或执行操作时可以调用它。
示例包括:
- 天气查询
- 计算器
- 文件读取器
- SQL 数据库查询
- 邮件发送器
让我们构建一个天气工具。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather Server")
@mcp.tool()
def get_weather(city: str):
return f"The weather in {city} is sunny and 24°C."
if __name__ == "__main__":
mcp.run()
Enter fullscreen mode Exit fullscreen mode
虽然这个示例返回硬编码的数据,但相同的结构适用于真实 API。
步骤 3:理解代码
让我们拆解发生了什么。
mcp = FastMCP("Weather Server")
Enter fullscreen mode Exit fullscreen mode
创建一个 MCP 服务器。
@mcp.tool()
Enter fullscreen mode Exit fullscreen mode
将一个 Python 函数注册为 MCP 工具。
def get_weather(city: str):
Enter fullscreen mode Exit fullscreen mode
定义 Claude 可以调用的工具。
mcp.run()
Enter fullscreen mode Exit fullscreen mode
启动 MCP 服务器。
服务器运行后,Claude 会自动发现每个已注册的工具。
你无需明确告诉 Claude何时使用工具。
Claude 会根据用户的请求自行决定。
步骤 4:连接 Claude Desktop
Claude Desktop 需要知道你的 MCP 服务器在哪里运行。
更新你的 MCP 配置。
{
"mcpServers": {
"weather": {
"command": "python",
"args": [
"/path/to/weather_server.py"
]
}
}
}
Enter fullscreen mode Exit fullscreen mode
重启 Claude Desktop。
如果配置正确,Claude 将自动发现你的新天气工具。
步骤 5:测试你的代理
现在向 Claude 提问:
今天多伦多的天气怎么样?
在后台,发生以下工作流。
User asks question
│
▼
Claude understands request
│
▼
Needs external data?
│
Yes
│
▼
Calls Weather Tool
│
▼
Receives result
│
▼
Writes natural response
│
▼
Returns answer
Enter fullscreen mode Exit fullscreen mode
注意一个重要的事项。
Claude 并没有在编写 Python 代码。
它在决定何时使用工具。
这种决策过程正是 AI 代理如此强大的原因。
为什么 MCP 很重要
没有 MCP:
Question
↓
LLM guesses
↓
Possible hallucination
Enter fullscreen mode Exit fullscreen mode
有 MCP:
Question
↓
LLM calls tool
↓
Gets real data
↓
Returns reliable answer
Enter fullscreen mode Exit fullscreen mode
模型不再只依赖其训练数据,而是可以在需要时与外部系统交互。
扩展你的代理
一旦你构建了一个工具,添加更多工具就很简单。
例如:
计算器
calculate(expression)
Enter fullscreen mode Exit fullscreen mode
文件读取器
read_file(filename)
Enter fullscreen mode Exit fullscreen mode
SQL 数据库
query_database(sql_query)
Enter fullscreen mode Exit fullscreen mode
邮件发送器
send_email()
Enter fullscreen mode Exit fullscreen mode
文档搜索
search_documents(question)
Enter fullscreen mode Exit fullscreen mode
AI 会根据用户的请求选择调用哪个工具。
常见初学者错误
1. 期望每个提示都使用工具
AI 模型仅在确定需要工具时才会调用工具。
2. 返回非结构化文本
尽可能返回 JSON 等结构化数据。
结构化响应更易于语言模型理解。
3. 构建大型工具
单个工具应执行一个明确的任务。
较小的工具更易于维护,也更易于 AI 模型正确使用。
4. 忽略错误处理
验证输入并返回有意义的错误消息。
可靠的工具会带来可靠的 AI 应用。
后续步骤
既然你已经构建了一个简单的 MCP 服务器,尝试用真实世界的集成对其进行扩展。
一些想法包括:
- 连接真实的天气 API
- 搜索本地文档
- 查询 PostgreSQL 数据库
- 构建 GitHub 助手
- 连接 Google 日历
- 构建文件管理助手
- 使用 LangGraph 创建多代理系统
每个项目都基于你在此学到的相同 MCP 基础。
总结
构建你的第一个 MCP 服务器不仅仅是一个 Python 项目。
它引入了一种将语言模型与真实工具和真实数据连接的实用模式。
你不再期望 AI 模型知道一切,而是允许它在需要时发现并使用专门的工具。
随着 AI 应用的不断演进,像 MCP 这样的协议将成为现代软件开发的重要组成部分。现在学习这些概念将帮助你构建能够搜索文档、与 API 交互、查询数据库、自动化工作流并解决现实问题的助手。
从一个工具开始。
然后再添加另一个。
不久之后,你将拥有一个能够处理远超简单对话任务的 AI 代理。
感谢阅读
如果你觉得本指南有帮助,请考虑关注我,了解更多关于 AI 工程、MCP、LangGraph、RAG、FastAPI 和全栈开发的文章。
🔗 LinkedIn: https://www.linkedin.com/in/sushyamnagallapati/
祝你构建愉快!
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.