关于 Simple MCP Client / Server
这是一个 Python MCP 示例项目,涵盖 stdio 天气服务、客户端实现及使用 Inspector 测试,面向学习构建和连接 MCP 组件的开发者。
主要功能
- 01Python stdio 天气服务
- 02stdio 和 SSE 客户端示例
- 03Cline 连接说明
- 04使用 MCP Inspector 本地测试
适用场景
- 01构建含两个工具的天气服务
- 02通过 Cline 连接本地服务
- 03使用 MCP Inspector 测试服务
MCP 相关
项目演示通过 stdio 和 SSE 实现 MCP 服务与客户端,也说明了如何连接 Cline 并检查本地开发的服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
简易 MCP 客户端 / 服务端
https://modelcontextprotocol.io/quickstart/server
在 macOS 和 Linux 上安装 uv。
$ curl -LsSf https://astral.sh/uv/install.sh | sh
然后 git 克隆此仓库。
MCP 服务(stdio)
uv init mcp_server
cd mcp_server/
uv run main.py # just to create the .venv, then rm the main.py
uv add "mcp[cli]" httpx # MCP server Python lib
touch weather_stdio.py # STDIO server implementation
启动服务
mcp_server$ uv run weather_stdio.py
使用 VSCode + Cline 测试
将 MCP 服务添加到 Cline。
Cline -> MCP Servers (icon close to '+') -> Installed -> Add
你会看到一个 JSON 模板 "mcpServers": {},然后添加新服务。 这是 cline_mcp_settings.json:
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"/home/users/tikoehle/mcp_server",
"run",
"weather_stdio.py"
]
}
}
}
=> Cline 会显示 2 个 get_* 工具函数。点击“Done”返回 Cline 任务输入框,尝试使用新服务。
测试
输入一个调用这两个工具的任务: "Can you tell me the weather forecast for San Francisco, CA" "Can you tell me the weather alerts for San Francisco, CA"
=> 使用我新添加的两个 MCP“weather”服务工具。
注意: 本地 MCP 服务不应将消息记录到 stdout,因为这会干扰协议运行。
MCP 客户端
https://modelcontextprotocol.io/quickstart/client
uv init mcp_client
cd mcp_client/
uv run main.py # create venv
uv add mcp
touch client_stdio.py # MCP client impl.
运行客户端
uv run client.py path/to/server.py
mcp_client$ uv run client_stdio.py ../mcp_server/weather_stdio.py
MCP Inspector
安装 Node.js
在 MCP 服务所在的计算机上,使用 nvm 和 npm 获取适用于 Linux 的 Node.js(Current)。https://nodejs.org/en/download
cd $HOME
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 23
# Verify the Node.js version:
node -v # Should print "v23.10.0".
nvm current # Should print "v23.10.0".
# Verify npm version:
npm -v # Should print "10.9.2".
检查本地开发的服务
mcp_server$ uv run mcp dev ./weather_stdio.py
Starting MCP inspector...
Proxy server listening on port 3000
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
注意:
另一种安装最新版本并启动 Inspector 的方法。
mcp_server$ npx @modelcontextprotocol/inspector@latest
在浏览器中打开 MCP Inspector 客户端界面
http://comp9:5173 --> Connect
注意:
如果 MCP 开发服务运行在远程计算机(例如 comp9)上,那么 MCP Inspector 客户端界面需要连接到这台计算机。
在浏览器中启动界面时,传输类型、命令和参数会显示正确的值。
Transport Type: STDIO
Command: uv
Arguments: run --with mcp mcp run ./weather_stdio.py
或者
Transport Type: SSE
URL: http://comp9:8001/sse
注意:
MCP 开发工具
mcp_server$ uv run mcp
SSE 客户端 / 服务端
服务端
mcp_server$ uv run weather_sse.py # port 8001
客户端
mcp_client$ uv run client_sse.py http://comp9:8001/sse
Python-SDK
https://github.com/modelcontextprotocol/python-sdk/
SSE 问题:
https://github.com/modelcontextprotocol/python-sdk/issues/398
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。