第一个 MCP 服务器

理论铺垫完毕,本章动手:用 Python 官方 SDK 写一个只含一个加法工具的 MCP 服务器,跑起来并接入宿主。全程默认 stdio 传输,代码完整可复制。

环境准备

需要 Python 3.10+,安装官方 SDK:

pip install mcp
# 输出:Successfully installed mcp ...
python --version
# 输出:Python 3.13.x

最小服务器:一个 add 工具

新建 server.py,代码如下:

# server.py —— 第一个 MCP 服务器(stdio 传输)
from mcp.server.fastmcp import FastMCP

# 创建服务器实例,名称会显示在客户端里
mcp = FastMCP("math-server")

@mcp.tool
def add(a: int, b: int) -> int:
    """把两个整数相加并返回结果(描述会作为工具说明给模型看)"""
    return a + b

if __name__ == "__main__":
    mcp.run()          # 默认使用 stdio,从 stdin 读请求、向 stdout 写响应

说明:工具名取函数名 add,参数从类型注解推导出 JSON Schema,docstring 作为模型看到的工具描述——这一套约定在第 8 章展开。

用 MCP Inspector 测试

服务器单独运行不会打印任何东西,它要等客户端消息。最省事的验证方式是打开官方检查器 MCP Inspector:

# 方式一:npx 直接启动 Inspector 的图形界面,再在界面里填启动命令
npx @modelcontextprotocol/inspector

# 方式二:部分版本支持把启动命令直接附在后面(以 Inspector 文档为准)
npx @modelcontextprotocol/inspector python server.py

若安装了 mcp 的命令行工具,也可用一行命令拉起检查器:

mcp dev server.py        # 打开 Inspector 开发界面
mcp inspect server.py    # 命令行快速检查服务器

打开 Inspector 后连接本服务器,在"工具"列表里应能看到 add;直接填 a=3、b=5 调用,返回 8,即大功告成。检查器相关用法后续章节详解。

接入宿主:以 Claude Desktop 为例

把服务器注册进宿主配置文件(路径与字段以宿主文档为准):

{
  "mcpServers": {
    "math-server": {
      "command": "python",
      "args": ["/绝对路径/server.py"]
    }
  }
}

保存后重启宿主,就能在工具列表看到 math-server 的 add。Windows 上建议把 command 写成 python 完整路径(如虚拟环境里的 python.exe)。Cline、Cursor 等宿主的接入方式类似,只是配置界面不同。

常见问题

  • 报"连接失败":多半是 command/args 路径不对或环境变量缺失,先在终端手动执行一次启动命令确认无报错。
  • 看不到工具:确认初始化正常,宿主侧开启了该服务器的工具。

小结

一个 MCP 服务器可以只写 10 行:建 FastMCP 实例、@mcp.tool 注册工具、mcp.run() 启动;再借 Inspector 或宿主配置验证即可。下一章把工具写得更健壮:描述、参数约束与错误处理。

笔记加载中…