DeepSeek实战--MCP Server
1)MCP Server 需要写工具,但不选写tools 定义,MCP能够自动解析2)MCP Hosts 能够直接使用的插件不多。
·
1.MCP Server 三大能力
- Tool(工具): 与我们在 Agent 和 Function Calling 中使用的 Tool 是一样的,就是写程序去调用外部服务。
- Resource(资源): Resource 表示服务器希望提供给客户端的任何类型的只读数据。这可能包括文件内容、数据库记录、图片、日志等等。
- Prompt(提示模板) : Prompt 是由服务器定义的可重用的模板,用户可以选择这些模板来引导或标准化与 LLM 的交互过程。例如,Git MCP Server 可以提供一个“生成提交信息”的提示模板,用户可以用它来创建标准化的提交消息。
2.示例:考评系统
1)安装 uv
MCP 官方推荐使用 uv 来进行 Python 工程的管理。可以使用如下命令进行安装,命令:
python3 -m pip install uv==0.5.24
执行结果:
2)初始化项目
命令:
uv init achievement
初始化完成后,会出现如下打印:
日志中,可以按到初始化项目后的相对路径
3)使用 Tool 能力
MCP Server 的 Python SDK,分为 FastMCP SDK 和 Low-Lever SDK 两种。FastMCP 是在 Low-Level 的基础上又做了一层封装,不论是写代码,还是项目依赖等,操作起来都更加简单,容易上手。因此建议使用 FastMCP。
4)uv 会创建出一个 .venv 虚拟环境,并自动安装一堆依赖
uv add "mcp[cli]"
此时,uv 会创建出一个 .venv 虚拟环境,并自动安装一堆依赖
5)下载 mcp sdk,之后创建一个 server.py 文件,开始写代码
python3 -m pip install mcp
执行结果:
6)写工具
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("achievement")
# Add an get score tool
@mcp.tool()
def get_score_by_name(name: str) -> str:
"""根据员工的姓名获取该员工的绩效得分"""
if name == "张三":
return "name: 张三 绩效评分: 85.9"
elif name == "李四":
return "name: 李四 绩效评分: 92.7"
else:
return "未搜到该员工的绩效"
第7 行使用 @mcp.tool() 注解向 MCP Server 注册工具,被修饰的 get_score_by_name 函数即为该工具的具体实现
第 9 行,MCP Server 会识别出来这是工具的描述,不需要单独写描述(json)
选用用 FastMCP
7)修改 MCP Server 配置文件
{
"mcpServers": {
"achievement": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with-editable",
"D:\\workspace\\python\\mcp-test\\achievement",
"mcp",
"run",
"D:\\workspace\\python\\mcp-test\\achievement\\server.py"
]
}
}
}
你要把实际代码路径写成你自己的
8)找一个client (如:ROO CODE)执行,验证
3.总结
1)MCP Server 需要写工具,但不需要写tools 定义,MCP能够自动解析
2)MCP Hosts 能够直接使用的插件不多
更多推荐
所有评论(0)