🔧 JARVIS MCP工具包

  
在6-GPU集群上为自主AI代理提供88+MCP处理程序
建筑
graph LR
Agent[AI Agent] --> MCP{MCP Protocol}
MCP --> DB[Database 15]
MCP --> FS[Filesystem 12]
MCP --> API[API Bridge 18]
MCP --> GPU[GPU Mgmt 8]
MCP --> Voice[Voice 10]
MCP --> Trade[Trading 12]
MCP --> Browser[Browser 8]
MCP --> System[Monitor 5]88按类别分类的处理者
| 类别 | 计数 | 关键操作 |
|---|---|---|
| 数据库 | 15 | CRUD、搜索、分析、备份、迁移 |
| 文件系统 | 12 | 读、写、看、树、备份、同步 |
| API大桥 | 18 | REST代理、WebSocket、MCP中继、身份验证 |
| GPU管理 | 8 | VRAM、散热、模型加载/卸载、基准测试 |
| 语音 | 10 | STT(耳语)、TTS、命令、唤醒词 |
| 交易 | 12 | MEXC、信号、共识、TP/SL、投资组合 |
| 浏览器 | 8 | CDP导航、点击、填充、截图、抓取 |
| 系统 | 5 | 运行状况、日志、警报、指标、重启 |
快速开始
from jarvis_mcp import MCPServer
server = MCPServer(handlers="all")
server.start(port=8901)
# 88 tools now available via MCP protocol整合
适用于任何兼容MCP的客户端:
- 克劳德代码 --via
.mcp.json - Gemini CLI --via
settings.json - 浏览器 --原生MCP支持
- 自定义代理 --via
core.router.dispatcher
部分 贾维斯
什么是MCP?
模型上下文协议 是AI代理与外部工具交互的标准。MCP提供了一个统一的接口,而不是为每个工具编写自定义集成,就像用于AI的USB一样。
JARVIS MCP工具包提供 88+即用型处理器 让任何AI代理:
- 读/写数据库
- 控制浏览器
- 管理GPU资源
- 执行语音命令
- 监控系统健康状况
- 墨西哥商品交易所交易
使用示例
# Example 1: AI agent uses database tool
agent.call_tool("db_query", {
"database": "jarvis-master",
"sql": "SELECT * FROM codeur_offers"
})
# → Returns 6 offers
# Example 2: AI agent controls browser
agent.call_tool("browser_navigate", {
"url": "https://codeur.com/projects"
})
agent.call_tool("browser_screenshot", {})
# → Returns screenshot of the page
# Example 3: AI agent checks GPU
agent.call_tool("gpu_status", {})
# → {gpu0: {temp: 52, vram: 9.6/12GB}, ...}为何选择88位处理者?
大多数MCP工具包提供5-10个工具。JARVIS需要 全面覆盖 因为它管理着整个基础设施:数据库、GPU集群、语音管道、交易引擎、浏览器自动化和监控——所有这些都可以通过单一协议访问。
MCP在JARVIS中的工作原理
sequenceDiagram
participant Agent as AI Agent
participant MCP as MCP Server
participant Handler as Handler (88+)
participant System as System Resource
Agent->>MCP: call_tool("db_query", {sql: "SELECT..."})
MCP->>Handler: Route to database handler
Handler->>System: Execute SQL query
System-->>Handler: Results
Handler-->>MCP: Formatted response
MCP-->>Agent: Tool result真实集成示例
使用克劳德代码
// .mcp.json
{
"mcpServers": {
"jarvis": {
"command": "python3",
"args": ["-m", "jarvis_mcp", "--port", "8901"]
}
}
}
// Now Claude Code can: query DBs, control browser, check GPU, run scripts使用Gemini CLI
// ~/.gemini/settings.json
{
"mcpServers": {
"jarvis-mcp": {
"command": "python3",
"args": ["-m", "jarvis_mcp"],
"timeout": 30000
}
}
}使用自定义Python代理
from jarvis_mcp import MCPClient
client = MCPClient("http://localhost:8901")
# List all available tools
tools = client.list_tools()
# → 88 tools: db_query, browser_navigate, gpu_status, voice_command, ...
# Call any tool
result = client.call("gpu_status")
# → {gpu0: {temp: 52, vram: "9.6/12GB"}, gpu1: ...}
# Chain tools
data = client.call("db_query", {"sql": "SELECT * FROM codeur_offers"})
client.call("telegram_send", {"message": f"Found {len(data)} offers"})Handler深潜
数据库处理程序(15)
db_query — Execute read-only SQL
db_insert — Insert with validation
db_tables — List all tables
db_schema — Get table schema
db_export — Export to JSON/CSV
db_health — Check integrity
db_backup — Create backup copy
db_search — Full-text search
db_stats — Row counts, sizes
db_migrate — Schema migration
...GPU处理器(8)
gpu_status — Temperature, VRAM, utilization
gpu_models — List loaded models
gpu_load — Load a model
gpu_unload — Free VRAM
gpu_benchmark — Speed test
gpu_thermal — Thermal throttle check
gpu_allocate — Reserve VRAM for task
gpu_optimize — Suggest optimal allocation______________________________________________________________________
许可证
MIT许可证——个人和商业用途免费。
作者
弗兰克·德尔马斯 --AI系统架构师
部分 贾维斯 生态系统。
______________________________________________________________________
完整处理程序参考
数据库处理程序(15)
| 处理程序 | 描述 | 访问 |
|---|---|---|
db_query | 对任何托管数据库执行只读SQL查询 | 只读 |
db_insert | 插入具有模式验证和类型检查的记录 | 写入 |
db_update | 使用WHERE子句强制更新现有记录 | 写入 |
db_delete | 删除带有强制确认提示的记录 | 写入(确认) |
db_tables | 列出指定数据库中的所有表 | 只读 |
db_schema | 返回表的列名、类型和约束 | 只读 |
db_export | 将表或查询结果导出为JSON或CSV格式 | 只读 |
db_health | 检查数据库完整性(PRAGMA完整性检查) | 只读 |
db_backup | 创建数据库文件的带时间戳的备份副本 | 写入 |
db_search | 在表中的所有文本列中进行全文搜索 | 只读 |
db_stats | 返回行数、文件大小和上次修改的时间戳 | 只读 |
db_migrate | 从迁移文件应用架构迁移 | 写入(确认) |
db_vacuum | 回收未使用的空间并优化数据库文件 | 写入 |
db_index | 创建或删除性能调优索引 | 写入 |
db_attach | 为跨数据库查询附加辅助数据库 | 只读 |
文件系统处理程序(12)
| 处理程序 | 描述 | 访问 |
|---|---|---|
fs_read | 使用可选编码检测读取文件内容 | 只读 |
fs_write | 通过创建备份将内容写入文件 | 写入 |
fs_list | 使用可选筛选列出目录内容 | 只读 |
fs_tree | 生成深度高达N级的目录树结构 | 只读 |
fs_watch | 监视文件或目录的更改(inotify) | 只读 |
fs_copy | 复制带有进度报告的文件或目录 | 写入 |
fs_move | 移动或重命名文件和目录 | 写入 |
fs_delete | 删除带有强制确认提示的文件 | 写入(确认) |
fs_search | 按名称、大小或修改日期进行递归文件搜索 | 只读 |
fs_backup | 创建目录的压缩备份存档 | 写入 |
fs_sync | 目录或节点之间基于Rsync的同步 | 写入 |
fs_permissions | 查看或修改文件权限和所有权 | 写入 |
API桥接器(18)
| 处理程序 | 描述 | 访问 |
|---|---|---|
api_get | 带有可配置标头和超时的HTTP GET请求 | 只读 |
api_post | 使用JSON或表单体的HTTP POST请求 | 写入 |
api_put | HTTP PUT资源更新请求 | 写入 |
api_delete | 带确认的HTTP DELETE请求 | 写入(确认) |
api_ws_connect | 打开指向指定URL的WebSocket连接 | 写入 |
api_ws_send | 通过活动的WebSocket连接发送消息 | 写入 |
api_ws_listen | 监听WebSocket上的消息(有超时) | 只读 |
api_mcp_relay | 将MCP呼叫转发到远程MCP服务器 | 写入 |
api_mcp_list | 列出远程MCP服务器上可用的工具 | 只读 |
api_auth_token | 检索或刷新OAuth2令牌 | 只读 |
api_auth_basic | 为后续请求设置基本身份验证凭据 | 写入 |
api_proxy | 通过SOCKS5或HTTP代理代理请求 | 写入 |
api_cache_get | 按键检索缓存的API响应 | 只读 |
api_cache_set | 在本地缓存中存储API响应 | 写入 |
api_cache_clear | 按前缀或年龄清除缓存响应 | 写入 |
api_rate_status | 检查给定API的当前费率限制状态 | 只读 |
api_webhook_register | 为传入数据注册webhook端点 | 写入 |
api_graphql | 对任何端点执行GraphQL查询 | 只读 |
GPU管理处理器(8)
| 处理程序 | 描述 | 访问 |
|---|---|---|
gpu_status | 返回温度、VRAM使用率、所有GPU的利用率 | 只读 |
gpu_models | 列出当前加载的VRAM分配模型 | 只读 |
gpu_load | 使用VRAM预检查将模型加载到特定GPU上 | 写入(确认) |
gpu_unload | 卸载模型以释放VRAM | 写入 |
gpu_benchmark | 在加载的模型上运行推理速度测试 | 只读 |
gpu_thermal | 检查热节流状态和风扇转速 | 只读 |
gpu_allocate | 为即将到来的任务保留VRAM | 写入 |
gpu_optimize | 建议GPU分配的最佳模型 | 只读 |
语音处理器(10)
| 处理程序 | 描述 | 访问 |
|---|---|---|
voice_stt | 使用Whisper将音频转录为文本 | 只读 |
voice_tts | 从文本生成语音音频 | 写入 |
voice_wake | 激活唤醒词检测监听器 | 写入 |
voice_command | 解析并执行语音命令字符串 | 写入 |
voice_list_commands | 列出所有已注册的语音命令 | 只读 |
voice_intent | 从语音记录中分类意图 | 只读 |
voice_feedback | 播放音频反馈(确认蜂鸣声、错误提示音) | 写入 |
voice_record | 从麦克风开始/停止录音 | 写入 |
voice_language | 设置或获取活动语音语言 | 编写 |
voice_calibrate | 校准麦克风噪声基底 | 写入 |
交易处理人员(12)
| 处理程序 | 描述 | 访问 |
|---|---|---|
trade_price | 获取MEXC交易对的当前价格 | 只读 |
trade_orderbook | 获取一对订单的深度 | 只读 |
trade_signal | 使用AI共识生成买入/卖出/持有信号 | 只读 |
trade_execute | 下达市价单或限价单 | 写(确认) |
trade_cancel | 取消未结订单 | 写入(确认) |
trade_portfolio | 返回当前投资组合余额 | 只读 |
trade_history | 获取一对或一个时间范围的交易历史记录 | 只读 |
trade_tp_sl | 设置头寸的止盈和止损 | 写 |
trade_pnl | 计算未结头寸的损益 | 只读 |
trade_alert | 为货币对和阈值设置价格警报 | 写入 |
trade_consensus | 查询多个交易共识模型 | 只读 |
trade_backtest | 对历史数据进行策略回溯测试 | 只读 |
浏览器处理程序(8)
| 处理程序 | 描述 | 访问 |
|---|---|---|
browser_navigate | 将浏览器选项卡导航到URL | 写入 |
browser_click | 通过CSS选择器单击元素 | 写入 |
browser_fill | 按选择器和值填写表单字段 | 写入 |
browser_screenshot | 捕获整个页面或元素的屏幕截图 | 只读 |
browser_scrape | 从当前页面提取结构化数据 | 只读 |
browser_execute | 在页面上下文中执行JavaScript | 编写 |
browser_tabs | 列出所有打开的浏览器选项卡 | 只读 |
browser_close | 关闭特定浏览器选项卡 | 写入 |
系统处理程序(5)
| 处理程序 | 描述 | 访问 |
|---|---|---|
sys_health | 返回系统运行状况(CPU、RAM、磁盘、正常运行时间) | 只读 |
sys_logs | 使用可选级别筛选器获取最近的日志条目 | 只读 |
sys_alerts | 列出活动警报及其严重性 | 只读 |
sys_metrics | 返回所有服务的Prometheus风格指标 | 只读 |
sys_restart | 按名称重新启动托管服务 | 写入(确认) |
______________________________________________________________________
故障排除指南
常见问题
问题:MCP服务器无法启动
Error: Port 8901 already in use解决方案:检查端口上的现有进程并杀死它们。
lsof -i :8901 | grep LISTEN
kill -9
问题:GPU处理程序返回“未检测到GPU”
Error: nvidia-smi not found or no NVIDIA driver解决方案:确保安装了NVIDIA驱动程序 nvidia-smi 在PATH中。在Ubuntu上:
sudo apt install nvidia-driver-535
nvidia-smi # verify问题:数据库处理程序返回“数据库已锁定” 当多个进程同时写入同一SQLite文件时,就会发生这种情况。解决:
- 使用WAL模式:
PRAGMA journal_mode=WAL; - 设置繁忙超时:
PRAGMA busy_timeout=5000; - 通过任务执行器队列确保一次只有一个写入路径。
问题:语音处理程序返回“无音频设备” 确保PulseAudio或PipeWire正在运行,并且连接了麦克风:
pactl list sources short # list audio inputs
arecord -l # list ALSA capture devices问题:交易处理程序超时 API有速率限制(每秒20个请求)。如果您看到超时:
- 检查
api_rate_status电流限制 - 降低轮询频率
- 使用WebSocket提要而不是REST来获取实时数据
______________________________________________________________________
扩展工具包
创建新处理程序
- 在中创建一个新的Python文件
handlers/:
# handlers/my_custom_handler.py
from jarvis_mcp.base import BaseHandler, handler
class MyCustomHandler(BaseHandler):
"""Handler for custom operations."""
@handler("my_tool_name")
async def my_tool(self, params: dict) -> dict:
"""One-line description shown in tool listing."""
# Validate input
value = params.get("key", "default")
# Do work
result = await self._process(value)
# Return structured response
return {"status": "ok", "data": result}
async def _process(self, value: str) -> str:
# Internal logic
return f"Processed: {value}"- 在中注册处理程序
config/handlers.yaml:
handlers:
- name: my_custom
module: handlers.my_custom_handler
class: MyCustomHandler
enabled: true
category: custom- 重新启动MCP服务器——您的工具会自动出现在
list_tools().
处理程序最佳实践
- 处理前始终验证输入参数
- 使用
async用于任何I/O操作(网络、磁盘、数据库) - 返回结构化字典,而不是原始字符串
- 包含一行docstring——它将成为工具描述
- 对于写入操作,考虑添加一个确认步骤
- 记录错误
self.logger.error()可观察性
______________________________________________________________________
安全模型
访问级别
每个处理程序有三个访问级别之一:
| 级别 | 描述 | 行为 |
|---|---|---|
| 只读 | 无法修改状态 | 立即执行,无需确认 |
| 写 | 修改状态 | 立即执行,记录以供审核 |
| 写(确认) | 破坏性或不可逆 | 执行前需要明确确认 |
需要确认的处理程序
以下处理程序在执行前需要确认,以防止意外损坏:
db_delete--删除数据库记录db_migrate--应用架构迁移fs_delete--从磁盘中删除文件gpu_load--加载模型(消耗VRAM)trade_execute--用真钱下真实订单trade_cancel--取消未结订单sys_restart--重新启动生产服务
审计跟踪
所有处理程序调用都记录到 jarvis-master.db 在 mcp_audit 表:
CREATE TABLE mcp_audit (
id INTEGER PRIMARY KEY,
timestamp TEXT,
handler TEXT,
params TEXT, -- JSON serialized
result TEXT, -- JSON serialized
caller TEXT, -- Which agent/user invoked
duration_ms INTEGER
);网络安全
- MCP服务器绑定到
127.0.0.1默认情况下(仅限本地主机) - 要向集群公开,请设置
MCP_BIND=0.0.0.0并配置防火墙规则 - 所有节点间通信都使用本地网络(192.168.1.x)
- 在本地主机上不需要身份验证;远程访问需要通过设置API密钥
MCP_API_KEY
______________________________________________________________________
作者
弗兰克·德尔马斯 --AI系统架构师·JARVIS OS创建者·法国图卢兹
 ](https://github.com/Turbo31150)  
*生产第一自学·多代理·MCP早期采用者·可供CDI/自由职业者/咨询。*
部分 贾维斯 生态系统· 全部44个公共repos
