第五章:Codex MCP
前言
MCP 全称是:Model Context Protocol,模型上下文协议 。任何外部工具只要按这个标准做成一个 MCP Server(服务器),就能被所有支持 MCP 的 AI 客户端(如 Codex)直接识别和使用。
一、手动创建MCP方式
1、通过百度地图创建查询天气python。
代码块
Python
import httpx
from fastmcp import FastMCP
初始化 MCP 服务实例
mcp = FastMCP("BaiduWeatherService")
配置百度天气API地址和你的AK
BAIDU_WEATHER_API_URL = "https://api.map.baidu.com/weather/v1/"
BAIDU_MAP_AK = "xxxxxxxxxxxxxxxxxxxxxx" #输入百度地图的key
@mcp.tool()
def get_city_weather(district_id: str) -> str:
"""
输入指定的行政区划代码(例如广州市是 440100),返回该城市的实时及未来天气信息。
注意:百度地图天气API推荐使用区县级行政代码进行查询。
"""
params = {
"ak": BAIDU_MAP_AK,
"district_id": district_id,
"data_type": "all", # all表示返回实况+预报
"coordtype": "bd09ll"
}
try:
# 发起 GET 请求
response = httpx.get(BAIDU_WEATHER_API_URL, params=params, timeout=10)
data = response.json()
# 百度API状态码为0表示成功
if data.get("status") == 0 and data.get("result"):
result = data["result"]
•
导入库:首先执行 from fastmcp import FastMCP,把 MCP 框架加载进来。
•
创建实例:接着执行 mcp = FastMCP("BaiduWeatherService"),在内存中创建一个名为 "BaiduWeatherService" 的服务对象。
•
注册能力(核心):当 Python 读到带有 @mcp.tool() 装饰器的函数时,它会立刻把这些函数“登记”到 mcp 这个服务对象里。此时,这些函数还没有被真正执行,只是被贴上了标签,告诉 MCP:“我是工具/资源/提示词,随时待命”。
•
启动监听:最后执行到 if name == "main": mcp.run(),服务正式在本地 8000 端口启动,开始静静等待外部客户端/codex的连接。
2、运行MCP
在终端,或者vscode的codex输入:调用baidu_weather_server,城市名称:广州市。
二、通过codex创建MCP
1.切换到某目录下、输入要实现的需求:
生成一个MCP服务,这个MCP服务输入什么,就显示/输入您好+输入内容
(1)我是通过idea某个java项目下创建MCP。第一次创建,需要经过几分钟的等待。如果是沙箱sandbox安全模式下,要注意屏幕,不时弹出需要确认操作。
(2)项目下自动创建一个mcp文件夹,自动创建两个文件
代码块
Plain Text
hello_server.py和README.md
README .md
hello_server
2.调用MCP:
输入命令:调用hello_server 输入内容是:小明