MCP数据库查询服务
一个基于Model Context Protocol的SQLite数据库查询服务,为AI应用提供标准化的数据库访问、安全的SQL查询执行以及表结构预览功能。
README
MCP数据库查询服务
一个基于Model Context Protocol (MCP)的SQLite数据库查询服务,为AI应用提供标准化的数据库访问能力。
🚀 功能特性
核心功能
- 数据库连接管理: 安全的SQLite数据库连接和查询
- SQL查询执行: 支持SELECT查询,内置安全防护
- 表结构查询: 获取数据库表的详细结构信息
- 样本数据获取: 快速预览表中的示例数据
- 架构导出: 完整的数据库架构信息
MCP协议支持
- 工具(Tools): 提供5个核心数据库操作工具
- 资源(Resources): 支持数据库元数据资源访问
- 提示(Prompts): 内置SQL查询和分析提示模板
- 安全机制: SQL注入防护、查询限制、访问控制
技术架构
- 通信协议: JSON-RPC over stdio
- 数据库: SQLite 3.x
- 编程语言: Python 3.8+
- 依赖管理: pip/requirements.txt
📦 安装指南
1. 环境要求
- Python 3.8 或更高版本
- pip 包管理器
2. 克隆项目
git clone <repository-url>
cd mcp_learn
3. 安装依赖
pip install -r requirements.txt
4. 创建示例数据库
python create_sample_database.py
🎯 快速开始
方式一:使用启动脚本
python start_server.py
方式二:直接启动服务器
python mcp_database_server.py
📋 项目结构
mcp_learn/
├── README.md # 项目说明文档
├── requirements.txt # Python依赖列表
├── config.py # 服务器配置文件
├── database_manager.py # 数据库管理模块
├── mcp_database_server.py # MCP服务器主程序
├── create_sample_database.py # 示例数据库创建脚本
├── start_server.py # 服务器启动脚本
└── sample_data.db # 示例SQLite数据库(运行后生成)
🛠️ 可用工具
1. query_database
执行SQL查询操作
{
"name": "query_database",
"arguments": {
"query": "SELECT * FROM users WHERE age > 25 LIMIT 10"
}
}
2. get_table_info
获取表结构信息
{
"name": "get_table_info",
"arguments": {
"table_name": "users"
}
}
3. list_tables
列出所有数据库表
{
"name": "list_tables",
"arguments": {}
}
4. get_table_sample
获取表样本数据
{
"name": "get_table_sample",
"arguments": {
"table_name": "products",
"limit": 5
}
}
5. get_database_schema
获取完整数据库架构
{
"name": "get_database_schema",
"arguments": {}
}
📚 可用资源
1. 数据库表列表
- URI:
database://tables - 描述: 获取所有数据库表的列表
2. 数据库架构
- URI:
database://schema - 描述: 获取完整的数据库架构信息
3. 特定表信息
- URI:
database://table/{table_name} - 描述: 获取指定表的详细信息
💡 提示模板
1. SQL查询助手
- 名称:
sql_query_helper - 用途: 帮助构建和优化SQL查询
2. 数据分析助手
- 名称:
data_analysis_helper - 用途: 协助进行数据分析和洞察
3. 表结构分析
- 名称:
schema_analysis_helper - 用途: 分析数据库表结构和关系
🔧 配置说明
config.py 配置项
class DatabaseConfig:
database_path: str = "sample_data.db" # 数据库文件路径
connection_timeout: int = 30 # 连接超时时间
query_timeout: int = 60 # 查询超时时间
max_query_results: int = 1000 # 最大查询结果数
class SecurityConfig:
allowed_operations: List[str] = ["SELECT"] # 允许的SQL操作
forbidden_tables: List[str] = [] # 禁止访问的表
enable_sql_injection_protection: bool = True # SQL注入防护
class MCPConfig:
server_name: str = "database-query-server" # 服务器名称
server_version: str = "1.0.0" # 服务器版本
class LoggingConfig:
log_file: str = "mcp_server.log" # 日志文件路径
log_rotation: str = "1 day" # 日志轮转周期
log_level: str = "INFO" # 日志级别
🔒 安全特性
SQL注入防护
- 参数化查询
- SQL语句验证
- 危险关键词过滤
访问控制
- 操作类型限制(仅允许SELECT)
- 表访问控制
- 查询结果数量限制
错误处理
- 详细的错误信息
- 安全的错误响应
- 日志记录
🔌 客户端集成
Claude Desktop
在Claude Desktop配置文件中添加:
{
"mcpServers": {
"database-query": {
"command": "python",
"args": ["/path/to/mcp_database_server.py"],
"cwd": "/path/to/mcp_learn"
}
}
}
Cursor IDE
- 打开Cursor设置
- 添加MCP服务器配置
- 指定服务器路径和参数
其他MCP客户端
任何支持MCP协议的客户端都可以连接此服务器。
📊 示例数据库
示例数据库包含以下表:
users (用户表)
- id, username, email, full_name, age, city, registration_date, is_active
products (产品表)
- id, name, category, price, stock_quantity, description, created_date
orders (订单表)
- id, user_id, order_date, total_amount, status, shipping_address
order_items (订单详情表)
- id, order_id, product_id, quantity, unit_price
activity_logs (活动日志表)
- id, user_id, action, description, ip_address, timestamp
🐛 故障排除
常见问题
-
依赖安装失败
pip install --upgrade pip pip install -r requirements.txt -
数据库文件不存在
python create_sample_database.py -
权限错误 确保对项目目录有读写权限
-
端口占用 MCP使用stdio通信,不涉及端口问题
调试模式
修改config.py中的日志级别:
log_level: str = "DEBUG"
🤝 贡献指南
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建Pull Request
📄 许可证
MIT License - 详见LICENSE文件
📞 支持
如有问题或建议,请:
- 查看文档和FAQ
- 提交Issue
- 联系维护者
注意: 这是一个示例项目,用于演示MCP协议的数据库查询功能。在生产环境中使用前,请确保进行充分的安全评估和测试。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。