使用说明
Pocket DBA MCP服务器-“DBA在你的口袋里”
项目愿景
通过创建取代传统静态BI工作流程的对话界面,改变企业主与数据的交互方式。企业主无需向DBA请求报告并等待Power Platform可视化,而是可以与他们的数据库进行实时对话并获得即时见解。
当前状态: 企业主→ 问题→ DBA → SQL查询→ Power Platform→ 静态报告→ 有限跟进
目标州: 企业主→ 对话式AI→ 动态查询→ 即时洞察→ 无限制随访
当前实施状态
✅ 第一阶段完成:带FastMCP的核心MCP服务器
- 使用stdio传输的FastMCP服务器实现
- 具有安全验证的只读SQL Server访问
- 基本工具:
execute_sql具有查询验证功能 - 资源:
list_tables和get_table_data - 综合测试套件(9项测试通过)
- 与Claude Desktop经过验证的集成
✅ 第二阶段完成:增强的数据库发现
describe_table模式检查工具get_relationships外键发现工具- TDD方法的全面测试覆盖率
✅ 第3阶段完成:Gradio聊天界面(第4阶段)
- 丰富的HTML/图表渲染功能
- 导出文件下载支持
- 多格式响应处理
- 增强的可视化功能
✅ 第4阶段完成:现代UI设计
- 基于design.json的ChatGPT/Claude风格接口
- 具有ARIA可访问性的语义HTML5
- 响应式设计(手机/平板电脑/台式机)
- 玻璃造型效果与现代造型
- 60个全面的UI测试(全部通过)
✅ 第5阶段完成:后端集成
- 同时为UI和API端点提供服务的FastAPI服务器
- 面向现代web界面的静态文件服务
- 完成API与前端的集成
- 15项集成测试(全部通过)
- 已准备好进行Azure容器部署
✅ 第6阶段完成:真实数据库集成
- 将FastAPI连接到实际的MCP服务器端点
- 通过web UI实时执行SQL查询
- 动态数据库结构发现(无硬编码假设)
- 带环境变量的API成本管理
- 12个web UI MCP集成测试(全部通过)
✅ 第7阶段完成:综合测试
- Playwright MCP服务器浏览器测试与可视化UI
- 所有功能均已验证:SQL查询、表描述、错误处理
- 响应式设计测试(移动设备/平板电脑/台式机)
- 通过HTTP请求验证API端点
- 10个Playwright浏览器自动化测试(全部通过)
❌ 已识别关键错误:Web应用程序使用假MCP客户端
- 当前的web应用程序直接导入MCP功能,而不是使用FastMCP客户端
- 违反记录的架构:应使用FastMCP客户端→ MCP服务器
- 必须重新构建才能使用正确的FastMCP客户端连接
- 目前已损坏:未遵循记录的FastMCP方法
特性
当前能力
- 只读数据库访问:以零写入权限完全查看SQL Server数据库
- 安全第一设计:高级SQL注入预防和查询验证
- FastMCP实施:使用装饰器简化语法,实现快速开发
- 架构发现:列出所有数据库表及其结构
- 查询执行:安全执行已验证的SELECT语句
- 错误处理:妥善处理格式错误的查询和连接问题
建筑
当前实施(基于Web):
Business Owner → Modern Web UI → FastAPI Backend → MCP Server → SQL Server
传统实现(Claude Desktop):
Business Owner → Claude Desktop → FastMCP Client → pocket-dba-mcp-server → SQL Server
安装和设置
先决条件
- Python 3.12+
- 用于SQL Server的Microsoft ODBC驱动程序18
- SQL Server数据库访问
快速入门(Web界面)
git clone https://github.com/david-ruffin/pocket-dba-mcp-server.git
cd pocket-dba-mcp-server
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
# Run the modern web interface
python main.py --port=8002
# Visit http://localhost:8002 for the UI
# For network access from other machines on same VNET:
# Replace localhost with your machine's IP address
# Example: http://192.168.1.100:8002 or http://10.0.0.50:8002
替代方案:传统Claude桌面集成
# For Claude Desktop MCP integration
python src/mssql/server.py
配置
创建一个 .env 文件:
# Database Configuration
MSSQL_SERVER=your_server
MSSQL_DATABASE=your_database
MSSQL_USER=your_username
MSSQL_PASSWORD=your_password
MSSQL_DRIVER={ODBC Driver 18 for SQL Server}
# Claude API Configuration (Phase 6+)
CLAUDE_API_KEY=your_claude_api_key
CLAUDE_MODEL=claude-3-haiku-20240307
ENABLE_CLAUDE_API=false
Claude桌面集成
增添 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pocket-dba": {
"command": "/path/to/pocket-dba-mcp-server/venv/bin/python",
"args": ["/path/to/pocket-dba-mcp-server/src/mssql/server.py"],
"env": {
"MSSQL_SERVER": "your_server",
"MSSQL_DATABASE": "your_database",
"MSSQL_USER": "your_username",
"MSSQL_PASSWORD": "your_password",
"MSSQL_DRIVER": "{ODBC Driver 18 for SQL Server}"
}
}
}
}
项目结构
pocket-dba-mcp-server/
├── main.py # FastAPI web server (primary entry point)
├── src/mssql/
│ ├── server.py # FastMCP server implementation
│ └── server_old.py # Legacy standard MCP version
├── ui/ # Modern web interface
│ ├── index.html # Main UI file
│ ├── styles/ # CSS design system
│ │ ├── design-system.css
│ │ ├── components.css
│ │ └── responsive.css
│ ├── js/ # Vanilla JavaScript
│ │ ├── app.js
│ │ ├── api.js
│ │ └── components.js
│ └── tests/ # UI test suite (60 tests)
│ ├── test_components.py
│ ├── test_layout.py
│ ├── test_theme.py
│ └── test_accessibility.py
├── tests/ # Backend test suites
│ ├── test_server.py # MCP server tests
│ ├── test_fastapi_integration.py # API integration tests
│ └── test_*.py # Additional test files
├── chat_app.py # Legacy Gradio interface
├── design.json # UI design system specifications
├── CLAUDE.md # Development instructions
├── requirements.txt # Python dependencies
├── roadmap.md # Project roadmap
└── README.md # This file
当前工具和资源
MCP工具(后端)
execute_sql:执行带有验证的只读SELECT查询describe_table:获取表架构(列、类型、约束)get_relationships:发现外键关系
资源
mssql://tables:列出所有数据库表mssql://table/{table_name}:获取表数据(前100行)
Web API终结点
GET /:提供现代web UIGET /api/health:健康检查POST /api/connect:数据库连接POST /api/chat:用于数据库查询的聊天界面GET /api/conversations:对话历史- 静态文件服务:CSS、JavaScript和资源
发展路线图
第一阶段:核心服务器✅ 完成
- [x] 设置Python 3.12虚拟环境
- [x] 使用stdio传输实现FastMCP服务器
- [x] 创建带有安全验证的execute_sql工具
- [x] 添加表列表和数据资源
- [x] 全面的测试套件
- [x] Claude Desktop集成已验证
第2阶段:增强型数据库发现
- []实施
describe_table模式检查工具 - []添加
get_relationships外键发现工具 - []创建表元数据资源(列、类型、约束)
- []添加索引信息以优化查询
- []实施连接池以提高效率
第3阶段:高级查询功能
- []添加查询复杂性分析和超时限制
- []实施性能结果集大小限制
- []为合规性创建审计跟踪日志记录
- []添加查询优化建议
- []支持WITH条款和CTE
第4阶段:客户端界面开发✅ 完成
- [x] 构建Gradio聊天界面
- [x] 使用消息路由实现MCP客户端
- [x] 为对话上下文创建会话管理器
- [x] 为数据可视化添加结果渲染器
- [x] 测试端到端对话流
- [x] 新:具有ChatGPT风格界面的现代web UI
- [x] 新:FastAPI后端集成
- [x] 新:响应式设计,便于使用
第5阶段:商业智能功能
- []多表分析功能
- []时间序列分析和趋势识别
- []客户行为跟踪的队列分析
- []数据分割和模式发现
- []基于历史数据的基本预测
第6阶段:生产准备
- []性能优化和监控
- []增强的错误处理和恢复
- []数据导出功能
- []与现有BI工具集成
- []多数据库支持
业务用例
主要场景
- 探索性分析:“显示过去6个月的销售趋势”
- 相关性发现:“找到客户行为中有趣的模式”
- 特别报告:“比较各地区的绩效”
- 数据验证:“是否有任何我应该知道的数据质量问题?”
- 战略洞察力:“哪些因素对客户保留率影响最大?”
先进能力(未来)
- 多表分析:Claude自动连接相关表
- 时间序列分析:识别趋势、季节性和异常情况
- 分割:识别不同的客户或产品组
- 预测:基于历史数据的预测性见解
安全与安保
数据保护
- 只读访问:无INSERT、UPDATE、DELETE或DDL操作
- 查询验证:服务器在执行之前验证所有查询
- SQL注入防护:先进的模式检测和阻断
- 连接安全性:安全的凭据管理
- 错误处理:操作优雅,无数据泄露
访问控制
- 认证:安全管理数据库凭据
- 授权:尊重现有数据库权限
- 审计跟踪:记录所有合规和监控查询
测试
运行综合测试套件:
source venv/bin/activate
python -m pytest tests/ -v
当前测试覆盖率:
- 数据库连接验证
- 查询安全验证(9种不同的攻击模式)
- 使用有效/无效查询执行SQL
- 资源列表和数据检索
- 处理格式错误的请求时出错
性能注意事项
当前限制
- 查询超时:默认30秒
- 结果集:表数据的前100行
- 只读操作
- 每个请求一个连接
计划优化
- 连接池提高效率
- 查询复杂性分析
- 资源使用监控
- 缓存频繁访问的元数据
用户体验目标
面向企业主
- 直接性:在几秒钟内得到答案,而不是几天
- 无障碍:不需要SQL知识
- 对话式:自然后续问题
- 全面的:访问所有业务数据
- 深谋远虑:AI建议进行相关分析
技术团队
- 安全:对生产数据没有风险
- 合规:数据访问的完整审计跟踪
- 演出:不影响操作的优化查询
- 可维护性:简单、干净的代码库
当前状态:生产准备就绪
完成内容:
- ✅ 采用ChatGPT风格设计的现代web界面
- ✅ 同时为UI和API提供服务的FastAPI后端
- ✅ 使用数据库工具完成MCP服务器
- ✅ 综合测试套件(75+测试通过)
- ✅ 所有设备的响应式设计
- ✅ 无障碍合规性(WCAG)
- ✅ 已准备好进行Azure容器部署
如何使用:
- 在中配置数据库
.env文件 - 跑
python main.py - 访问http://localhost:8000
- 开始和你的数据库聊天吧!
预期成果
一个生产就绪的web应用程序,展示了会话式人工智能如何使数据访问民主化,使企业主能够独立探索他们的数据,同时保持安全性和准确性。该系统感觉就像有一名高级数据分析师全天候处理任何业务问题。
未来法学硕士:发展背景
当前实施方法:
- 建筑:为web UI和API端点提供服务的单个FastAPI服务器
- 前端:遵循design.json规范的普通HTML/CSS/JavaScript(无框架)
- 后端:具有静态文件服务的FastAPI,与现有的MCP服务器集成
- 测试:全面的TDD方法,在UI和后端进行了75次以上的测试
- 部署目标:Azure容器(单容器架构)
开发关键文件:
main.py:主FastAPI服务器(入口点)ui/index.html:主web界面ui/js/app.js:前端应用程序逻辑src/mssql/server.py:MCP服务器实现tests/test_fastapi_integration.py:后端集成测试ui/tests/:前端测试套件(60个测试)design.json:UI设计系统规范CLAUDE.md:开发说明和最佳做法
发展理念:
- TDD方法论(先写测试)
- 无过度设计(简单、专注的解决方案)
- 具有可访问性的现代网络标准
- Azure就绪容器部署
- LLM交接的综合文件
贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 为您的更改编写测试
- 确保所有测试通过(
python -m pytest tests/ -v) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
依赖项
fastmcp>=2.8.1
pyodbc>=4.0.35
python-dotenv>=1.0.1
gradio>=5.0.0
anthropic>=0.40.0
fastapi>=0.104.0
uvicorn>=0.24.0
发展的下一步
第6阶段:真正的数据库集成✅ 完成
- ✅ 使用可配置模型实施Claude API成本管理
- ✅ 将FastAPI端点连接到真实的MCP服务器调用
- ✅ 用实际数据库查询替换模拟API响应
- ✅ 验证真实数据库场景是否端到端工作
- ✅ 全部23项集成测试通过
- ✅ MCP服务器成功分析数据库结构
第7阶段:商业智能层(当前)
- 实现自然语言到SQL的转换
- 增加业务背景理解(客户、产品、销售)
- 为后续问题创建对话记忆
- 添加积极的见解和建议
- 使用Sarah角色对真实业务场景进行测试
成本管理策略:
- 默认:用于测试的Mock Claude API(零成本)
- 开发:用于模型选择和API启用/禁用的环境变量
- 测试:最低成本的Claude Haiku模型(每M代币0.25美元/1.25美元)
- 生产:可配置的型号选择(Sonnet/Opus质量)
第8阶段:Azure部署(未来)
- 用于Azure部署的Docker容器化
- 环境特定配置
- 生产安全强化
未来的增强功能:
- 高级可视化功能
- 导出功能
- 多数据库支持
- 高级分析功能
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
“通过对话式人工智能实现数据访问的民主化”
项目状态:生产就绪Web界面✅