天气信息查询服务器

一个基于Python的MCP服务器,提供城市天气信息查询功能,适用于开发调试和本地网络部署。

  • by ArturoHurtado7
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ArturoHurtado7/MCP-Server

使用说明

MCP服务器

描述

这个项目在Python中实现了一个MCP(模型上下文协议)服务器。服务器使用Open-Meteo API公开用于获取城市天气信息的工具,并且可以由MCP客户端使用或使用MCP VS代码检查器进行检查。


Python依赖项安装

  1. 创建并激活虚拟环境(可选但推荐):

    python3 -m venv venv
    source venv/bin/activate
    
  2. 安装项目依赖项:

    pip install -r requirements.txt
    

地方开发运行

您可以在本地运行MCP服务器,而无需Nginx或systemd,这是开发和快速测试的理想选择。

从 src 文件夹,运行:

../venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000 --reload

这将以自动加载模式启动服务器(对开发很有用)。从浏览器访问它:

http://localhost:8000/mcp/

或者使用Raspberry Pi的IP从网络上的另一台机器:

http://192.168.10.101:8000/mcp/

使用MCP检查器

您可以使用 MCP检查员 从VS Code调试和探索您的MCP服务器。

建议与Inspector一起运行

从项目根目录运行:

npx -y @modelcontextprotocol/inspector /home/pi/Documents/Projects/MCP-Server/venv/bin/python /home/pi/Documents/Projects/MCP-Server/src/mcp_server/fast_mcp.py

或者,如果你使用 main.py 入口点:

npx -y @modelcontextprotocol/inspector /home/pi/Documents/Projects/MCP-Server/venv/bin/python /home/pi/Documents/Projects/MCP-Server/src/main.py

这将在浏览器中打开检查器,并使用stdio连接到MCP服务器。


使用systemd和Nginx部署为服务(守护进程)

1.将MCP服务器作为systemd服务启动

创建文件 /etc/systemd/system/mcp-server.service 与:

[Unit]
Description=MCP Server (uvicorn)
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/Documents/Projects/MCP-Server/src
ExecStart=/home/pi/Documents/Projects/MCP-Server/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target

然后运行:

sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-server

检查状态:

sudo systemctl status mcp-server

2.Nginx配置为反向代理

安装Nginx:

sudo apt update
sudo apt install nginx

创建文件 /etc/nginx/sites-available/mcp 与:

server {
    listen 80;
    server_name 192.168.10.101;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用配置并重新加载Nginx:

sudo ln -s /etc/nginx/sites-available/mcp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

3.从本地网络访问

在服务器和Nginx运行的情况下,从网络上的任何设备访问:

http://192.168.10.101/

4.代码更改后重新启动服务

sudo systemctl restart mcp-server

Python代码更改后不需要重新启动Nginx。


附加说明

  • 对于生产环境,请使用带有systemd和Nginx的部署。
  • 为了开发,使用 uvicorn 随着 --reload.
  • MCP检查器可用于调试和交互式测试。