MCP‑Server(Fast‑MCP)一共两种运行模式:**stdio(本地默认)、SSE‑HTTP(远程网络模式)**,分别对应不同启动方式。结合刚才 Mac 文件读取示例讲解。
MCP‑ServerFast‑MCP一共两种运行模式stdio本地默认、SSE‑HTTP远程网络模式分别对应不同启动方式。结合刚才 Mac 文件读取示例讲解。一、Stdio 模式90% 本地场景Claude‑Desktop、Cursor、本地 Agent 专用原理客户端Claude‑Desktop自动把你的 python 脚本启动成子进程依靠操作系统管道 stdin/stdout 完成 JSON‑RPC 通信你不能手动在终端里执行python file_mcp_server.py然后保持终端常驻。代码里默认配置if __name__ __main__: mcp.run(transportstdio) # 默认值可以省略不写两种启动方式方式 1由 MCP 客户端启动正式生产方式推荐Mac 配置claude_desktop_config.json客户端按需拉起、关闭 MCP 服务不需要你手动运行脚本{ mcpServers: { local‑file‑server: { command: python3, args: [/Users/xxx/code/file_mcp_server.py] } } }保存配置文件重启 Claude‑Desktop 即可Claude 打开时自动启动这个 python 进程关闭软件自动杀掉进程。这就是社区 MCP‑Server 的运行方式使用者只填配置不用手动运行代码对应你前面那段英文社区写好 MCP‑Server使用者直接配置调用即可。方式 2自己写 Python 客户端手动启动 MCP‑Server开发调试用自己编写 client.py程序内部调用stdio_client代码自动启动 server 子进程不要单独开终端运行 server 脚本。# client.py async with stdio_client(StdioServerParameters(commandpython3,args[file_mcp_server.py])) as (read,write):重点误区不要新开终端手动执行python3 file_mcp_server.py单独执行这个脚本之后终端看起来卡住此时 stdin‑stdout 被终端占用Claude 无法连接。stdio 模式的 server 进程只能由 MCP‑Client 创建。开发调试技巧日志只能输出到stderrprint()不能使用print 会污染 stdout破坏 JSON‑RPC 报文造成 MCP 连接失败Fast‑MCP 内置调试工具fastmcp run file_mcp_server.py它会启动 Inspector 调试页面查看注册的 tools、调用日志。二、SSEHTTP‑流式模式远程部署、多客户端访问当你的 Agent 部署在服务器需要远程机器调用 MCP 服务切换成 SSE 模式。1. 修改代码启动参数if __name__ __main__: # 0.0.0.0允许公网访问 mcp.run(transportsse,host0.0.0.0,port8000)2. 启动命令这时可以手动在服务器终端运行python3 file_mcp_server.py服务监听http://服务器IP:8000/sse远程 MCP‑Client 填入 SSE 地址连接支持多个客户端同时连接这个 MCP‑Server。stdio一对一进程绑定只能本机使用SSE基于 HTTP 长连接支持远程访问、多客户端共用服务实例。三、后台常驻运行服务器部署Mac/Linux 后台运行 SSE 版 MCP‑Server# nohup后台运行日志输出到mcp.log nohup python3 file_mcp_server.py mcp.log 21 四、对应你之前的核心架构思想总结传统 API 方式我们手动启动后端服务编写/read_file路由模型调用 API返回结果全部塞进 LLM 上下文MCP 范式stdio 模式MCP‑Server 代码写完发布到社区使用者仅在配置文件填写启动命令客户端自动拉起进程开发者写完代码只用写一次使用者完全不用编写代码MCP 协议接管上下文文件读取结果保存在服务端不用全部喂到大模型减少上下文窗口压力。