查询Bot仪表板MCP服务器
该项目将仪表板可视化洞察生成器与模型上下文协议(MCP)服务器集成在一起。它提供了一个API来调用外部webhook并返回基于自然语言查询的仪表板/报告URL。
主要特点
- 通过外部webhook获得视觉洞察
- 可通过环境变量进行配置
- 输入/输出的Pydantic模型
示例用法(克劳德双服务器)
建议使用Claude运行的方式是使用双服务器配置:
See example_usage/example_config_dual_servers.json此文件配置了两个MCP服务器:
vertica-mcp:用于Vertica数据库查询dashboard-mcp:用于仪表板/视觉洞察
每个服务器都有自己的入口点和环境。根据环境需要调整路径。
快速开始
- 安装依赖项:
pip install -r requirements.txt - 在中配置环境变量
.env或通过app/config.py - 运行服务器:
python app/main.py
文件
app/dashboard_tools.py:仪表板视觉洞察的主要逻辑app/config.py:配置管理
Vertica MCP服务器(只读)
生产环境友好的MCP服务器,将Vertica(只读)暴露给Claude Desktop和其他MCP客户端。 支持 流式HTTP (推荐), SSE (遗留),以及一个小型REST API。
为什么是这个堆栈?
- 使用 官方Python MCP SDK (
mcp)及其FastMCP服务器。 - 流式HTTP是 取代SSE 用于生产部署(更好的扩展性;会话可恢复性)。
- 跨平台工作(现在是Linux,以后是Windows),容器友好,并保持信誉
.env.
快速启动
1) 安装时使用 uv (最快)或pip
# using uv (recommended by the MCP SDK)
uv sync
# or
pip install -e .2) 配置
复制 .env.example 向 .env 并填写您的Vertica信誉和允许的模式/表。 使用 只读数据库用户 随着 USAGE 关于模式和 SELECT 放在你想要的桌子上。 (请参阅下面链接的Vertica文档。)
3) 快跑
uv run uvicorn app.main:app --host 0.0.0.0 --port 8080
# or with pip
uvicorn app.main:app --host 0.0.0.0 --port 8080- MCP可流式HTTP端点:
http://localhost:8080/mcp - MCP SSE端点(传统):
http://localhost:8080/sse - 休息:
POST /api/submit_query,POST /api/sql,GET /healthz,GET /metrics
4) 连接克劳德桌面
本地 (stdio)或 远程 (HTTP)两者都有效。
- 远程(HTTP):在Claude web应用程序中,添加一个 自定义连接器 指向
http(s)://YOUR_HOST:8080/mcp. - 本地(stdio):您还可以通过以下方式运行服务器
mcp run从这个仓库中,将Claude Desktop配置指向它。
请参阅下面链接的文档,了解确切的步骤和屏幕截图。
服务器公开的工具
list_allowed:列出允许Claude使用的架构/表sql_query:运行a 仅选择 对允许的表进行查询(自动应用LIMIT)submit_query:转发JSON{ "query": "..." }到您的编排器/webhook并返回其JSON(例如仪表板URL)
服务器还公开了一个REST API,因此非MCP调用方可以使用相同的功能。
安全/只读
- 执行a 只读数据库用户 (在模式上使用+SELECT在白名单表上使用)。
- 每个会话设置为
READ ONLY事务模式,我们防御性地阻止DML/DDL关键字。 - 服务器仅通告允许的架构/表,以减少LLM的上下文大小。
Docker(可选)
docker build -t vertica-mcp-server:0.1 .
docker run --env-file .env -p 8080:8080 vertica-mcp-server:0.1参考文献
- MCP概述和SDK:https://modelcontextprotocol.io/docs/sdk
- Python SDK文档和流式HTTP指南:https://github.com/modelcontextprotocol/python-sdk
- 克劳德桌面+MCP(本地):https://modelcontextprotocol.io/quickstart/user
- Claude中的远程MCP连接器:https://modelcontextprotocol.io/docs/tutorials/use-remote-mcp-server
- Vertica GRANTs(模式/表):https://docs.vertica.com/latest/en/admin/db-users-and-privileges/db-privileges/granting-and-revoking-privileges/
- 将会话设置为只读:https://docs.vertica.com/latest/en/sql-reference/statements/begin/
