Rust MCP服务器
一个用Rust编写的模型上下文协议(MCP)服务器,为Rust项目提供AI辅助的代码分析工具。此服务器使AI代理能够对Rust代码库执行高级代码分析、导航和重构建议。
特性
- 文件分析:解析Rust文件并检查语法错误
- 工作区索引:构建全面的调用图、类型使用图和模块依赖关系图
- 代码导航:查找符号的定义和参考
- 代码气味检测:识别未使用的函数、长函数、高复杂度代码和god对象
- 重构建议:代码改进的自动建议
建筑
服务器使用:
- rmcp MCP协议处理机箱
- 同步 用于Rust AST解析
- 东京 用于异步操作
- 线程安全缓存 RwLock
- AST遍历的访问者模式
Docker部署
该项目包括Docker支持,便于部署:
- 多级Dockerfile:通过单独的构建和运行时阶段优化构建过程
- 夜锈:每晚使用Rust与最新的MCP SDK功能(2024版)兼容
- Docker Compose:开发和生产的简单编排
- 最小运行时映像:基于Debian slim,适用于较小的图像大小
- 无外露端口:MCP通信通过容器内的stdio进行
安装
先决条件
- Docker和Docker Compose(用于Docker Hub)
- Git(可选,用于开发)
- Rust 1.70+(仅当从源代码构建时)
备注对于大多数用户来说,Docker是唯一的要求。Docker镜像每晚使用Rust来支持最新的MCP SDK功能。
Docker Hub安装(推荐)
# Method 1: Direct run (downloads automatically)
docker run --rm -i mytheclipse/rust-mcp-server:latest
# Method 2: Pull first, then run
docker pull mytheclipse/rust-mcp-server:latest
docker run --rm -i mytheclipse/rust-mcp-server:latest
# Method 3: Using Docker Compose
docker run --rm -i -v $(pwd):/workspace mytheclipse/rust-mcp-server:latest开发安装
# Clone repository
git clone https://github.com/MythEclipse/rust-mcp-server.git
cd rust-mcp-server
# Run with Docker Compose (recommended for development)
docker-compose up --build
# Or build and run manually
docker build -t rust-mcp-server .
docker run --rm -i rust-mcp-server手动构建(高级用户)
如果您更喜欢从源代码构建:
先决条件
- Rust 1.70+(2024年版)
- 货物
从源代码构建
git clone https://github.com/MythEclipse/rust-mcp-server.git
cd rust-mcp-server
cargo build --release
./target/release/rust-mcp-server用法
运行MCP服务器
Docker Hub(推荐)
# Run the latest version from Docker Hub
docker run --rm -i mytheclipse/rust-mcp-server:latest
# Run with workspace volume mounting (for file analysis)
docker run --rm -i -v $(pwd):/workspace mytheclipse/rust-mcp-server:latest
# Run in background
docker run -d --name rust-mcp-server mytheclipse/rust-mcp-server:latest
# Stop background container
docker stop rust-mcp-server && docker rm rust-mcp-server使用Docker Compose进行开发
# Clone repository (for development)
git clone https://github.com/MythEclipse/rust-mcp-server.git
cd rust-mcp-server
# Run with hot reload
docker-compose up --build
# Run in background
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose down手动运行(高级)
如果你从源代码构建:
# Run the compiled binary
./target/release/rust-mcp-server
# Or run with Cargo
cargo runMCP协议集成
该服务器实现了模型上下文协议(MCP),并通过stdio使用JSON-RPC 2.0进行通信。它旨在与MCP兼容的客户端(如AI编码助手)集成。
可用工具
1.检查文件
解析并检查Rust文件的语法错误。
参数:
path:要检查的Rust文件的绝对路径
MCP呼叫示例:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "check_file",
"arguments": {
"path": "/path/to/your/file.rs"
}
}
}示例响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "File parsed successfully with no syntax errors."
}
]
}
}2.索引工作区
为目录中的所有Rust文件建立索引,并构建全面的分析图。
参数:
root:索引的根目录路径
MCP呼叫示例:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "index_workspace",
"arguments": {
"root": "/path/to/rust/project"
}
}
}退货:
- 调用图(函数关系)
- 类型使用图(使用类型的地方)
- 模块依赖关系图
- 功能信息(复杂性、行数、参数)
- 结构和枚举信息
- 未使用功能检测
- 重构建议
3.转到定义
查找符号的定义位置。
参数:
name:要查找定义的符号名称
MCP呼叫示例:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "goto_definition",
"arguments": {
"name": "MyStruct"
}
}
}4.查找参考文献
查找对符号的所有引用。
参数:
name:用于查找引用的符号名称
MCP呼叫示例:
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "find_references",
"arguments": {
"name": "my_function"
}
}
}实际使用示例
分析Rust项目
- 启动MCP服务器:
cargo run- 为您的工作空间建立索引 (在另一个终端或MCP客户端中):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "index_workspace",
"arguments": {
"root": "/home/user/my-rust-project"
}
}
}- 检查特定文件中的语法错误:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "check_file",
"arguments": {
"path": "/home/user/my-rust-project/src/main.rs"
}
}
}- 查找函数的定义位置:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "goto_definition",
"arguments": {
"name": "process_data"
}
}
}与AI助手集成
该服务器旨在与支持MCP的AI编码助手配合使用。以下是它通常的集成方式:
- AI助手启动MCP服务器 作为子流程
- 通过stdio进行通信 使用JSON-RPC 2.0
- 助手可以调用工具 分析代码、导航和获取建议
- 使用结果 提供智能代码辅助
命令行测试
您可以使用以下工具手动测试服务器 socat 或者通过编写一个简单的客户端。出于开发目的,您还可以使用内置测试:
# Run all tests
cargo test
# Run specific tool tests
cargo test test_index_workspace
cargo test test_check_file代码分析输出
当您为工作区建立索引时,服务器会返回全面的分析,包括:
功能分析:
- 长度超过50行的函数
- 复杂度>10的函数
- 具有>5个参数的函数
结构分析:
- 字段数>10的结构
- 包含>10个变体的枚举
依赖性分析:
- 调用>10个其他函数的函数
- 由>10个其他函数调用的函数
- 在>10个地方使用的结构(上帝对象)
未使用的代码:
- 从未被调用的私有函数
错误处理
服务器返回无效请求的结构化错误:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params",
"data": {
"details": "Path does not exist"
}
}
}发展
建筑
使用Docker
# Build the Docker image
docker build -t rust-mcp-server .
# Or use Docker Compose
docker-compose build手动构建
cargo build测试
使用Docker
# Run tests in Docker container (for development)
docker run --rm -v $(pwd):/app mytheclipse/rust-mcp-server:latest cargo test手动测试
cargo test开发工作流程
- 对代码进行更改
- 本地测试:
cargo test- 构建Docker镜像:
docker build -t rust-mcp-server .- 测试Docker镜像:
docker run rust-mcp-server代码分析功能
服务器执行几种类型的代码分析:
- 功能分析
- 行数检测(标记>50行) - 圈复杂度计算(标记>10) - 参数计数分析(标记>5个参数)
- 结构分析
- 大结构检测(>10个字段) - 大枚举检测(>10个变体)
- 相关性分析
- 函数调用了太多其他函数(>10个被调用者) - 被太多其他人调用的函数(>10个调用者) - 上帝对象检测(结构体在>10个地方使用)
- 未使用代码检测
- 从未被调用的私有函数
配置
MCP客户端配置
要将此MCP服务器与MCP兼容的客户端一起使用,请将其配置为运行Docker容器:
适用于克劳德桌面(Claude_Desktop_config.json)
{
"mcpServers": {
"rust-mcp-server": {
"command": "docker",
"args": ["run", "--rm", "mytheclipse/rust-mcp-server:latest"]
}
}
}适用于VS Code或其他MCP客户端
{
"mcpServers": {
"rust-mcp-server": {
"command": "docker",
"args": ["run", "--rm", "mytheclipse/rust-mcp-server:latest"]
}
}
}使用Docker Compose
如果你更喜欢使用Docker Compose:
{
"mcpServers": {
"rust-mcp-server": {
"command": "docker-compose",
"args": ["exec", "rust-mcp-server", "rust-mcp-server"],
"cwd": "/path/to/rust-mcp-server"
}
}
}配置参数
command:要运行的可执行文件(docker或docker-compose)args:传递给命令的参数数组cwd:当前工作目录-仅用于docker compose安装,应指向包含以下内容的目录docker-compose.yml
环境变量
服务器基本操作不需要任何环境变量。但是,您可以设置:
RUST_LOG:设置日志记录级别(例如。,info,debug,trace)
Docker镜像管理
# Build the image locally
docker build -t rust-mcp-server .
# Pull from Docker Hub
docker pull mytheclipse/rust-mcp-server:latest
# Run with custom environment variables
docker run -e RUST_LOG=debug mytheclipse/rust-mcp-server:latest
# Run with volume mounts (if you need to access host files)
docker run -v /host/path:/container/path mytheclipse/rust-mcp-server:latest发布到Docker Hub
有关如何将此映像推送到Docker Hub的详细说明,请参阅 .
Docker Hub的官方仓库是: mytheclipse/rust-mcp-server
配置选项
服务器使用默认配置,不需要额外的设置。当调用工具时,所有分析都是按需执行的。
贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保
cargo test通过 - 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
