Epydios MCP策略网关(AIMXS、Python)
用于边界强制工具执行的可运行MCP(stdio)网关/服务器,具有:
- 允许/拒绝
- 通过本地CLI加速审批(2分钟TTL)
- 仅附加证据记录(JSONL审计跟踪)
- 可选的确定性AgentApprovar存根(默认禁用)
- 职责分离(无自我批准,能力有限的批准人令牌)
快速入门
选项A(无包装,最快)
pip install -r requirements.txt
export PYTHONPATH=src
python -m aimxs_gateway.main --config config/prototype.local.yamlCLI(在另一个终端中):
export PYTHONPATH=src
python -m aimxs_cli.cli approvals --admin-url http://127.0.0.1:8787 --admin-token dev_admin_token
python -m aimxs_cli.cli approve --admin-url http://127.0.0.1:8787 --admin-token dev_admin_token选项B(可编辑安装)
python -m venv .venv
source .venv/bin/activate
pip install -e .
aimxs-gateway --config config/prototype.local.yaml本地验证驱动程序(可选)
提供了一个简单的本地JSON-RPC驱动程序用于验证和演练:
python demo/demo_driver.py它将网关作为子流程启动,提出工具调用,触发升级,然后通过管理员API批准。这是一个验证工具,而不是生产部署路径。
暴露的工具(MCP)
shell.exec(沙盒,基于allowlist)fs.list(沙盒)fs.read(沙盒)fs.write(沙盒;默认需要批准)
仅将证据(审计跟踪)日志写入中配置的路径 config/prototype.local.yaml (默认值: ./evidence/evidence.jsonl).这是一种操作审计跟踪格式(JSONL),而不是加密不可变的日志。
操作说明
- 尚未准备好生产:此存储库是用于评估和集成设计的工作原型/参考实现。
- 示例配置令牌是本地开发占位符,必须在任何非本地或共享使用之前进行更改。
沙盒
内置沙盒(默认本地模式)
- 强制沙盒工作目录(
demo_sandbox/) - 显式命令允许使用解析的绝对路径
- 不
shell=True - 每次工具调用超时
- 尽力POSIX限制(CPU、文件大小、内存、进程、打开的文件)
- 阻止绝对路径,
~,以及..在argv参数中
Docker沙箱(可选)
如果你安装了Docker,你可以在一个锁定的容器内运行网关:
./scripts/run_docker_sandbox.sh这与 --network none,只读根文件系统,放弃功能,仅绑定 evidence/ 和 demo_sandbox/ 可写。
测试和CI
此仓库包括轻量级烟雾测试和GitHub Actions CI工作流(.github/workflows/ci.yml)即:
- 安装依赖项
- 以可编辑模式安装软件包
- 编译
src/和demo/ - 跑
unittest冒烟测试
在本地运行:
python -m venv .venv
source .venv/bin/activate
pip install -e .
python -m unittest discover -s tests -p "test_*.py" -v代理模式(客户端和一个或多个MCP服务器之间的网关)
在 mode: proxy,网关是客户端的MCP服务器和一个或多个下游MCP服务器的MCP客户端:
客户端⇄ (AIMXS网关)⇄ 下游MCP服务器
tools/list使用命名空间工具名称在下游服务器之间合并::tools/call被拦截,根据策略进行评估,然后路由到正确的下游服务器- 允许/拒绝/升级决策和代理执行结果记录在仅附加证据日志(审计跟踪)中
运行代理演示
该仓库包括一个小型下游MCP服务器(demo/downstream_echo_server.py)因此,您可以在没有任何外部依赖的情况下测试代理路由:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 demo/proxy_demo_driver.py要使用真实的MCP服务器,请编辑 config/proxy.yaml 并替换 downstream_servers.
