db-reader-mcp

使用说明(Markdown 格式,便于快速上手):

  • 项目简介

    • db-reader-mcp 是一个完整的 MCP 服务器实现,提供只读数据库查询、跨数据库工具、表结构/模式渲染等能力,面向将自然语言模型集成为集成式数据上下文的场景。
  • 主要功能点

    • 资源与数据访问:对接多种数据库(SQL/NoSQL),提供只读查询能力与结果处理。
    • 工具注册与执行:SQL 查询、描述表、获取模式、表统计、样本数据,以及 Redis/MongoDB/Elasticsearch 等的只读工具。
    • Prompt 模板与自定义交互:支持通过 MCP 客户端实现对话上下文的渲染与调用。
    • 安全与合规:严格只读、读取敏感数据脱敏、表级屏蔽、并发限制、超时控制和审计日志。
    • 多传输与健康监控:以 Streamable HTTP 为传输实现,提供 /health 端点用于健康检查。
    • 日志与监控:审计日志、慢查询日志、健康状态、连接池信息等。
  • 安装步骤

    • 基础安装(推荐开发环境):
      • 使用可读写的开发依赖配置安装方式(pyproject 配置包含 dev 依赖)。
      • 安装命令示例(简述):安装并准备好依赖后即可在项目根目录执行运行。
    • 生产运行前提
      • 根据需要开启不同数据库的可选依赖(如 Oracle、ClickHouse、Kingbase 等)。
      • 确保 YAML 配置文件 config/config.yaml 已正确配置数据库连接与安全策略。
    • 直接运行服务器
      • 启动命令:python -m db_reader_mcp.server
      • 默认监听地址与端口:0.0.0.0:3001,可通过环境变量 MCP_HOST、MCP_PORT 进行覆盖。
      • 健康检查地址:curl http://<host>:3001/health
  • 服务器配置(给 MCP 客户端的配置信息说明)

    • 服务器名称与启动命令
      • server name(服务器标识):db-reader-mcp
      • 启动命令(command):python
      • 参数(args):-m db_reader_mcp.server
    • 说明
      • 该服务器通过 /mcp 路径对外提供 MCP 服务,/health 提供健康检查状态。客户端在初始连接时应使用该服务器的启动命令在服务端进程中创建会话。
    • 备注
      • MCP 客户端实际连接信息通常在客户端配置中通过传输类型(如 streamableHttp)与服务端地址来完成,而服务器端启动命令以上述字段描述为准。
  • 基本使用方法

    • 连接与查询
      • 客户端通过 MCP 传输(例如 streamableHttp)向 /mcp 路径发送请求,服务端返回符合 MCP JSON-RPC 风格的响应。
      • 使用工具调用:query、list_tables、describe_table、get_schema、table_stats、sample_data、redis_command、mongo_query、es_query 等工具。
    • 安全与合规
      • 服务端默认为只读模式,未授权的写操作会被拒绝并给出错误信息。
      • 通过配置设置阻止表、脱敏策略、并发限制、超时等。
    • 快速示例
      • 在 MCP 客户端配置中将服务器地址指向 http://<主机>:3001/mcp,使用 StreamableHttp 传输即可开始交互(具体客户端场景见 README 示例)。

服务器信息