# MCP Server 为阿里云百炼 AI 应用提供 PostgreSQL 只读查询能力的 MCP 服务。 ## 用途 小程序端调用百炼 AI 应用时,百炼通过 MCP 协议连接本服务,读取 `etl_feiqiu` 数据库中的运营数据(会员、订单、支付、助教业绩、财务汇总等)。 ## 架构 ``` 微信小程序 → 百炼 AI 应用 → MCP (Streamable HTTP) → 本服务 → PostgreSQL (etl_feiqiu) ``` ## 暴露的 Tools | Tool | 说明 | |------|------| | `list_tables` | 列出指定 schema 下的表 | | `describe_table` | 查看单表结构 | | `describe_schemas` | 批量返回多个 schema 的表结构(含主键) | | `query_sql` | 在指定 schema 内执行只读 SQL | ## 可访问的 Schema `ods` / `dwd` / `dws` / `core` / `meta` / `app`(etl_feiqiu 六层架构) ## 安全策略 - 仅允许 SELECT/WITH/SHOW/EXPLAIN,禁止 DDL/DML - 正则 + sqlparse 双重校验 - 跨 schema 引用白名单限制 - 可选 Bearer Token 鉴权(`MCP_TOKEN` 环境变量) - 生产环境建议使用只读数据库账号 ## 配置 环境变量优先级:`MCP_PG_*` > `DB_*` / `ETL_DB_NAME` / `PG_NAME`(分离式回退) > 项目根 `.env` | 变量 | 说明 | 默认值 | |------|------|--------| | `MCP_PG_HOST` | 数据库主机(优先) | 回退 `DB_HOST` | | `MCP_PG_PORT` | 数据库端口(优先) | 回退 `DB_PORT`,默认 5432 | | `MCP_PG_DATABASE` | 数据库名(优先) | 回退 `ETL_DB_NAME` → `PG_NAME`(分离式配置) | | `MCP_PG_USER` | 数据库用户(优先) | 回退 `DB_USER` | | `MCP_PG_PASSWORD` | 数据库密码(优先) | 回退 `DB_PASSWORD` | | `MCP_TOKEN` | 鉴权 token(空则不启用) | 空 | | `MCP_MAX_ROWS` | query_sql 最大返回行数 | 500 | | `PORT` | 服务监听端口 | 9000 | ## 启动 ```bash cd apps/mcp-server python server.py ``` 百炼端 MCP 服务地址配置为:`https://mcp.langlangzhuoqiu.cn/mcp`