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 能够直接使用的插件不多

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐