fcp锈
通过Rust分析器为Rust代码库提供MCP服务器。
它的作用
fcp-rust允许LLM通过意图级命令导航、检查和重构rust代码。LLM发送以下操作,而不是读取原始源文件 find Config @kind:struct 或 rename old_name new_name @file:main.rs fcp-rust将它们通过锈迹分析仪的LSP进行路由,以获得准确、项目感知的结果。建立在 FCP 框架。
使用Rust编写 rmcp 用于MCP传输和锈蚀分析仪作为语言智能后端。
快速示例
rust_session('open /path/to/my-project')
rust_query('find Config @kind:struct')
rust_query('refs Config @file:main.rs')
rust_query('diagnose')
rust([
'rename old_handler handle_request @file:routes.rs',
'generate Display @struct:Config',
])
rust_query('map')
可用的MCP工具
| 工具 | 目的 |
|---|
rust(ops) | 批量突变——重命名、提取、内联、生成、导入 |
rust_query(q) | 检查代码库——查找、定义、引用、符号、诊断、映射 |
rust_session(action) | 生命周期——打开、状态、关闭 |
rust_help() | 完整参考卡 |
enrich(path) | 从单个.rs文件中提取诊断和符号(不需要会话) |
动词引用--导航
| 动词 | 语法 |
|---|
find | find QUERY [kind:KIND] [@selectors...] |
def | def SYMBOL [@selectors...] |
refs | refs SYMBOL [@selectors...] |
symbols | symbols PATH [kind:KIND] |
impl | impl SYMBOL [@selectors...] |
动词参考——检查
| 动词 | 语法 |
|---|
diagnose | diagnose [PATH] [@all] |
inspect | inspect SYMBOL [@selectors...] |
callers | callers SYMBOL [@selectors...] |
callees | callees SYMBOL [@selectors...] |
map | map |
unused | unused [@file:PATH] |
动词指称——变异
| 动词 | 语法 |
|---|
rename | rename SYMBOL NEW_NAME [@selectors...] |
extract | extract FUNC_NAME @file:PATH @lines:N-M |
inline | inline SYMBOL [@selectors...] |
generate | generate TRAIT @struct:NAME |
import | import SYMBOL @file:PATH @line:N |
动词引用--会话
| 动词 | 语法 |
|---|
open | open PATH |
status | status |
close | close |
选择器
@file:PATH Filter by file path substring
@struct:NAME Filter by containing struct
@trait:NAME Filter by containing trait
@kind:KIND Filter by symbol kind (function, struct, enum, etc.)
@module:NAME Filter by module name
@line:N Filter by exact line number
@lines:N-M Line range (for extract)
安装
从源代码构建
cargo install --git https://github.com/os-tack/fcp-rust
MCP客户端配置
{
"mcpServers": {
"fcp-rust": {
"command": "fcp-rust"
}
}
}
建筑
src/main.rs MCP server — 4 tools, stdio transport
│
src/mcp/ MCP integration
├── server.rs RustServer (rmcp tool handlers)
└── params.rs Request/response types
│
src/domain/ Domain layer
├── verbs.rs Verb registration (query + mutation + session)
├── model.rs RustModel (workspace state, LSP client, symbol index)
├── query.rs Query handlers (find, def, refs, diagnose, map, etc.)
├── mutation.rs Mutation handlers (rename, extract, inline, generate)
└── format.rs Output formatting
│
src/resolver/ Symbol resolution
├── selectors.rs @file, @struct, @trait, @kind, @module, @line, @lines
├── index.rs In-memory SymbolIndex
├── pipeline.rs Multi-tier resolution (index → LSP → tree-walk)
└── fuzzy.rs Fuzzy matching
│
src/lsp/ rust-analyzer integration
├── client.rs JSON-RPC client
├── transport.rs stdio transport
├── types.rs LSP type definitions
├── workspace_edit.rs Apply edits to disk
└── lifecycle.rs Server lifecycle management
│
src/fcpcore/ FCP framework (Rust port)
├── tokenizer.rs DSL tokenizer
├── parsed_op.rs Operation parser
├── verb_registry.rs Verb spec registry + reference card
├── event_log.rs Event sourcing (undo/redo)
├── session.rs Session lifecycle
└── formatter.rs Response formatter
发展
cargo test # Run all tests
cargo build # Build binary
cargo clippy # Run lints
许可证
麻省理工学院