MCP服务器-膳食准备(Rust)
Rust内置的高性能MCP(模型上下文协议)服务器,用于膳食准备,具有基于菜肴的食谱和智能膳食计划功能。
🚀 特性
- 多菜食谱数据库:法国、泰国、意大利、墨西哥、中国、越南和日本菜的传统食谱
- 智能膳食计划:使用优化的购物清单生成每周用餐计划
- 成分重叠分析:通过识别常见成分尽量减少食物浪费
- 资源模板:通过动态配方访问
file://recipes/{cuisine}URI - 高性能:采用Rust构建,性能卓越,内存安全
- 类型安全:具有零成本抽象的编译时间保证
- 全面安全:预提交挂钩、漏洞扫描、SBOM生成
- 交叉平台的:可移植二进制文件,可在任何地方运行,没有依赖关系
🏗️ 建筑
Rust实现的好处
- 内存安全:无空指针异常或内存泄漏
- 演出:接近C级的性能和出色的并发性
- 类型系统:强大的编译时类型检查
- 宏观系统:MCP协议合规性代码生成
- 异步运行时:基于Tokio的async/await实现高吞吐量
项目结构
src/
├── main.rs # MCP server implementation with tools and prompts
├── recipes.rs # Recipe data structures and database
├── meal_planner.rs # Meal planning logic and optimization
├── lib.rs # Library entry point
tests/
├── integration_tests.rs # Comprehensive test suite
scripts/
├── security-check.sh # Security validation script
├── generate-sbom.sh # SBOM generation script
benches/
├── benchmark.rs # Performance benchmarking
Cargo.toml # Dependencies and project configuration
deny.toml # License and security policy
Makefile # Development commands🛠️ 设置
先决条件
- Rust 1.70+(通过安装 rustup.rs)
- 货物(带有铁锈)
- Git(用于版本控制)
安装
# Clone or navigate to the project directory
cd mcp-server-meal-prep
# Build the project
cargo build --release
# Run the server
cargo run --releaseChatGPT桌面集成
对于macOS上的ChatGPT桌面,请参阅全面的设置指南:
- ChatGPT MCP安装指南 -完整的设置说明
- 自动设置脚本 -一键设置脚本
快速设置:
# Run the automated setup script
./setup-chatgpt-mcp.sh发展
# Run in development mode
cargo run
# Run tests
cargo test
# Check code formatting
cargo fmt
# Lint the code
cargo clippy
# Run security checks
make security-check
# Generate SBOM
make sbom
# Run benchmarks
cargo bench🎯 可用特征
工具
get_cuisines:列出所有可用的菜肴get_recipes:获取特定菜肴的食谱generate_meal_plan:用购物清单制定用餐计划analyze_ingredient_overlap:在食谱中找到常见的配料weekly_meal_planner:全面的每周用餐计划,包括美食选择
提示
weekly_meal_planner:全面的每周用餐计划,包括美食选择
资源
file://recipes/{cuisine}:按菜肴访问食谱(法国、泰国、意大利、墨西哥、中国、越南)
📋 使用示例
MCP客户端配置
添加到MCP客户端配置中:
{
"mcpServers": {
"meal-prep": {
"command": "/path/to/mcp-server-meal-prep/target/release/mcp-server-meal-prep",
"args": [],
"env": {}
}
}
}工具调用示例
// Get available cuisines
{
"method": "tools/call",
"params": {
"name": "get_cuisines",
"arguments": {}
}
}
// Get French recipes
{
"method": "tools/call",
"params": {
"name": "get_recipes",
"arguments": {
"cuisine": "French"
}
}
}
// Generate 7-day meal plan for Italian cuisine
{
"method": "tools/call",
"params": {
"name": "generate_meal_plan",
"arguments": {
"cuisine": "Italian",
"days": 7,
"servings": 4
}
}
}
// Analyze ingredient overlap for Mexican cuisine
{
"method": "tools/call",
"params": {
"name": "analyze_ingredient_overlap",
"arguments": {
"cuisine": "Mexican"
}
}
}提示用法示例
// Weekly meal planner for Vietnamese cuisine
{
"method": "prompts/get",
"params": {
"name": "weekly_meal_planner",
"arguments": {
"cuisine": "Vietnamese"
}
}
}🍳 支持的美食
法国菜
- 红酒炖鸡:经典法式葡萄酒鸡
- 法式洋葱汤:传统洋葱浓汤
- 奶油布丁:香草奶油冻配焦糖
泰国菜
- 泰式炒河粉:虾仁蔬菜炒面
- 冬阴功:酸辣虾汤
- 芒果糯米饭:甜甜点配椰奶
意大利美食
- 卡邦拿意粉:鸡蛋、奶酪和培根意大利面
- 玛格丽特披萨:经典番茄、马苏里拉奶酪和罗勒披萨
- 提拉米苏:咖啡味的马斯卡彭甜点
墨西哥菜
- 塔可司铎:菠萝香猪肉卷
- 鳄梨酱:鳄梨蘸酸橙和香菜
- 油条:肉桂糖油酥糕点
中国菜
- 宫保鸡丁:花生蔬菜辣炸鸡
- 叉烧(中国烤肉):香甜可口的烤猪肉
- 鸡蛋蛋糕(Dan Tat):奶油蛋挞配酥皮
越南菜
- 牛肉面汤:传统越南面汤
- 班米:越南泡菜三明治
- 车巴茂(三色甜品):豆类和椰子分层甜点
日本料理
- Unagi Donburi(鳗鱼配米饭):甜酱汁烤鳗鱼配米饭
- 味噌汤:传统日式发酵豆酱汤
- 抹茶冰淇淋:绿茶味冰淇淋甜点
🧪 测试
# Run all tests
cargo test
# Run tests with output
cargo test -- --nocapture
# Run specific test
cargo test test_meal_plan_generation📊 性能特征
- 启动时间:0.020s(比TypeScript快5.5倍)
- 内存使用:~10-20MB(本机二进制效率)
- 二进制大小:1.6M(自包含的可执行文件)
- 建造时间:1.97秒(发布版本)
- 吞吐量:非常适合CPU密集型用餐计划
- 延迟:配方访问开销最小
🔧 发展
添加新菜肴
- 编辑
src/recipes.rs - 将新食谱添加到
get_recipe_database()函数 - 重建:
cargo build --release - 重新启动MCP客户端
添加新工具
- 添加工具功能
MealPrepServer实施 - 使用
#[tool(description = "...")]属性 - 通过以下方式实现错误处理
McpError - 为新功能添加测试
添加新提示
- 添加提示功能
MealPrepServer实施 - 使用
#[prompt(name = "...")]属性 - 返回
GetPromptResult带有消息 - 添加参数验证
🚀 部署
生产大楼
# Build optimized release binary
cargo build --release
# The binary will be at:
# target/release/mcp-server-meal-prep跨平台编译
# Install cross-compilation target
rustup target add x86_64-unknown-linux-gnu
# Build for Linux from macOS
cargo build --release --target x86_64-unknown-linux-gnu🔍 故障排除
常见问题
- 构建错误:确保安装了Rust 1.70+
- 运行时错误:检查所有依赖项是否可用
- MCP连接:验证客户端配置中的二进制路径
- 权限问题:确保二进制文件可执行
调试模式
# Run with debug logging
RUST_LOG=debug cargo run📈 性能与TypeScript
| 度量 | Rust | TypeScript | 获胜者 |
|---|---|---|---|
| 启动时间 | 0.020s | 0.110s | 🏆 生锈 |
| 内存使用 | ~10-20MB | ~50-100MB | 🏆 生锈 |
| 二进制大小 | 1.6米 | 4.0K | 🏆 TypeScript |
| 建造时间 | 1.97秒 | 1.15秒 | 🏆 TypeScript |
| 依赖项 | 3.9G(目标) | 78M(节点模块) | 🏆 TypeScript |
| 类型安全 | 编译+运行时 | 编译时 | 🏆 生锈 |
| 并发 | 优秀(Tokio) | 良好(Node.js) | 🏆 生锈 |
| 可移植性 | 通用二进制 | 需要Node.js | 🏆 生锈 |
🔒 安全特性
此MCP服务器实施了全面的安全最佳实践:
安全工具
- 货物审计:依赖关系的漏洞扫描
- 货物拒绝:许可证合规性和咨询检查
- 预提交挂钩:自动安全验证
- SBOM生成:供应链安全软件物料清单
安全强化
- 内存安全:零不安全代码块
- 剥离二进制文件:从发布版本中删除调试符号
- 安全配置文件:强化构建配置
- 依赖性审计:自动漏洞扫描
安全文档
- 安全.md:漏洞报告流程
- RUST_DEVELMENT_GUIDE.md:安全意识开发实践
- SETUP_TOUBLESHOOTING.md:安全故障排除指南
🤝 贡献
- 复刻仓库
- 创建要素分支:
git checkout -b feature/new-cuisine - 使用测试添加更改
- 跑
cargo test和cargo clippy - 运行安全检查:
make security-check - 提交拉取请求
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 与 RMCP Rust SDK
- 受TypeScript MCP服务器示例的启发
- 从传统烹饪来源编译的食谱数据
- 基于OWASP准则的安全实践
- 作者:金文
______________________________________________________________________
准备好用Rust烹饪了! 🦀🍳 您的高性能MCP服务器已准备好进行膳食计划和食谱访问。
