Files
Neo-ZQYY/apps/mcp-server/README.md

59 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`