使用说明

项目简介

本项目 'mcp_python' 是一个 MCP (Model Context Protocol) 服务器的实现,专注于为大型语言模型 (LLM) 提供数据库查询能力。它允许 LLM 通过发送结构化的请求,执行 SQL 查询并获取 MySQL 数据库的 schema 信息。该服务器旨在简化 LLM 与数据库的交互,使其能够安全、高效地访问和利用数据库中的数据。

主要功能点

  • SQL 查询执行: 支持执行用户提供的 SQL 查询语句,并返回查询结果。
  • Schema 信息获取: 能够检索数据库中表结构的详细信息,包括表名、列名、数据类型等。
  • MCP 协议兼容: 遵循 Model Context Protocol 规范,通过 '/mcp' 端点与客户端进行通信。
  • 简单的 HTTP API: 除了 MCP 端点,还提供了易于测试和直接使用的 HTTP API ('/query', '/schema')。
  • CORS 支持: 允许跨域请求,方便集成到不同的 LLM 应用中。

安装步骤

  1. 克隆仓库: 将 'mcp_python' 仓库克隆到本地。
    git clone https://github.com/juananruiz/mcp_python
    cd mcp_python
  2. 创建并激活虚拟环境 (可选但推荐):
    python3 -m venv venv
    source venv/bin/activate
  3. 安装依赖: 安装项目所需的 Python 库。
    pip install -r requirements.txt
    (实际上仓库中没有 requirements.txt 文件,但根据 README 和代码,依赖包为 'fastapi uvicorn sqlalchemy pymysql python-dotenv',如果 'requirements.txt' 不存在,需要手动安装)
    pip install fastapi uvicorn sqlalchemy pymysql python-dotenv

服务器配置

MCP 客户端需要配置以下信息以连接到此 MCP 服务器。配置信息为 JSON 格式:

{
  "server name": "DatabaseQueryMCP",
  "command": "python",
  "args": [
    "main.py"
  ],
  "description": "MCP Server for database queries"
}

配置参数说明:

  • '"server name"': 服务器的名称,可以自定义。
  • '"command"': 启动服务器的命令,这里使用 'python' 解释器。
  • '"args"': 启动命令的参数列表,这里指定运行 'main.py' 文件。
  • '"description"': 服务器的描述信息,可自定义。

注意:

  • 确保 MySQL 服务器已启动并运行,并且在 '.env' 文件中配置了正确的数据库连接信息(主机名、用户名、密码、数据库名)。
  • 首次运行前,可能需要创建名为 'peticiones' 的数据库,并根据需要创建表结构。仓库中包含 'utils/create_sample_ticketsl.py' 脚本,可能用于生成示例数据到数据库,但需要根据实际情况配置数据库连接信息和表结构。

基本使用方法

  1. 启动服务器: 在仓库根目录下,运行以下命令启动 MCP 服务器。

    python main.py

    或者使用 'uvicorn' 启动以获得更好的性能和热重载 (开发环境推荐)。

    uvicorn main:app --reload

    服务器默认运行在 'http://localhost:8000'。

  2. 使用 MCP 客户端发送请求: MCP 客户端需要向服务器的 '/mcp' 端点发送 POST 请求,请求体为 JSON 格式,包含 'action' 字段以及其他 action 相关的参数。

    示例请求 (查询数据):

    POST http://localhost:8000/mcp
    Content-Type: application/json
    
    {
      "action": "query",
      "sql": "SELECT * FROM nombre_tabla LIMIT 10"
    }

    示例请求 (获取 schema):

    POST http://localhost:8000/mcp
    Content-Type: application/json
    
    {
      "action": "get_schema",
      "table_name": "nombre_tabla"
    }

    请参考仓库 'README.md' 中的 "Ejemplos de uso" 部分获取更多请求示例。

  3. 接收响应: 服务器会返回 JSON 格式的响应,包含查询结果或 schema 信息。

信息

分类

数据库与文件