infra-mcp-runtime
v1.0.9
Published
Obfuscated runtime package for Infra MCP.
Downloads
470
Readme
Infra MCP
Infra MCP 是一个独立运行的 HTTP MCP Server,用于让 AI 按项目隔离访问服务端配置的 SQL、Redis 和部署环境 Linux 命令行。SQL 当前支持 MySQL 和 PostgreSQL。
真实连接信息只保存在用户空间目录 ~/.infra-mcp/infra-mcp.server.config.json 中。安装或首次启动时会自动生成 ~/.infra-mcp/infra-mcp.client.config.json 模板,业务项目根目录只需要复制并维护自己的 infra-mcp.client.config.json。客户端配置可以是多环境数组,也可以是单环境对象;每个环境里用 projectName 命名环境,并保存对应 projectKey 和给 Agent 工具看的 prompt;prompt 用于提供额外自然语言说明,不要保存数据库、Redis 或 SSH 密码。
功能说明
sql_list_databases:列出当前 SQL 账号可见数据库,最多返回 400 条。sql_list_tables:列出指定数据库的表,最多返回 400 条。sql_select:只允许执行单条SELECT查询,返回记录最多 400 条。mysql_*兼容别名:保留mysql_list_databases、mysql_list_tables、mysql_select,仅支持sql.engine=mysql的项目。redis_query:只允许执行 Redis 只读命令白名单。linux_exec:通过 SSH 执行结构化部署环境 Linux 命令;单命令传program、args、cwd、explanation,多命令传commands数组,不要用bash -lc或sh -c包装多条命令。只读诊断命令命中白名单会直接执行,有副作用或未知命令会在网页控制台触发人工确认。- 网页控制台:访问
http://127.0.0.1:3120/console查看 SQL、Redis、Linux 三类输入输出,维护 Linux 风险类型审批策略,并通过动态表单编辑保存~/.infra-mcp/infra-mcp.server.config.json。
使用方式
安装 Node.js 20 或更高版本。
全局安装运行版包:
npm install -g infra-mcp-runtime直接启动服务端:
infrainfra等同于infra start,默认会在后台守护进程中运行,启动成功后终端可以关闭。安装完成后会自动执行初始化;首次启动时如果~/.infra-mcp不存在模板文件,也会自动创建默认模板。服务管理命令:
infra start infra stop infra restart infra status infra log infra help其中
infra stop用于停止后台服务,infra status用于查看运行状态和进程 PID,infra restart用于重启服务,infra log用于查看最近日志,infra help用于查看命令帮助。如果需要前台运行,可以使用:
infra --foreground前台运行时需要保持当前终端窗口打开;停止服务时按
Ctrl+C,或关闭当前终端窗口。配置文件会保存在用户空间目录
~/.infra-mcp下。Windows 默认路径示例:
%USERPROFILE%\.infra-mcp\infra-mcp.server.config.jsonmacOS / Linux 默认路径示例:
~/.infra-mcp/infra-mcp.server.config.json客户端模板路径与它位于同一目录:
~/.infra-mcp/infra-mcp.client.config.json打开网页控制台配置服务端:
http://127.0.0.1:3120/console网页控制台的“配置”页会通过动态表单保存
~/.infra-mcp/infra-mcp.server.config.json。这里配置http监听参数、projects、SQL、Redis 和 Linux SSH 连接即可,不需要手动编辑服务端配置文件。每个项目的数据库连接统一写在sql字段中,并通过sql.engine指定mysql或postgresql。首次安装或启动后,会在
~/.infra-mcp/infra-mcp.client.config.json生成客户端模板。把它复制到需要使用 MCP 的业务项目根目录,再按项目和环境实际情况修改。多环境写成数组:[ { "projectName": "开发环境", "projectKey": "order-service-dev", "prompt": "这是给 Agent 工具使用的额外自然语言说明:当前环境用于开发调试,常用数据库为 order_dev,Redis key 通常以 order:dev: 开头;查询前先确认表含义,不要填写账号密码、token 等敏感信息。" }, { "projectName": "生产环境", "projectKey": "order-service-prod", "prompt": "这是给 Agent 工具使用的额外自然语言说明:当前环境为生产环境,只做必要的只读排查;执行查询前说明目的并控制范围,不要填写账号密码、token 等敏感信息。" } ]只有一个环境时,也可以直接写成对象:
{ "projectName": "生产环境", "projectKey": "order-service-prod", "prompt": "这是给 Agent 工具使用的额外自然语言说明:当前环境为生产环境,只做必要的只读排查;执行查询前说明目的并控制范围,不要填写账号密码、token 等敏感信息。" }在 MCP 客户端中使用下面的 HTTP 地址连接本服务:
http://127.0.0.1:3120/mcp使用工具前,Agent 应先读取当前业务项目根目录的
infra-mcp.client.config.json;如果配置是数组,则根据目标环境的projectName选择配置,如果配置是对象则直接使用;随后遵循所选配置的prompt,再把projectKey传给 MCP 工具。prompt是为了给 Agent 工具提供额外的自然语言说明,例如库表含义、Redis key 前缀、查询边界和环境注意事项。网页控制台的“配置”页只编辑服务端配置,不会替代业务项目根目录里的客户端配置。
本地开发怎么看效果
修改
public/index.html、public/app.js、public/styles.css这类网页控制台静态资源后,直接刷新http://127.0.0.1:3120/console就能看到效果;服务端会在请求/console、/console/app.js、/console/styles.css时直接读取仓库里的public/目录。修改
src/*.ts这类后端逻辑后,需要重新编译再重启服务,因为实际运行的是dist/index.js。推荐执行:npm run build infra restart修改工具逻辑后,除了刷新控制台页面,还需要重新触发一次对应的 MCP 请求,或者重新在客户端里调用一次 SQL、Redis、Linux 工具,才能看到新的运行效果。
如果只是修改
~/.infra-mcp/infra-mcp.server.config.json里的项目连接信息,一般保存后重新调用工具即可;如果修改的是http.host、http.port、http.path这类监听参数,则需要重启服务后才会生效。日常开发时可以按这个节奏操作:改前端就刷新
/console,改后端就执行npm run build && infra restart,改完功能再执行npm test做一次验证。
Codex 配置方式
在 Codex 的用户配置文件中添加 Infra MCP 服务配置。Windows 默认路径为:
%USERPROFILE%\.codex\config.toml示例:
[mcp_servers.infra-mcp]
type = "streamable_http"
url = "http://127.0.0.1:3120/mcp"
startup_timeout_ms = 20000
tool_timeout_sec = 60
enabled = true如果 ~/.infra-mcp/infra-mcp.server.config.json 中修改过 http.port 或 http.path,需要同步修改上面 url 的端口或路径。保存后重启 Codex,或在 Codex 中重新加载 MCP Server。使用前只需要保持 infra 启动的服务进程正在运行。
Codex 配置文件只写 MCP 服务地址,不写数据库、Redis 或 SSH 账号密码。每个业务项目仍需要在项目根目录放置 infra-mcp.client.config.json,其中每个配置项的 projectKey 必须和服务端 projects 中的 projectKey 一致。
安全说明
- SQL 只开放数据库列表、表列表和单条
SELECT查询,不允许写入或 DDL。 - Redis 只开放白名单内的只读命令。
- Linux 自动执行只允许结构化命令格式化后的简单命令或只读白名单命令组成的管道。
- Linux 命令包含
sudo、多语句、重定向、后台执行、命令替换、未知命令或疑似副作用操作时,会在网页控制台等待人工确认。 - Linux 审批弹窗会按列表显示待执行命令和 Agent 提供的
explanation,触发审批的命令会用红色强调。 - Linux 审批按风险类型控制,策略保存在用户空间目录的
~/.infra-mcp/infra-mcp.approval-policy.json。在网页取消某个风险类型的“需要审批”后,同类型命令后续会按策略免审批执行。 - 不要把 HTTP 服务监听到不可信网络。
