1.9 KiB
1.9 KiB
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 |
启动
cd apps/mcp-server
python server.py
百炼端 MCP 服务地址配置为:https://mcp.langlangzhuoqiu.cn/mcp