🚀 Poly MCP
Poly MCP 是一个全面的 MCP(模型上下文协议)服务器,涵盖 11 个模块的 73 种工具,包括文件系统操作、诊断、脚本编写、时间管理、网络实用工具、上下文处理、git 操作、用户输入、以代理为中心的版本控制、会话剪贴板以及文本/数据转换。
🚀 快速开始
Poly MCP 支持两种传输模式:stdio(默认)和 HTTP 服务器。
Stdio 模式(默认)
使用标准输入/输出运行服务器(原始 MCP 行为):
poly-mcp
服务器通过标准输入/输出上的 JSON-RPC 2.0 按照 MCP 协议进行通信。这对于管道命令或与期望标准输入/输出通信的工具集成很有用。
示例:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | poly-mcp
HTTP 服务器模式
在特定端口上作为 HTTP 服务器运行:
poly-mcp --server --port 3000
选项:
--server 或 -s - 启用 HTTP 服务器模式
--port <PORT> 或 -p <PORT> - 绑定的端口(默认:3000)
--host <HOST> - 绑定的主机(默认:127.0.0.1)
使用示例:
poly-mcp --server
poly-mcp --server --port 8080
poly-mcp --server --host 0.0.0.0 --port 3000
HTTP 端点:
POST / 或 POST /jsonrpc - JSON-RPC 2.0 端点
GET /health - 健康检查端点
示例 HTTP 请求:
curl -X POST http://localhost:3000/jsonrpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "fs_read",
"arguments": {"path": "/etc/hosts"}
}
}'
健康检查:
curl http://localhost:3000/health
MCP 协议消息
初始化:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}
列出工具:
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}
调用工具:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "fs_read",
"arguments": {
"path": "/path/to/file.txt"
}
}
}
✨ 主要特性
1. 文件系统模块
具备快照管理、搜索和批量编辑功能的高级文件和目录操作:
- fs_read - 读取文件内容(可选行范围)
- fs_write - 将内容写入文件(可选行范围)
- fs_move - 移动文件或目录
- fs_copy - 递归复制文件或目录
- fs_create - 创建文件或目录
- fs_delete - 删除文件或目录
- fs_move_desktop - 整理桌面目录中的项目
- fs_find - 使用模式匹配搜索文件
- fs_ld - 详细的目录列表(如 ls -la)
- fs_stat - 获取文件/目录元数据
- fs_permissions - 获取或设置 Unix 文件权限
- fs_watch - 监控文件/目录更改
- fs_snapshot - 创建带自动管理的时间戳备份
- fs_tree - 具有深度控制和模式过滤的可视化目录树
- fs_grep - 使用上下文行在文件中进行正则表达式内容搜索
- fs_tail - 读取文件的最后 N 行
- fs_replace - 使用正则表达式在文件中进行批量查找/替换,并支持预运行
2. 诊断模块
与语言无关的错误和警告检测:
- diagnostics_get - 获取文件或项目的错误/警告
- 自动检测合适的诊断工具(cargo、tsc、eslint、pylint 等)
- 支持 Rust、TypeScript/JavaScript、Python、C/C++
- 将编译器/代码检查器的输出解析为结构化 JSON
3. 静默模块
Bash 脚本编写和系统资源监控:
- silent_script - 执行带有参数、环境变量和超时的 Bash 脚本
- silent_resources - 监控 GPU/RAM/CPU 使用情况,并提供详细的进程信息
- 支持使用 nvidia-smi 进行 GPU 监控
- 按资源使用情况对进程进行过滤和排序
4. 时间模块
时间管理、调度和计时:
- time_now - 以多种格式(Unix、ISO8601、RFC3339、自定义)获取当前时间戳
- time_sleep - 以可配置的持续时间延迟执行
- time_schedule - 内存中的任务调度器,支持创建/取消/列出/状态操作
- time_timezone - 在 IANA 时区之间转换时间戳,列出可用时区
- time_stopwatch - 带命名的秒表,支持开始/停止/圈数/重置/状态/列出操作
- time_timer - 倒计时计时器,支持检查/取消/列出操作
- time_alarm - 按时间或偏移量设置闹钟,支持检查/取消/列出操作
5. 网络模块
HTTP 请求和包注册表查询:
- net_fetch - 获取 URL 并自动将 HTML 转换为 Markdown
- net_cargo - 查询 crates.io 获取 Rust 包信息
- net_node - 查询 npm 注册表获取 Node.js 包信息
- net_python - 查询 PyPI 获取 Python 包信息
- net_apt - 查询 APT 包信息
- net_ping - 检查网络连接并提供统计信息
6. 上下文模块
为大语言模型进行令牌计数和上下文管理:
- ctx_context - 跟踪令牌使用情况(总数/已使用/剩余)
- ctx_compact - 使用 zlib/gzip 算法压缩文本
- ctx_remove - 清除上下文并重置使用情况
- ctx_token_count - 为各种大语言模型提供商(GPT - 4、Claude 等)计算令牌数
- ctx_memory_store - 在内存中存储数据(进程生命周期内)
- ctx_memory_recall - 检索存储的数据
- ctx_estimate_cost - 估算 Anthropic、OpenAI、Ollama、GLM 的 API 成本
7. Git 模块
通过 libgit2 进行完整的 git 操作:
- git_status - 显示仓库状态,包括已暂存/未暂存/未跟踪的文件
- git_diff - 以补丁格式查看更改
- git_commit - 创建提交
- git_branch - 列出、创建或删除分支
- git_checkout - 切换分支或提交
- git_blame - 逐行显示作者信息
- git_log - 查看提交历史
- git_tag - 管理标签(轻量级和带注释的)
8. 输入模块
用户交互和通知:
- input_notify - 发送终端和桌面通知
- input_prompt - 交互式文本提示(终端或 MCP)
- input_select - 选择菜单(终端或 MCP)
- input_progress - 显示进度条
- input_clipboard_read - 从系统剪贴板读取内容
- input_clipboard_write - 向系统剪贴板写入内容
9. Gitent 模块
以代理为中心的版本控制跟踪:
- gitent_init - 初始化或连接到跟踪会话
- gitent_status - 查看会话和未提交的更改
- gitent_track - 手动跟踪文件更改(创建/修改/删除/重命名)
- gitent_commit - 用消息提交跟踪的更改
- gitent_log - 查看提交历史
- gitent_diff - 以统一或结构化格式查看差异
- gitent_rollback - 回滚到上一次提交(默认预览模式)
在 AI 代理操作期间跟踪文件更改、创建提交、查看历史记录和执行回滚操作。
10. 剪贴板模块
基于会话的复制/粘贴,支持标签以节省令牌:
- clip_copy_file - 将文件中的文本(可选行范围)复制到会话剪贴板并添加标签
- clip_copy - 将任意文本直接复制到会话剪贴板并添加标签
- clip_paste_file - 将带标签的内容粘贴到文件中(覆盖/追加/前置/行替换)
- clip_paste - 检索带标签的内容或列出所有存储的条目及其元数据
- clip_clear - 清除一个或所有剪贴板条目
11. 转换模块
文本和数据处理实用工具:
- transform_diff - 比较两个文本或文件,并以统一/内联/统计输出
- transform_encode - 对 base64、URL、十六进制、HTML 实体进行编码/解码
- transform_hash - 对文本或文件进行加密哈希(SHA256、SHA512、MD5、BLAKE3)
- transform_regex - 正则表达式操作:匹配、查找所有、替换、拆分、提取捕获组
- transform_json - JSON 操作:美化、压缩、验证、查询、合并、获取键、扁平化
- transform_text - 文本转换:大小写转换、排序/反转/去重/修剪/编号行、换行、截断、统计
- transform_archive - 创建、提取和列出 zip 和 tar.gz 存档
📦 安装指南
cargo add poly-mcp
💻 使用示例
读取文件
{
"name": "fs_read",
"arguments": {"path": "/etc/hosts"}
}
读取特定行范围
{
"name": "fs_read",
"arguments": {
"path": "/var/log/app.log",
"lines": [[1, 10], [50, 60]]
}
}
写入特定行范围
{
"name": "fs_write",
"arguments": {
"path": "/tmp/config.txt",
"content": "# Header v2\nversion=2.0",
"lines": [[1, 2]]
}
}
创建快照
{
"name": "fs_snapshot",
"arguments": {
"path": "/important/project",
"max_snapshots": 5
}
}
运行诊断
{
"name": "diagnostics_get",
"arguments": {"path": "./src"}
}
执行 Bash 脚本
{
"name": "silent_script",
"arguments": {
"script": "#!/bin/bash\necho 'Hello World'\nls -la",
"timeout": 30
}
}
监控资源
{
"name": "silent_resources",
"arguments": {
"detailed": true,
"process_filter": "rust"
}
}
以 Markdown 格式获取 URL
{
"name": "net_fetch",
"arguments": {
"url": "https://example.com",
"convert_to_markdown": true
}
}
获取最新包版本
{
"name": "net_cargo",
"arguments": {
"crate_name": "tokio",
"action": "latest"
}
}
计算令牌数
{
"name": "ctx_token_count",
"arguments": {
"text": "Your text here",
"model": "gpt-4"
}
}
估算 API 成本
{
"name": "ctx_estimate_cost",
"arguments": {
"provider": "anthropic",
"model": "claude-3-opus",
"input_tokens": 1000,
"output_tokens": 500
}
}
Git 操作
{
"name": "git_status",
"arguments": {"path": "."}
}
{
"name": "git_commit",
"arguments": {
"message": "feat: add new feature",
"author_name": "Developer",
"author_email": "dev@example.com"
}
}
发送通知
{
"name": "input_notify",
"arguments": {
"title": "Build Complete",
"message": "Your project has been built successfully!",
"type": "both",
"urgency": "normal"
}
}
剪贴板操作
{
"name": "input_clipboard_write",
"arguments": {"content": "Hello from Poly MCP!"}
}
Gitent 操作
{
"name": "gitent_init",
"arguments": {"path": "./my-project"}
}
{
"name": "gitent_track",
"arguments": {
"path": "src/main.rs",
"change_type": "modify",
"content": "fn main() { println!(\"Updated\"); }",
"agent_id": "claude"
}
}
{
"name": "gitent_commit",
"arguments": {
"message": "Updated main function",
"agent_id": "claude"
}
}
{
"name": "gitent_log",
"arguments": {"limit": 10, "verbose": true}
}
{
"name": "gitent_rollback",
"arguments": {
"commit_id": "abc123...",
"execute": false
}
}
📄 许可证
本项目采用 MIT 许可证。
🤝 贡献
欢迎贡献代码!请提交问题或拉取请求。