使用说明
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
- 使用Homebrew安装:
- 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:从 WeatherAPIIP_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:国家代码
许可证
麻省理工学院
