内容
# 基于SSE的MCP服务器和客户端
[](https://smithery.ai/server/@sidharthrajaram/mcp-sse)
本示例演示了一种基于SSE的MCP服务器和独立MCP客户端的工作模式,这些客户端使用来自服务器的工具。基于原始讨论 <a href="https://github.com/modelcontextprotocol/python-sdk/issues/145">此处</a>。
## 用法
**注意**:确保在 `.env` 文件中或作为环境变量提供 `ANTHROPIC_API_KEY`。
```bash
uv run weather.py
uv run client.py http://0.0.0.0:8080/sse
```
```
初始化SSE客户端...
列出工具...
连接到具有以下工具的服务器:['get_alerts', 'get_forecast']
MCP客户端已启动!
输入您的查询或 'quit' 退出。
查询:Spokane的天气怎么样?
我可以帮助您查看华盛顿州斯波坎的天气预报。我将使用get_forecast函数,但我需要使用斯波坎的纬度和经度坐标。
斯波坎,华盛顿州位于大约47.6587° N,117.4260° W。
[调用工具get_forecast,参数为{'latitude': 47.6587, 'longitude': -117.426}]
根据斯波坎的当前天气预报:
现在是晴天,气温很冷,为37°F,......
```
## 为什么?
这意味着MCP服务器现在可以是一个运行中的进程,代理(客户端)可以连接、使用,并在任何时候、任何地方断开连接。换句话说,基于SSE的服务器和客户端可以是解耦的进程(甚至可能在解耦的节点上)。这与STDIO模式不同,后者客户端本身将服务器作为子进程启动。这更适合“云原生”用例。
### 通过Smithery安装
要通过 <a href="https://smithery.ai/server/@sidharthrajaram/mcp-sse">Smithery</a> 自动安装基于SSE的MCP服务器和客户端:
```bash
npx -y @smithery/cli install @sidharthrajaram/mcp-sse --client claude
```
### 服务器
`weather.py` 是一个基于SSE的MCP服务器,提供基于国家气象局API的工具。改编自MCP文档中的 <a href="https://modelcontextprotocol.io/quickstart/server">STDIO服务器示例实现</a>。
默认情况下,服务器在 0.0.0.0:8080 上运行,但可以通过命令行参数进行配置,例如:
```bash
uv run weather.py --host <您的主机> --port <您的端口>
```
### 客户端
`client.py` 是一个MCP客户端,连接到基于SSE的MCP服务器并使用其工具。改编自MCP文档中的 <a href="https://modelcontextprotocol.io/quickstart/client">STDIO客户端示例实现</a>。
默认情况下,客户端连接到命令行参数中提供的SSE端点,例如:
```bash
uv run client.py http://0.0.0.0:8080/sse
```