语义MCP Gen
关系数据库和人工智能代理之间的语义桥梁——自动创建安全、上下文丰富和代理就绪的MCP服务器。
______________________________________________________________________
这是什么?
原始数据库模式对人工智能不友好。转储到LLM上下文窗口中的50个表的生产数据库将:
- 在不相关的表上销毁数千个代币
- 无屏蔽地暴露PII列
- 让代理编写没有护栏的任意SQL
- 为代理提供关于数据内容的零业务上下文 *手段*
语义MCP Gen 解决了这一切。它采用您的数据库模式,让您用业务描述和安全规则丰富它,并生成一个可随时部署的 MCP(模型上下文协议) AI代理可以安全查询的服务器。
______________________________________________________________________
特性
架构和丰富
- 导入数据库架构并查看所有表和列
- 添加业务描述,分配域标签(例如。
Clinical,Finance,Sales) - 标记PII列——它们在所有代理查询中都会自动屏蔽
- 完全隐藏系统/审核表,使代理无法访问
- 按域筛选表;按名称搜索
AI模式代理
- 粘贴OpenAI或Anthropic API键,然后单击 汽车富集
- 代理读取您的架构并自动写入业务描述、分配域标签和检测PII列
- 您的API密钥只使用一次,从不存储在服务器端
关系图
- 显示按域分组的所有表的可视域图
- 所有列为命名连接路径的外键关系
- 打开/关闭单个关系,以控制代理可以遍历的内容
查询防火墙
- 测试语义JSON→ SQL引擎直接
- 可视化构建器(选择表、列、过滤器)或原始JSON模式
- PII列在结果中自动屏蔽
- 隐藏的表和列是不可访问的——代理无法绕过这一点
语义清单
- 一键生成
manifest.json--模式的紧凑、符号化表示 - 使用符号ID(
T1,C1)而不是全名来保存LLM令牌 - 不包括隐藏表和PII原始值
- 显示清单大小、表计数、PII列计数、域计数
MCP托管向导
从清单到实时MCP服务器的4步应用内指南:
- 审查 --清单健康检查(缺少描述、PII覆盖范围)
- 生成 --生成一个准备运行的
server.js+package.json - 部署 --本地、铁路、渲染或Docker的分步说明
- 连接 --Cursor IDE和Claude Desktop配置片段,curl测试命令
查询日志
- 通过防火墙执行的每个语义查询的完整审计跟踪
- 显示输入JSON、生成的SQL、状态(成功/错误)、返回的行、时间戳
- 每10秒自动刷新一次
______________________________________________________________________
技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 18+TypeScript+Vite |
| UI组件 | shadcn/UI+顺风CSS |
| 路由 | wouter(基于哈希的路由) |
| 后端 | Express.js(Node.js) |
| 数据层 | Drizzle ORM+Zod |
| 人工智能集成 | OpenAI(gpt-4o-mini)+人类学(claude-3-5-haiku) |
| 存储 | 内存中(MemStorage)——插入一个真正的数据库用于生产 |
______________________________________________________________________
项目结构
semantic-mcp-gen/
├── client/
│ └── src/
│ ├── pages/
│ │ ├── dashboard.tsx # Project list
│ │ ├── project-view.tsx # Schema & Enrichment
│ │ ├── schema-graph.tsx # Relation Graph
│ │ ├── query-builder.tsx # Query Firewall
│ │ ├── manifest-view.tsx # Semantic Manifest
│ │ ├── query-logs.tsx # Query Logs
│ │ └── mcp-wizard.tsx # MCP Hosting Wizard
│ ├── components/
│ │ ├── agent-panel.tsx # AI Schema Agent UI
│ │ ├── app-sidebar.tsx # Navigation sidebar
│ │ └── page-header.tsx # Breadcrumbs + tooltips
│ └── App.tsx # Router
├── server/
│ ├── storage.ts # Demo data + in-memory storage
│ ├── routes.ts # All API endpoints
│ └── index.ts # Server startup
└── shared/
└── schema.ts # Shared data models (Drizzle + Zod)______________________________________________________________________
入门指南
先决条件
从源代码运行
git clone https://github.com/bangcodebang/semantic-mcp-gen.git
cd semantic-mcp-gen
npm install
npm run dev为生产而建
npm run build
node dist/index.cjs视窗
npm install
node dist/index.cjs______________________________________________________________________
API 参考
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /api/projects | 列出所有项目 |
GET | /api/projects/:id | 获取项目详细信息 |
GET | /api/projects/:id/tables | 获取所有桌子 |
GET | /api/projects/:id/columns | 获取所有列 |
GET | /api/projects/:id/relationships | 获取FK关系 |
POST | /api/projects/:id/query | 执行语义查询 |
GET | /api/projects/:id/manifest | 获取生成的manifest.json |
GET | /api/projects/:id/logs | 获取查询审核日志 |
PATCH | /api/tables/:id | 更新表元数据 |
PATCH | /api/columns/:id | 更新列元数据 |
PATCH | /api/relationships/:id | 更新关系 |
POST | /api/projects/:id/agent/enrich | 运行AI自动富集 |
语义查询格式
代理使用JSON查询防火墙——原始SQL永远不会暴露:
{
"entity": "T1",
"select": ["C1", "C2", "C4"],
"where": {
"C4": { "eq": "active" }
},
"limit": 50
}支持的操作员: eq, neq, gt, lt, gte, lte, in
______________________________________________________________________
核心理念
安全第一 --代理从不编写原始SQL。所有查询都经过一个经过验证的JSON到SQL抽象层。
上下文为王 --没有语义上下文的数据库对LLM来说只是噪音。每个表和列都带有业务描述。
代币效率 --清单使用符号ID(T1, C3)与原始SQL转储相比,将模式上下文大小减少70%以上。
PII默认 --将列标记为PII一次。它在每个查询响应中都会自动、永久地被屏蔽。
______________________________________________________________________
路线图
- \[\]真正的数据库连接(PostgreSQL、MySQL、SQLite)
- \[\]CSV/SQL架构文件导入
- \[\]模式漂移检测--数据库模式更改时发出警报
- \[\]语义表发现的向量搜索
- \[\]查询引擎中的多表联接支持
- \[\]基于角色的访问控制(管理员与只读)
- \[\]将清单导出为可下载的
.json文件
______________________________________________________________________
贡献
欢迎拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
- 分叉存储库
- 创建特征分支:
git checkout -b feature/my-feature - 提交您的更改:
git commit -m 'Add my feature' - 推到分支:
git push origin feature/my-feature - 打开拉取请求
______________________________________________________________________
许可证
麻省理工学院
______________________________________________________________________
建于 困惑计算机
