MCP Rust Crate最新版本服务器
赞助商
感谢DartNode提供的令人惊叹的VM服务器。
](https://dartnode.com/)
一个高性能的模型上下文协议(MCP)服务器,用于管理和查询crates.io中的Rust crate版本。此实现将最新的MCP标准与Rust的稀疏注册表协议相结合,以实现高效、生产就绪的crate版本管理。
📋 目录
- 🚀 快速开始 -几分钟内起床跑步
- 🎯 游标IDE集成 -在游标中配置MCP
- 🛠️ 可用的MCP工具 -核心功能
- 📊 演出 -基准和指标
- 🏗️ 建筑 -系统设计概述
- 🔄 请求流 -如何处理请求
- 🔧 技术细节 -深入实施
- 🧪 测试 -质量保证方法
- 📁 存储库结构 -项目组织机构
🚀 快速开始
先决条件
- 锈1.73或更高版本
- 货物
工作流入门
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 1. Clone/Setup │───▶│ 2. Build Project│───▶│ 3. Run Server │
│ │ │ │ │ │
│ git clone ... │ │ cargo build │ │ cargo run │
│ cd project/ │ │ --release │ │ --release │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ ✓ Rust 1.73+ │ │ ✓ Dependencies │ │ ✓ MCP Server │
│ ✓ Cargo ready │ │ ✓ Optimization │ │ ✓ stdio ready │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ 4. Test & Use │
│ │
│ • List tools │
│ • Query crates │
│ • Verify cache │
└─────────────────┘安装与运行
# Clone or navigate to this directory
cd /path/to/mcp-rust-get-crate-latest-version
# Build the project (includes optimizations)
cargo build --release
# Run the MCP server (communicates via stdio)
cargo run --release -- --log-level info快速验证
# 1. Run all tests
cargo test -- --test-threads=1 --nocapture
# 2. Test MCP protocol response
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | cargo run --release -- --log-level warn
# 3. Test crate version lookup
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "get_latest_version", "arguments": {"crate_name": "serde"}}}' | cargo run --release -- --log-level warn🎯 游标IDE集成
将此MCP服务器与Cursor IDE集成,以便在您的开发环境中直接访问Rust crate信息。这种集成使您的AI助手能够在您编码时查询机箱版本、检查依赖关系并提供实时机箱信息。
整合的好处
- 无缝工作流程:无需离开IDE即可查询机箱版本
- 人工智能辅助:让Cursor的代理帮助您查找和比较机箱版本
- 实时上下文:在开发过程中即时访问crate元数据
- 提高生产率:减少IDE和web浏览器之间的上下文切换
先决条件
- 游标IDE(推荐最新版本)
- 此MCP服务器已构建并可访问:
cargo build --release - 基本熟悉JSON配置文件
配置
方法1:全局配置(推荐)
全局配置MCP服务器以在所有Cursor项目中使用:
- 打开光标设置:
- 使用 ⌘ + , (macOS)或 Ctrl + , (Windows/Linux) - 引导到 MCP 章节 - 点击“添加新的全局MCP服务器”
- 添加服务器配置:
{
"mcpServers": {
"rust-crate-server": {
"command": "cargo",
"args": ["run", "--release", "--manifest-path", "/path/to/mcp-rust-get-crate-latest-version/Cargo.toml", "--", "--log-level", "warn"],
"env": {
"RUST_LOG": "warn",
"CRATE_REGISTRY_URL": "https://index.crates.io"
}
}
}
}重要:替换 /path/to/mcp-rust-get-crate-latest-version/ 与这个项目的实际路径。
方法2:项目特定配置
对于特定于项目的集成,请创建 .cursor/mcp.json 在项目根目录中:
{
"mcpServers": {
"rust-crate-server": {
"command": "cargo",
"args": ["run", "--release", "--manifest-path", "../mcp-rust-get-crate-latest-version/Cargo.toml", "--", "--log-level", "warn"],
"env": {
"RUST_LOG": "warn"
}
}
}
}替代方案:使用预构建二进制文件
如果你更喜欢直接使用编译后的二进制文件:
{
"mcpServers": {
"rust-crate-server": {
"command": "/path/to/mcp-rust-get-crate-latest-version/target/release/mcp-crate-server",
"args": ["--log-level", "warn"],
"env": {
"RUST_LOG": "warn",
"CRATE_REGISTRY_URL": "https://index.crates.io"
}
}
}
}环境变量
RUST_LOG:控制日志记录级别(调试、信息、警告、错误)CRATE_REGISTRY_URL:覆盖默认注册表URL(可选)
游标中的用法
1.启用代理模式
- 打开Cursor的聊天面板(
⌘ + L在macOS上,Ctrl + L在Windows/Linux上) - 确保你在 代理 模式(非聊天模式)
- MCP工具将自动对代理可用
2.验证集成
配置后,验证集成是否正常工作:
- 检查MCP状态:
- 转到光标设置→ MCP - 确保服务器显示为“正在运行”,并带有绿色指示灯 - 如果有问题,请检查服务器日志中的错误消息
- 使用简单查询进行测试:
What's the latest version of the "serde" crate?- 测试高级功能:
Can you get all versions of the "tokio" crate and show me the last 5 releases?3.工具审批流程
默认情况下,Cursor在运行MCP工具之前会请求批准:
- 手动审批:当提示允许代理查询机箱信息时,单击“使用工具”
- 自动运行:在光标设置中启用→ MCP → 自动运行工具,实现无缝操作
- 查看详情:单击工具名称旁边的箭头查看传递的参数
4.示例提示
以下是一些与集成MCP服务器一起使用的有效提示:
🔍 Version Queries:
- "What's the latest version of reqwest?"
- "Show me all versions of serde from the last year"
- "Is there a newer version of tokio available?"
📊 Dependency Analysis:
- "Compare the latest versions of async-std vs tokio"
- "What are the recent versions of clap?"
- "Find crates related to 'json parsing'"
🚀 Development Workflow:
- "Check if any of my dependencies have updates available"
- "What's the latest stable version of rust crate X?"
- "Search for crates that might replace library Y"5.工作流集成
MCP集成在以下情况下效果最佳:
- 在开发过程中:编码时询问机箱版本
- 依赖关系更新:获取Cargo.toml更新的实时版本信息
- 代码评审:验证依赖关系版本并检查更新
- 研究:探索替代板条箱及其最新版本
故障排除
常见问题及解决方法
❌ 服务器未运行
- 问题:MCP服务器显示为“未运行”或有红色指示灯
- 解决方案:
- 验证配置中的路径是否正确 - 确保项目建成: cargo build --release - 检查Cursor的MCP日志以了解特定的错误消息 - 尝试手动运行服务器进行测试: cargo run --release
❌ 路径找不到
- 问题:“找不到命令”或“路径不存在”错误
- 解决方案:
- 在配置中使用绝对路径 - 验证货物是否在您的系统PATH中 - 对于预构建的二进制文件,请确保该文件是可执行的: chmod +x target/release/mcp-crate-server
❌ 工具不可用
- 问题:代理看不到或使用MCP工具
- 解决方案:
- 确认您已加入 代理 模式(非聊天模式) - 在游标设置中检查MCP服务器状态 - 配置更改后重新启动Cursor IDE - 验证JSON配置语法是否有效
❌ 权限不足
- 问题:由于权限问题,服务器无法启动
- 解决方案:
- 检查二进制文件的文件权限 - 确保项目目录可访问 - 跑 cargo clean && cargo build --release 重建
❌ 网络/注册表问题
- 问题:板条箱查询失败或超时
- 解决方案:
- 检查互联网连接 - 验证 CRATE_REGISTRY_URL 环境变量 - 检查公司防火墙是否阻止对crates.io的访问 - 尝试使用不同的日志级别进行调试: RUST_LOG=debug
高级调试
- 启用调试日志记录:
"env": {
"RUST_LOG": "debug"
}- 手动服务器测试:
# Test the server manually
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | cargo run --release- 检查游标日志:
- 转到光标设置→ MCP - 查看服务器日志和错误消息 - 查找连接或协议错误
获取帮助
- 光标MCP文档: MCP官方指南
- 问题报告:报告包含详细错误日志和配置的问题
- 社区支持:查看Cursor的社区论坛,了解与MCP相关的讨论
🔧 MCP配置解决方案
如果你正在经历 JSON解析错误 或 “没有可用的工具” Cursor IDE的问题,这可能是由于货物构建输出污染了MCP通信流。我们提供多种配置解决方案来解决这个问题。
快速修复(推荐)
问题:游标显示JSON模式验证错误,因为 cargo run 输出构建干扰MCP协议通信的消息。
解决方案:使用我们预先配置的直接二进制设置立即解决问题。
步骤1:复制生产配置
复制以下内容 mcp-production.json 到你的 ~/.cursor/mcp.json:
{
"mcpServers": {
"rust-crate-server": {
"command": "/Users/lqiao/Downloads/codes/_topic-mcp/_my__mcp-rust-get-crate-latest-version/target/release/mcp-crate-server",
"args": ["--log-level", "info"],
"env": {}
}
}
}重要:更新路径以匹配您的实际安装位置。
步骤2:重新启动游标
- 完全关闭游标IDE
- 重新打开光标
- 检查MCP工具面板-您应该看到 “3个可用工具”
配置选项
我们为不同的用例提供多种MCP配置模板:
mcp-production.json:直接二进制执行(最快、最可靠)mcp-development.json:使用包装脚本进行开发工作流mcp-debug.json:启用调试日志以进行故障排除MCP-CONFIGURATION.md:全面的设置指南,包括故障排除
开发工作流程
对于主动开发,请使用包装器脚本配置:
{
"mcpServers": {
"rust-crate-server": {
"command": "/path/to/project/mcp-development.sh",
"args": ["--log-level", "info"],
"env": {}
}
}
}这提供了自动重建,同时保持了清洁的MCP通信。
验证
应用任何配置后:
- 检查连接:光标应将“rust crate服务器”显示为“已连接”
- 验证工具:MCP面板应显示“3个可用工具”
- 测试功能:试着问“serde的最新版本是什么?”
有关详细的配置说明、故障排除和高级设置,请参阅 MCP-CONFIGURATION.md.
🛠️ 可用的MCP工具
get_latest_version
获取Rust crate的最新版本。
参数:
crate_name(必填):要检查的板条箱名称include_yanked(可选):是否包含洋基版本(默认:false)
例子:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_latest_version",
"arguments": {"crate_name": "serde"}
}
}get_all_versions
获取Rust crate的所有版本,按版本排序。
参数:
crate_name(必填):要检查的板条箱名称limit(可选):要返回的最大版本数(默认值:20,最大值:100)
search_crates
按名称或关键字搜索Rust crates(占位符实现)。
参数:
query(必填):搜索查询limit(可选):最大结果数(默认值:10,最大值:50)
get_latest_versions_batch
在单个请求中获取多个Rust crates的最新版本。支持并行处理以提高性能。
参数:
crate_names(必填):要检查的板条箱名称数组(最小值:1,最大值:50)include_yanked(可选):是否包含洋基版本(默认:false)
例子:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_latest_versions_batch",
"arguments": {
"crate_names": ["serde", "tokio", "anyhow"],
"include_yanked": false
}
}
}优点:
- 同时处理多个板条箱,而不是单独的请求
- 通过并行处理减少网络开销
- 一致的部分故障处理-即使某些查询失败,也会返回成功的查询
- 缓存感知:利用现有缓存基础架构实现最佳性能
📊 性能特征
缓存与无缓存性能
Response Time (ms)
│
1000 ├─────────────────────────────────────────────
│ WITHOUT CACHE ░░
800 ├─────────────────────────────────────────░░░░
│ ░░░░
600 ├─────────────────────────────────────░░░░
│ ░░░░
400 ├─────────────────────────────────░░░░ Cache Miss: 200-500ms
│ ░░░░ │
200 ├─────────────────────────────░░░░ │
│ ░░░░ ▼
1 ├███████████████████████████░░ ████
│ WITH CACHE ████ Cache Hit: 90% code coverage
└─────────────────────────────────────────┘
Test Coverage Distribution:
• Unit Tests: 70% of total tests │ ████████████████████████████████████████
• Integration Tests: 20% of total tests │ ███████████████████
• Performance Tests: 5% of total tests │ ████
• E2E Tests: 5% of total tests │ ████测试执行
- 单元测试:单个功能测试,覆盖率>90%
- 集成测试:MCP协议合规性和组件交互
- 性能测试:延迟和吞吐量基准测试
- 端到端测试:真正的MCP客户端集成
使用以下工具运行测试:
cargo test -- --test-threads=1 --nocapture📈 性能基准
| 场景 | 缓存命中 | 缓存未命中 | 改进 |
|---|---|---|---|
| 单机箱查找 | \<1ms | 200-500ms | 200500x快 |
| 10个并发请求 | ~10ms | ~300ms | 快30倍 |
| 开发工作流程 | 85-95%的命中率 | N/A | 显著 |
🐳 容器部署
FROM rust:1.73-slim as builder
WORKDIR /app
COPY Cargo.toml Cargo.lock ./
COPY src ./src
RUN cargo build --release
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/mcp-crate-server /usr/local/bin/
CMD ["mcp-crate-server"]🤝 贡献
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 确保所有测试通过:
cargo test - 提交拉取请求
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件。
🔗 相关项目
______________________________________________________________________
研究项目:此实现是对MCP协议与Rust生态系统工具集成进行全面研究的一部分。有关详细的分析和发现,请参阅研究文档。
