背景
在《MCP协议简述之MCP-server实战》中,我们实现了一个本地的MCP-server,然后在支持MCP协议的客户端程序(如cursor、cherry-studio)中配置调用了该MCP-server。本章主要探索如何将MCP-server发布为远程服务,使得其他用户可以直接使用MCP-server。
回顾问题
在上一章,我们在cherry-studio中配置了获取天气的本地mcp-server,关键配置如下:
{
"mcpServers": {
"weather": {
"command": "/Users/deadwalk/.local/bin/uv",
"args": [
"--directory",
"/Users/deadwalk/Code/ai_proj_agent/weather",
"run",
"weather.py"
]
}
}
}
这种方式的主要问题是:weather这个mcp-server是本地的,只有当前本地用户才能使用,网络上的其他用户是无法使用的。
解决方案
我们需要将MCP-server进行改造,使得其他用户可以直接使用。
MCP-server改造前的实现
- 导入包并设置实例
from typing import Any, Dict
import httpx
from mcp.server.fastmcp import FastMCP
# 初始化FastMCP服务器
mcp = FastMCP("weather")
# 常量
BAIDU_API_BASE = "https://api.map.baidu.com/weather/v1/"
BAIDU_API_KEY = "8HkEwz5h********"
- 实现入口函数的部分
if __name__ == "__main__":
# 初始化并运行服务器
mcp.run(transport='stdio')
MCP-server源码分析
通过查看FastMCP的源码,可以看到FastMCP在实例化对象的时候,是可以配置setting的