使用说明

  • 项目简介

    • db-mcp 是一个用 Python 实现的 MCP 服务器,专门为 MySQL 数据库提供上下文信息、数据访问能力、SQL 执行能力以及数据血缘分析等功能,供 LLM 客户端在对数据库进行分析、推理和应用时使用。
    • 架构要点包括:异步数据库连接池、元数据缓存、可扩展的工具集、以及对多传输模式的支持(stdio、HTTP、SSE),并具备健康检查、缓存刷新、权限与日志等机制。
  • 主要功能点

    • 资源托管与访问:提供数据库、表、列、外键等结构信息的缓存与查询接口。
    • 工具注册与执行:提供诸如获取数据库列表、表列表、表结构、执行 SQL、获取服务器状态等工具,支持异步执行与进度回馈。
    • 血缘分析与查询:内置血缘存储(表级与列级)以及查询血缘关系的接口,后台可异步分析 SQL 并持久化结果。
    • 异步与并发:采用 aiomysql 实现异步连接池,内部有缓存后台刷新、并发控制及日志统计。
    • 多传输协议:支持 STDIO、HTTP、SSE 传输,用于不同场景的接入。
  • 安装步骤

    • 将仓库克隆或下载到本地。
    • 安装依赖并安装当前包:
      • 通常使用:pip install -e .
    • 另可在开发环境直接运行 server.py 入口文件来启动服务(请按配置项准备环境变量或 .env 文件)。
  • 服务器配置(MCP 客户端需要的最小信息)

    • MCP 客户端需要配置一个服务器条目,包含用于启动 MCP 服务器的命令与参数,以及必要的环境变量。以下为示例配置片段(JSON 结构,客户端不需要部署代码,仅用于描述如何启动服务器): { "mcpServers": { "mysql_dbmcp": { "command": "python", "args": ["server.py"], "cwd": "/path/to/db-mcp", "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_DATABASE": "your_database", "MYSQL_USER": "your_user", "MYSQL_PASSWORD": "your_password" } // 如果需要其他参数,请在 args 数组中追加,例如端口、传输模式等 } } }
    • 说明
      • server.py 是 MCP 服务器的入口,默认传输模式可能为 stdio(适合本地开发或 Claude Desktop),也可通过命令行参数覆盖为 http、sse 等传输模式并暴露相应端口。
      • 可以通过环境变量覆盖默认数据库连接信息和服务配置,确保服务器能正确连接到目标 MySQL 实例。
  • 基本使用方法

    • 启动服务器后,客户端可以通过工具调用以下示例工具(具体命名见代码中的工具暴露):
      • 获取数据库列表:get_databases
      • 获取某数据库的表列表:get_tables,若需要指定数据库可通过参数传入
      • 获取表结构:get_table_structure,指定 table_name 及数据库名称
      • 获取数据库外键关系:get_database_relations
      • 执行 SQL:execute_query,传入 sql 和可选的参数列表
      • 获取服务器状态与配置信息:get_server_status、get_server_config
      • 刷新缓存:refresh_metadata_cache
    • 使用示例(伪代码,实际使用以你所用的 MCP 客户端为准):
      • 连接并调用 get_databases 获取数据库列表
      • 选择一个数据库并调用 get_tables 获取表清单
      • 进一步调用 get_table_structure 获取表的结构、列与索引信息
      • 使用 execute_query 执行 SELECT/INSERT/UPDATE 等操作,结果会返回结构化数据
    • 运行模式注意事项
      • STDIO 模式适用于本地桌面环境或 Claude Desktop 等场景
      • HTTP/SSE 模式适用于多客户端网络访问,需注意安全与鉴权
      • 根据数据库规模、缓存策略和查询超时设置,调优配置参数以获得稳定性与性能
  • 备注

    • 服务器实现中包含了异步血缘分析、缓存更新以及健康检查,便于在大规模数据库场景中维持响应性与可观测性。
    • 如需在生产环境中使用,请确保数据库连接信息安全可靠,HTTP/SSE 模式下的暴露端点应配合防火墙或鉴权策略。
  • 参考要点

    • 运行入口通常是 server.py
    • 关键依赖包括 FastMCP、aiomysql、pydantic 等
    • 传输模式、主机、端口、以及环境变量可通过命令行参数或 .env 文件配置

信息

分类

数据库与文件