用最简单的方式教你用Python搭建第一个MCP服务器(附详细代码示例)

MCP(Model Context Protocol)是一种让大型语言模型(LLM)方便调用外部工具和服务的协议。通过搭建MCP服务器,LLM可以像调用函数一样调用各种工具,极大地扩展AI的能力。下面我用最基础的知识点和代码示例,帮你快速理解并搭建一个简单的MCP服务器和客户端。

1. MCP是什么?

  • MCP是大模型与外部工具之间的"沟通协议",它定义了如何调用工具和获取数据。
  • MCP服务器就是提供工具的服务端,客户端通过MCP协议调用这些工具。
  • 这样,AI模型就能访问数据库、文件系统、天气服务等外部资源。

2. 搭建MCP服务器的准备工作

  • 需要安装Python 3.10以上版本。

  • 安装MCP官方SDK库:

    bash 复制代码
    pip 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. 运行步骤总结

  1. 打开终端,运行服务器:

    bash 复制代码
    python server.py
  2. 另开一个终端,运行客户端:

    bash 复制代码
    python client.py
  3. 客户端会输出:

    text 复制代码
    Processed: 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服务器,附带基础代码和扩展示例,适合初学者快速上手。祝你成功打造自己的智能工具生态!

相关推荐
_一条咸鱼_4 小时前
Python 之数字类型内置方法(十四)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之集合类型内置方法(十九)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之列表类型内置方法(十六)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 格式化字符串的 4 种方式(十三)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之深浅 Copy(十一)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之元组类型内置方法(十七)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 小数据池与代码块深入剖析(十二)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之字符串类型内置方法(十五)
人工智能·python·面试
码起来呗4 小时前
基于SpringBoot的中华诗词文化分享平台-项目分享
java·spring boot·后端
加点油。。。。4 小时前
C语言高频面试题目——内联函数和普通函数的区别
c语言·开发语言·面试