MCP服务器:天气和时间信息服务
项目概述
此模型上下文协议(MCP)服务器是一个学习项目,它利用RMCP(Rust模型上下文协议)库来演示:
- 使用tokio进行异步Rust编程
- 实现灵活的微服务架构
- 使用RMCP SDK构建可扩展工具
服务器提供两个主要工具:
- 天气信息:检索特定城市和国家的天气数据
- 本地时间:获取给定城市和国家的当前当地时间
关于RMCP
RMCP是用于模型上下文协议的现代Rust SDK,提供:
- 使用tokio实现干净高效的异步运行时
- 灵活且可扩展的工具实施
- 与官方SDK相比,改进了数据类型处理
- 支持各种运输机制
- 用于实时通信的服务器发送事件(SSE) - 轻量级且高效的单向服务器到客户端数据流 - 内置重新连接支持和事件跟踪
目的
该项目的主要目标是:
- 学习Rust编程
- 探索RMCP库功能
特性
- 气象数据检索
- 当地时间信息
- 基于标准的沟通
- 带跟踪的结构化日志记录
先决条件
- Rust(最新稳定版本)
- 货物包装经理
- 仅仅 命令运行器
- 使用Homebrew安装: brew install just - 与货物一起安装: cargo install just
- API密钥用于:
- WeatherAPI 获取天气数据 - IP地理定位API 时间数据
配置
可以使用以下环境变量配置服务器:
BIND_ADDRESS:将服务器绑定到的IP地址(默认值:0.0.0.0)PORT:要侦听的端口号(默认值:8000)
示例用法:
# Bind to localhost on port 3000
BIND_ADDRESS=127.0.0.1 PORT=3000 cargo run
# Use default bind address but change port
PORT=8080 cargo run环境设置
- 复制示例环境文件:
cp .env.example .env- 编辑
.env文件,并将占位符值替换为实际的API键:
- WEATHER_API_KEY:从 WeatherAPI - IP_GEOLOCATION_API_KEY:从 IP地理定位API
- 您还可以选择配置:
- BIND_ADDRESS:将服务器绑定到的IP地址(默认值: 0.0.0.0) - PORT:要侦听的端口号(默认值: 8000)
安装
- 克隆存储库:
git clone https://github.com/sergei-grigorev/mcp-server-play.git
cd mcp-server-play- 构建项目:
cargo build开发命令
该项目使用 仅仅 作为一名命令执行者。可用命令:
just # List available commands
just build # Build release artifact
just check # Run checks (clippy, fmt, etc.)
just clean # Clean build artifacts
just format # Format code using rustfmt
just serve # Run the server in development mode
just test # Run tests运行服务器
只需使用以下命令运行服务器:
just serve项目结构
src/main.rs:入口点和服务器初始化src/api/
- mod.rs:主服务器实现 - weather.rs:气象数据检索逻辑 - weather/response.rs:天气API响应模型 - time.rs:时间数据检索逻辑 - time/response.rs:时间API响应模型
src/models/
- mod.rs:模型模块定义 - weather.rs:天气请求/响应模型 - time.rs:时间请求/响应模型
工具和端点
天气信息
- 端点:
get_weather - 参数:
- city:城市名称 - country:国家代码 - unit:温度单位(可选) - 价值观: C (摄氏度)或 F (华氏) - 违约: C
本地时间
- 端点:
get_local_time - 参数:
- city:城市名称 - country:国家代码
许可证
麻省理工学院
