快速上手

本章用官方 SDK 写一个 加法 Tool(外加一个回声 Tool),再用 Inspector 调用。不接 Cursor / Claude Code,也能确认协议走通。


最小 server.py

在已激活的虚拟环境中创建 server.py

from mcp.server import MCPServer

mcp = MCPServer("demo")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

@mcp.tool()
def echo(text: str) -> str:
    """Echo the given text back unchanged."""
    return text

if __name__ == "__main__":
    mcp.run()

这就是完整的 Stdio Server:MCPServer 名称会出现在 Client 的身份信息里;@mcp.tool() 从函数名、docstring 和类型注解生成 schema;无参数的 mcp.run()stdioif __name__ == "__main__" 必须保留,否则 mcp dev 一 import 就会再开一台 Server。

网上仍大量出现 from mcp.server.fastmcp import FastMCP。那是官方 SDK v1 的类名。v2 请用上面的导入。行为(装饰器 + run())保持一致。


用 Inspector 打开

方式 A:SDK CLI(推荐)

mcp dev .\server.py
mcp dev ./server.py

方式 B:直接把启动命令交给 Inspector

npx @modelcontextprotocol/inspector python .\server.py
npx @modelcontextprotocol/inspector python ./server.py

浏览器打开打印出的 URL。在 Tools 页应看到 addecho。给 adda=1b=2,调用后结果为 3。给 echo 填任意字符串,应原样返回。

Inspector 做的事与真实 Host 一样:把 server.py 当子进程拉起,走 stdio 发 tools/list / tools/call


可选:CLI 一次性调用

不打开浏览器时:

npx @modelcontextprotocol/inspector --cli python .\server.py --method tools/list
npx @modelcontextprotocol/inspector --cli python ./server.py --method tools/list

列出工具后,再调用(具体 flag 以当前 Inspector --help 为准):

npx @modelcontextprotocol/inspector --cli python .\server.py --method tools/call --tool-name add --tool-arg a=1 --tool-arg b=2

可选:内存里当 Client 测

不启进程、不占端口,适合以后写 pytest:

import asyncio
from mcp import Client
from server import mcp

async def main() -> None:
    async with Client(mcp) as client:
        result = await client.call_tool("add", {"a": 1, "b": 2})
        print(result.structured_content)

asyncio.run(main())

from mcp import Clientfrom mcp.server import MCPServer 是两条导入路径,没有 from mcp import MCPServer


可选:改走 Streamable HTTP

把入口改成:

if __name__ == "__main__":
    mcp.run(transport="streamable-http", host="127.0.0.1", port=8000)

然后:

python .\server.py

另开一个终端,用 Inspector 连远程 HTTP(以当前 Inspector 帮助为准,常见是 --server-url + --transport http):

npx @modelcontextprotocol/inspector --server-url http://127.0.0.1:8000/mcp --transport http

学协议阶段继续用 stdio + mcp dev 即可。


清单

  1. venv 中 pip install "mcp[cli]"
  2. 保存上面的 server.py
  3. mcp dev .\server.py(Unix:mcp dev ./server.py
  4. 在 Inspector 里调用 addecho
  5. (可选)Client(mcp) 或 Streamable HTTP

失败时先看 stderr 与 Inspector 连接面板,而不是聊天窗口。stdio 的 stdout 是协议线,不要在 Tool 里 print 调试。


下一步

评论