MCP服务端的创建
本文介绍了MCP_Server的创建与使用流程。首先通过uv工具安装Python环境并初始化项目,然后创建包含计算工具和资源的MCP服务,支持stdio、SSE和StreamableHttp三种协议。接着详细说明了如何在CherryStudio中配置AI客户端连接本地或远程MCP服务。最后提供了两种服务发布方式:打包成Python包上传至PyPI供本地运行,或部署到云服务器提供公网访问。文章包含完
MCP_Server的创建
1.安装uv工具
1.1 uv命令使用
- uv python list 查看所有的已安装的python软件包
- uv python install 3.13 --install-dir “E://…” 安装指定版本到指定目录
- PS E:\project2025\mcp_server> uv init . -p 3.13 在项目目录中初始化mcp_server
- uv add “mcp[cli]” 安装mcp软件包
- E:\project2025\brooal_mcp_demo> uv init . --package -p 3.13 打包项目以供上传,命名要唯一brooal_mcp_demo
- E:\project2025\brooal_mcp_demo> uv publish --token pypi-AgEIcHlwa…InIA 通过pypi给的API token发布pypi
- pip install brooal-mcp-demo 安装发布的项目
2.创建MCP服务
2.1 编写main.py文件
# server.py
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers""" //这里的文字用来告诉大模型这个函数的作用
return a + b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport='stdio') //这是指定mcp的协议stdio
2.2 将MCP_Server改成SSE协议
将 mcp.run(transport=‘stdio’) 中的studio改成sse: mcp.run(transport=‘sse’),启动本地程序运行,使用AI客户端远程调用本地的mcp服务
复制运行端口:http://127.0.0.1:8000
2.3 将MCP_Server改成StreamableHttp协议
将 mcp.run(transport=‘stdio’) 中的studio改成StreamableHttp: mcp.run(transport=‘streamable-http’),启动本地程序运行,使用AI客户端远程调用本地的mcp服务,后续和SSE相同
3.AI客户端连接mcp服务
3.1 CherryStudio
模型选择:右下角设置->模型服务->硅基流动->点击这里获取密钥->注册账号->点击API密钥>新建API密钥,复制密钥到模型服务的API密钥中
-
打开左下角设置按钮
-
点击MCP服务器,如果右上角导航栏有红色三角形警告需要先安装CherryStudio内置的uv
-
点击添加服务器->快速创建
-
类型选择“标准输入/输出(stdio)”->命令填写
填写uv(包管理源:默认)
参数:
--directory E:\project2025\mcp_server(mcp服务项目的地址) run main.py(mcp中的main.py)
若使用pypi中的mcp_server项目,填写uvx
参数:
brooal-mcp-demo(即上传到pypi的包名)
-
若使用的是sse协议,类型选择sse,URL填写部署的MCP服务 :http://127.0.0.1:8000/sse
-
若使用的是Streamable Http协议,类型选择StreamableHttp,URL填写部署的MCP服务 :http://127.0.0.1:8000/mcp
stdio和sse的区别
stdio:将MCP_Server下载到本地,然后本地运行
sse:MCP_Server服务单独部署,AI客户端通过SSE远程调用
Streamable Http:原理和SSE相同
-
保存
-
点击对话界面,选择MCP服务器
-
开始对话,大模型选择使用MCP服务进行计算
4.MCP_Server服务发布
4.1 Studio协议,打包成python包,上传到PyPi上,使用uvx命令下载包后本地运行:
-
创建pypi账户获取API token
-
创建本地项目目录(命名唯一):brooal_mcp_demo,使用uv命令打包:uv init . --package -p 3.13
-
本地项目编写brooal_mcp_demo/src/init.py文件内容:
# server.py from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP("Demo") # Add an addition tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b # Add a dynamic greeting resource @mcp.resource("greeting://{name}") def get_greeting(name: str) -> str: """Get a personalized greeting""" return f"Hello, {name}!" # 这里不使用__name__ = "__main__" def main() -> None: mcp.run(transport='stdio')//指定为stdio形式
-
项目地址下,使用token上传项目到pypi:uv publish --token pypi-AgaWFfbn…InIA
-
上传成功,使用uvx通过包名brooal-mcp-demo,即可下载到本地运行
4.2 SSE协议,部署到云服务器上,暴露出公网链接供其他人使用
更多推荐
所有评论(0)