MCP(Model Context Protocol)是一种让大型语言模型(LLM)方便调用外部工具和服务的协议。通过搭建MCP服务器,LLM可以像调用函数一样调用各种工具,极大地扩展AI的能力。下面我用最基础的知识点和代码示例,帮你快速理解并搭建一个简单的MCP服务器和客户端。
1. MCP是什么?
- MCP是大模型与外部工具之间的"沟通协议",它定义了如何调用工具和获取数据。
- MCP服务器就是提供工具的服务端,客户端通过MCP协议调用这些工具。
- 这样,AI模型就能访问数据库、文件系统、天气服务等外部资源。
2. 搭建MCP服务器的准备工作
-
需要安装Python 3.10以上版本。
-
安装MCP官方SDK库:
bashpip install mcp-sdk
-
MCP服务器默认监听本地8080端口。
3. MCP服务器核心概念
- 工具(Tool) :服务器提供给AI调用的功能接口,类似函数。
- 服务器(Server) :管理工具,接收客户端请求并调用工具。
- 客户端(Client) :调用服务器上的工具,发送请求,接收结果。
4. 简单MCP服务器代码示例
下面是一个最简单的MCP服务器示例,提供一个工具my_tool
,它接收输入文本并返回"Processed: 输入内容"。
python
from mcp_sdk import MCP, Tool
# 定义工具类,继承自Tool
class MyTool(Tool):
def run(self, input_data):
# 处理输入数据,返回结果
processed_data = f"Processed: {input_data}"
return processed_data
# 创建MCP服务器实例
mcp = MCP()
# 注册工具,名字叫"my_tool"
mcp.register_tool(MyTool(), name="my_tool")
# 启动服务器,默认监听localhost:8080
mcp.start()
- 保存为
server.py
,运行后服务器就启动了。
5. MCP客户端调用示例
客户端代码用来连接MCP服务器,调用my_tool
工具,传入字符串并打印结果。
python
from mcp_sdk import MCPClient
# 连接本地MCP服务器
client = MCPClient("http://localhost:8080")
# 调用工具"my_tool",传入字符串
result = client.call_tool("my_tool", "Hello, MCP!")
# 打印返回结果
print(result) # 输出:Processed: Hello, MCP!
- 保存为
client.py
,运行即可看到调用结果。
6. 运行步骤总结
-
打开终端,运行服务器:
bashpython server.py
-
另开一个终端,运行客户端:
bashpython client.py
-
客户端会输出:
textProcessed: Hello, MCP!
7. 扩展应用示例
你可以把工具改成更复杂的功能,比如:
- 计算两个数字之和:
python
class AddTool(Tool):
def run(self, input_data):
a = input_data.get("a", 0)
b = input_data.get("b", 0)
return a + b
# 注册时传入字典参数
mcp.register_tool(AddTool(), name="add_numbers")
客户端调用:
python
result = client.call_tool("add_numbers", {"a": 5, "b": 3})
print(result) # 输出:8
- 天气查询工具 (异步示例,需用
httpx
库):
python
import httpx
from mcp_sdk import MCP, Tool
class WeatherTool(Tool):
async def run(self, input_data):
city = input_data.get("city", "Beijing")
url = f"https://api.example.com/weather?city={city}"
async with httpx.AsyncClient() as client:
resp = await client.get(url)
data = resp.json()
return f"{city}天气:{data['weather']},温度:{data['temp']}°C"
mcp = MCP()
mcp.register_tool(WeatherTool(), name="get_weather")
mcp.start()
8. MCP服务器安全和性能建议
-
安全性
- 使用HTTPS加密通信,防止数据泄露。
- 实施访问控制,限制只有授权客户端能调用工具。
- 记录访问日志,便于审计和异常检测。
-
性能优化
- 复杂工具建议用异步处理,提升并发能力。
- 对频繁请求的数据使用缓存,减少重复计算。
- 服务器资源有限时,使用负载均衡分摊压力。
9. MCP的应用场景举例
- 自动化办公:自动发送邮件、更新日历、查询会议安排。
- 智能助手:查询天气、新闻、股票行情,提供个性化建议。
- 数据分析:连接数据库,执行复杂查询和报表生成。
- 开发辅助:集成代码管理、版本控制和文档查询工具。
10. 总结
- MCP是连接AI模型和外部工具的桥梁。
- 通过Python的
mcp-sdk
,你可以快速搭建MCP服务器和客户端。 - 服务器提供工具,客户端调用工具,AI模型通过客户端访问外部资源。
- 你可以根据需求扩展工具功能,实现丰富的智能应用。
以上内容帮助你用最简单的方式理解和搭建MCP服务器,附带基础代码和扩展示例,适合初学者快速上手。祝你成功打造自己的智能工具生态!