推断MCP服务器
这是一个MCP(模型上下文协议)服务器,通过SSH和RDBMS连接提供资源访问。它旨在与VS Code中的GitHub Copilot和Cursor等AI辅助工具集成。
设置
- 安装依赖项:
npm install - 构建:
npm run build - 运行:
npm start
特点/特性
- 通过配置的配置文件、命令白名单和输出配额强制执行SSH命令执行
- PostgreSQL数据库查询限制为配置的连接和语句模式
- 针对每个配置文件的并发限制,支持取消感知执行和进度通知
- 通过SSH配置文件进行分类器训练的协调管理
配置
服务器从以下任一来源加载配置: INFER_MCP_CONFIG_PATH (JSON 文件) 或 INFER_MCP_CONFIG (内联JSON字符串)。初始配置可在 config/sample-config.json; 复制 .env.example 到 .env 并根据需要更新路径/密钥。
秘密信息可以通过内联方式提供、通过环境变量传递,或从磁盘读取。例如:
{
"sshProfiles": {
"training-cluster": {
"host": "cluster.example.com",
"username": "trainer",
"privateKey": {
"path": "./secrets/training-cluster.key"
},
"policy": {
"allowedCommands": ["^python\\s+train.py\\b"],
"maxExecutionMs": 900000,
"maxOutputBytes": 1048576
}
}
},
"databaseProfiles": {
"training-metadata": {
"connectionString": { "env": "TRAINING_METADATA_DB_URL" },
"allowedStatements": ["^\\s*SELECT\\b", "^\\s*WITH\\b"],
"maxRows": 1000,
"maxExecutionMs": 20000
}
},
"training": {
"defaultCommandTemplate": "python train.py --dataset={{datasetPath}} --class={{subclass}}",
"defaultTimeoutMs": 600000
}
}sshProfiles为诸如(以下工具)等工具定义可重用的凭据sshExecute和trainClassifier. 为了password,privateKey,或者passphrase,提供一个原始字符串,{ "env": "VAR_NAME" },或{ "path": "relative/or/absolute" }支持Base64编码的文件,使用{ "path": "...", "encoding": "base64" }策略控制命令白名单、最大运行时间、捕获的输出大小以及每个配置文件的设置maxConcurrent插槽。示例配置包含一个local-test“profile against”可以翻译为“对比分析”或“针对……的概况/简介”。具体翻译取决于上下文,但基本意思是指将某事物的概况或特性与另一个事物进行对比或分析127.0.0.1使用占位符凭证(tester/changeme因此,您可以快速通过本地守护进程使用SSH工具——在实际使用前请更新这些值。databaseProfiles集中管理PostgreSQL访问。语句必须符合配置的正则表达式白名单,并遵守行/时间限制maxConcurrent限制每个配置文件的并发查询数量。training分类器作业的默认控制设置。
集成
在您的AI工具的MCP设置中进行配置,以连接到此服务器。
对于 VS Code 的 GitHub Copilot:添加到 mcp.json 在 .vscode 文件夹。
调试
你可以使用VS Code的调试器来调试这个MCP服务器。
模拟器
构建项目(npm run build) 并使用模拟器在本地练习工具,无需代理客户端:
npm run simulate -- list
npm run simulate -- call sshExecute '{"profile":"training-cluster","command":"python train.py --help"}'
npm run simulate -- call dbQuery '{"profile":"training-metadata","query":"SELECT * FROM jobs LIMIT 5"}'使用环境变量覆盖默认值:
MCP_SERVER_COMMAND– 启动二进制文件(默认node)MCP_SERVER_ARGS– 逗号分隔的参数(默认build/index.js)MCP_SERVER_CWD– 孵化出的服务器的工作目录
对于阶段验证,请复制 config/staging-config.json,填充引用的密钥,并设置 INFER_MCP_CONFIG_PATH=$(pwd)/config/staging-config.json 在跑步之前 npm run simulate -- … 命令。为了快速进行本地主机的烟雾测试,请瞄准(或:请使用) INFER_MCP_CONFIG_PATH 在 config/sample-config.json确保您的SSH服务器接受 local-test 凭据,或者调整该配置文件以匹配现有的本地帐户。服务器默认以宽容的本地测试模式运行;设置 INFER_MCP_MODE=production 在部署时,为回环配置文件重新启用SSH策略强制执行。
集成测试
- 构建项目(
npm run build因此,模拟器工件是存在的。 - 通过以下方式配置预发布环境凭据:
INFER_MCP_CONFIG_PATH或者INFER_MCP_CONFIG(部署样本引用了环境变量和以下的机密文件)config/secrets/)。 - 跑
npm run test:integration执行调用模拟器的Vitest测试套件(受保护于INTEGRATION=1)。 - 集成套件期望模拟器能够列出
sshExecute,dbQuery,和trainClassifier; 延伸tests/integration/随着你添加工具,情况也会随之增加。
