mcplug
用于发现、调用和编写的Rust工具包 模型上下文协议(MCP) 服务器——作为CLI工具和库机箱。
不需要Node.js。没有npx。只是一个本地二进制文件。
特性
- 发现 配置在Cursor、Claude Desktop、Claude Code、VS Code、Windsurf、Codex和OpenCode中的MCP服务器
- 呼叫 任何具有灵活参数格式的命令行MCP工具
- OAuth 基于浏览器的受保护MCP服务器身份验证
- 守护进程 持久后台服务器连接模式
- 代码生成 --从MCP服务器模式发出Rust类型或独立CLI二进制文件
- 图书馆板条箱 --在您自己的Rust应用程序中嵌入MCP工具调用
安装
cargo install --path .或者从源代码构建:
cargo build --release快速开始
列出已配置的服务器
mcplug list列出特定服务器上的工具
mcplug list firecrawl调用工具
mcplug call firecrawl.crawl url:https://example.com速记(推断 call):
mcplug firecrawl.crawl url:https://example.com函数调用语法:
mcplug call 'firecrawl.crawl(url: "https://example.com")'临时连接(无需配置)
# HTTP/SSE endpoint
mcplug list --http-url https://mcp.example.com/mcp
# stdio server
mcplug list --stdio "npx -y some-mcp-server"配置
mcplug从以下位置读取配置(最高优先级优先):
- `--config
` CLI标志
MCPLUG_CONFIG环境变量./config/mcplug.json(项目级)~/.mcplug/mcplug.json(家庭层面)
它还读取mcporter配置文件作为迁移的后备方案。
配置格式
{
"mcpServers": {
"firecrawl": {
"baseUrl": "https://mcp.firecrawl.dev/mcp",
"headers": { "Authorization": "$env:FIRECRAWL_API_KEY" }
},
"local-tool": {
"command": "my-mcp-server",
"args": ["--port", "3000"]
}
},
"imports": ["cursor", "claude-code", "claude-desktop"]
}编辑器导入
mcplug会自动发现编辑器中配置的MCP服务器:
| 编辑器 | 配置路径 |
|---|---|
| 光标 | ~/.cursor/mcp.json |
| 克劳德桌面 | ~/Library/Application Support/Claude/claude_desktop_config.json |
| 克劳德代码 | ~/.claude/.mcp.json |
| VS代码 | ~/.vscode/mcp.json |
| 风帆冲浪 | ~/.windsurf/mcp.json |
| 食品法典委员会 | ~/.codex/mcp.json |
| OpenCode | ~/.opencode/mcp.json |
CLI命令
| 命令 | 描述 | |||
|---|---|---|---|---|
mcplug list [server] | 列出服务器上的服务器或工具 | |||
mcplug call [args] | 调用MCP工具 | |||
mcplug auth | 受保护服务器的OAuth登录 | |||
| `mcplug daemon start\ | stop\ | restart\ | status` | 管理持久后台服务器 |
mcplug generate-cli | 生成独立的CLI二进制文件 | |||
mcplug emit-rs | Emit Rust类型定义 | |||
| `mcplug config add\ | show` | 管理配置 |
使用 --json 任何用于机器可读输出的命令。
图书馆使用情况
添加到您的 Cargo.toml:
[dependencies]
mcplug = { path = "." }一枪呼叫
use mcplug::call_once;
let result = call_once("firecrawl", "crawl", json!({"url": "https://example.com"})).await?;
println!("{}", result.text());带连接池的运行时
use mcplug::Runtime;
let runtime = Runtime::from_config().await?;
let result = runtime.call_tool("context7", "resolve-library-id", json!({"libraryName": "react"})).await?;
runtime.close().await?;键入服务器代理
use mcplug::{Runtime, ServerProxy};
let runtime = Runtime::from_config().await?;
let chrome = ServerProxy::new(&runtime, "chrome-devtools");
let snapshot = chrome.call("takeSnapshot", json!({})).await?;测试
cargo test # run all tests (unit + integration)
cargo test --lib # unit tests only
cargo test --test cli_integration # specific integration suite304个测试,涵盖所有模块:参数解析、配置加载/合并、CLI命令、OAuth流、传输(stdio+HTTP)、运行时连接池、守护进程管理、代码生成和错误处理。
集成测试使用模拟MCP服务器二进制文件(tests/fixtures/mock_mcp_server.rs)通过stdio支持5个工具。CLI测试使用 assert_cmd 用于端到端二进制验证。
环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
MCPLUG_CONFIG | -- | 覆盖配置文件路径 |
MCPLUG_LIST_TIMEOUT | 30000 | 列表超时(毫秒) |
MCPLUG_CALL_TIMEOUT | 30000 | 呼叫超时(毫秒) |
MCPLUG_OAUTH_TIMEOUT_MS | 60000 | OAuth超时(毫秒) |
MCPLUG_LOG_LEVEL | warn | 记录详细信息 |
Claude代码插件
mcplug附带了 克劳德代码 在处理项目时提供上下文帮助的插件。
claude --plugin-dir /path/to/mcplug这使得:
- 技能 -关于CLI命令、配置和库API的上下文知识(通过相关问题自动激活)
- 命令 —
/mcplug:quickstart对于首次运行设置,/mcplug:troubleshoot用于诊断问题 - 代理 —
mcplug-guide通过咨询技能和源代码来回答诸如“我如何使用mcplug”之类的问题
致谢
mcplug的灵感来自 麦克波特,一个基于Node.js的MCP工具运行器。mcplug旨在为Rust生态系统带来与不依赖Node.js的单个原生二进制文件相同的功能。
许可证
麻省理工学院
