AI代理交易控制平台

本地MCP原生控制平台,用于在政策检查、风险解释、人工批准、模拟执行和审计重放下测试AI代理交易行为。

  • by duyhuynh-dev
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 duyhuynh-dev/mcp-finance

使用说明

代理控制平面

本地MCP本地控制平面,用于测试AI代理在以下情况下的交易行为 政策检查, 风险解释, 人类认可, 模拟执行,以及 审计回放.

需求

  • python 3.11+ (需要 StrEnum, mcp,以及打印堆栈)。
  • 用于web UI的节点20+。

设置

cd ai-project
python3.11 -m pip install -e ".[dev]"
npm run install:web

环境

变量 默认值 含义
FINANCE_DB_PATH ./data/finance.db API+投资组合MCP共享的SQLite文件
FINANCE_QUOTE_BACKEND mock mock (CI/测试)或 yahoo (实时最后价格,无API密钥)
CORS_ORIGINS localhost-dev FastAPI的逗号分隔源

运行API(仪表板后端)

export FINANCE_DB_PATH="$PWD/data/finance.db"
python3.11 -m uvicorn api.main:app --reload --host 127.0.0.1 --port 8001

运行web UI

从 仓库根目录:

npm run dev

或者: cd web && npm run dev.

打开 http://127.0.0.1:5173.Vite代理 /api 到 8001.

你需要 二 过程: uvicorn (8001)和 npm run dev (5173).

评估场景(代理回归)

JSON文件 scenarios/eval/ 由...运营 finance_core.eval_runner (参见 tests/test_eval_scenarios.py).

python3.11 scripts/run_eval.py

MCP服务器(光标/克劳德桌面)

使用相同 FINANCE_DB_PATH 作为API。可选: FINANCE_QUOTE_BACKEND=yahoo MCP中的实时报价。

{
  "mcpServers": {
    "finance-market": {
      "command": "python3.11",
      "args": ["/absolute/path/to/ai-project/servers/market_mcp.py"],
      "env": {}
    },
    "finance-portfolio": {
      "command": "python3.11",
      "args": ["/absolute/path/to/ai-project/servers/portfolio_mcp.py"],
      "env": {
        "FINANCE_DB_PATH": "/absolute/path/to/ai-project/data/finance.db"
      }
    }
  }
}

工具: get_quote, list_symbols · get_state, place_order (可选 order_kind 市场/限额, limit_price), cancel_order, list_recent_orders, list_recent_fills, get_risk_metrics,代理+回溯测试助手。

数量/ML(与API相同的DB): list_quant_strategies, set_quant_strategy_active, run_quant_strategies_once, list_quant_signals, start_quant_engine, stop_quant_engine, get_quant_engine_status, finance_stack_health, get_ml_alpha_diagnostics, get_strategy_diagnostics, get_risk_snapshot, stress_portfolio, reconcile_ledger_vs_broker, forward_strategy_signals_to_alpaca (需要 SIGNALS_TO_ALPACA=1), create_pending_order_intent, list_pending_order_intents, approve_pending_order_intent。代理可以设置 allowed_mcp_tools (JSON数组)在使用时限制这些工具 agent_id.

REST(已选择): GET /api/risk/snapshot, POST /api/risk/stress, GET /api/broker/reconciliation, GET /api/execution-events, GET /api/execution-events/replay, POST /api/order-intents, GET /api/order-intents/pending, POST /api/order-intents/{id}/approve|reject, POST /api/strategies/forward-signals-alpaca (标记)。政策: max_gross_exposure_multiple, slippage_impact_bps_per_million.Env: HEALTH_CHECK_ALPACA, SIGNALS_TO_ALPACA, BROKER_EXECUTION_MODE (internal 或 alpaca_paper)(参见 .env.example).

看 IMPLEMENTATION_PLAN.md 关于发货内容与可选的后续步骤。

脚本演示(无LLM)

export FINANCE_DB_PATH="$PWD/data/finance.db"
python3.11 scripts/demo_scenario.py

测试和CI

python3.11 -m pytest tests/ -v
ruff check api packages/core servers scripts tests

GET /api/health 检查SQLite(SELECT 1)并报告策略引擎线程是否正在运行;回报 503 如果数据库检查失败。CI运行全套(包括MCP导入烟雾和 ml_alpha 抵制指标测试)。

GitHub操作(.github/workflows/ci.yml): 颈毛, 测试 (FINANCE_QUOTE_BACKEND=mock), 网页构建.

生产Docker部署

docker build -t agent-control-plane .
docker run --rm \
  -e FINANCE_DB_PATH=/app/data/finance.db \
  -e FINANCE_QUOTE_BACKEND=mock \
  -e REQUIRE_AUTH=false \
  -p 8000:8000 \
  -v agent-control-plane-data:/app/data \
  agent-control-plane

该容器从一个来源为登录页、React应用程序、API、WebSocket和静态资产提供服务:

  • 登录页面: http://localhost:8000/
  • 应用程序: http://localhost:8000/app
  • 健康检查: http://localhost:8000/api/health

为了快速公开部署,请使用附带的 render.yaml 蓝图。从这个GitHub仓库创建一个新的渲染蓝图;Render将构建Dockerfile,在 /app/data,并使用 /api/health 作为健康检查。

安全

看 安全.md 信任边界和演示限制。

布局

路径 角色
packages/core/finance_core/ 分类账、政策、报价、审计、eval runner
scenarios/eval/ JSON评估场景
servers/ MCP stdio服务器
api/ 用于UI的FastAPI REST
web/ Vite+React仪表板
scripts/demo_scenario.py 种子+交易
scripts/run_eval.py 运行eval JSON套件