Kylin SQL查询服务

Kylin MCP Server是一个用于执行SQL查询和获取Hive表元数据的服务,适用于大数据分析和数据仓库管理场景。

  • by jlfsdtc
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jlfsdtc/Kylin-MCP

使用说明

麒麟MCP服务器

特性

Kylin工具

  • run_select_query

    • 在Kylin集群上执行SQL查询。
    • 输入: sql (string):要执行的SQL查询。
  • list_tables

    • 调用API获取指定配置单元表的元数据。
    • 输入: project (string):项目的名称。
    • 输入: database (string):数据库的名称。
    • 输入: table (string):表的名称。

健康检查端点

当使用HTTP或SSE传输运行时,可以在以下位置使用健康检查端点 /health。此端点:

  • 退货 200 OK 如果服务器健康并且可以连接到Kylin,则使用Kylin版本
  • 退货 503 Service Unavailable 如果服务器无法连接到Kylin

例子:

curl http://localhost:8000/health
# Response: Kylin status is UP

配置

  1. 打开位于以下位置的Claude Desktop配置文件:

    • 在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
  2. 添加以下内容:

{
  "mcpServers": {
    "kylin-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "kylin-mcp",
        "--python",
        "3.10",
        "kylin-mcp"
      ],
      "env": {
        "KYLIN_HOST": "<kylin-host>",
        "KYLIN_PORT": "<kylin-port>",
        "KYLIN_USER": "<kylin-user>",
        "KYLIN_PASSWORD": "<kylin-password>",
        "KYLIN_SECURE": "true",
        "KYLIN_VERIFY": "true",
        "KYLIN_CONNECT_TIMEOUT": "30",
        "KYLIN_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}
  1. 找到以下命令项 uv 并将其替换为指向的绝对路径 uv 可执行。这确保了正确的版本 uv 启动服务器时使用。在mac上,您可以使用以下命令找到此路径 which uv.

  2. 重新启动Claude Desktop以应用更改。

在没有uv的情况下运行(使用Python系统)

如果你更喜欢使用Python系统安装而不是uv,你可以从PyPI安装包并直接运行它:

  1. 使用pip安装软件包:

    python3 -m pip install kylin-mcp
    

    要升级到最新版本:

    python3 -m pip install --upgrade kylin-mcp
    
  2. 更新您的Claude Desktop配置以直接使用Python:

{
  "mcpServers": {
    "kylin-mcp": {
      "command": "python3",
      "args": [
        "-m",
        "kylin_mcp.main"
      ],
      "env": {
        "KYLIN_HOST": "<kylin-host>",
        "KYLIN_PORT": "<kylin-port>",
        "KYLIN_USER": "<kylin-user>",
        "KYLIN_PASSWORD": "<kylin-password>",
        "KYLIN_SECURE": "true",
        "KYLIN_VERIFY": "true",
        "KYLIN_CONNECT_TIMEOUT": "30",
        "KYLIN_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

或者,您可以直接使用已安装的脚本:

{
  "mcpServers": {
    "kylin-mcp": {
      "command": "kylin-mcp",
      "env": {
        "KYLIN_HOST": "<kylin-host>",
        "KYLIN_PORT": "<kylin-port>",
        "KYLIN_USER": "<kylin-user>",
        "KYLIN_PASSWORD": "<kylin-password>",
        "KYLIN_SECURE": "true",
        "KYLIN_VERIFY": "true",
        "KYLIN_CONNECT_TIMEOUT": "30",
        "KYLIN_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

注意:确保使用Python可执行文件的完整路径或 kylin-mcp 如果它们不在您的系统PATH中,则执行脚本。您可以通过以下方式找到路径:

  • which python3 对于Python可执行文件
  • which kylin-mcp 对于已安装的脚本

发展

  1. 在 test-services 目录运行 sh docker.sh 开始Kylin。

  2. 将以下变量添加到 .env 存储库根目录中的文件。

注:使用 default 在此上下文中,用户仅用于本地开发目的。

KYLIN_HOST=localhost
KYLIN_PORT=7070
KYLIN_USER=admin
KYLIN_PASSWORD=KYLIN
  1. 跑 uv sync 安装依赖项。安装 uv 按照说明 这里。那就去吧 source .venv/bin/activate.

  2. 为了便于使用MCP检查器进行测试,请运行 fastmcp dev kylin-mcp/mcp_server.py 启动MCP服务器。

  3. 要使用HTTP传输和健康检查端点进行测试,请执行以下操作:

    # Using default port 8000
    KYLIN_MCP_SERVER_TRANSPORT=http python -m kylin_mcp.main
    
    # Or with a custom port
    KYLIN_MCP_SERVER_TRANSPORT=http KYLIN_MCP_BIND_PORT=4200 python -m kylin_mcp.main
    
    # Then in another terminal:
    curl http://localhost:8000/health  # or http://localhost:4200/health for custom port
    

环境变量

以下环境变量用于配置Kylin连接:

必需变量
  • KYLIN_HOST:您的Kylin服务器的主机名
  • KYLIN_USER:用于身份验证的用户名
  • KYLIN_PASSWORD:身份验证密码

[!小心] 将MCP数据库用户视为连接到数据库的任何外部客户端,只授予其操作所需的最低权限,这一点很重要。应始终严格避免使用默认用户或管理用户。

可选变量
  • KYLIN_PORT:ClickHouse服务器的端口号
    • 违约: 7070
    • 通常不需要设置,除非使用非标准端口
  • KYLIN_SECURE:启用/禁用HTTPS连接
    • 违约: "true"
    • 吃起来 "false" 用于非安全连接
  • KYLIN_CONNECT_TIMEOUT:连接超时(秒)
    • 违约: "30"
    • 如果遇到连接超时,请增加此值
  • KYLIN_SEND_RECEIVE_TIMEOUT:发送/接收超时(秒)
    • 违约: "300"
    • 为长时间运行的查询增加此值
  • KYLIN_MCP_SERVER_TRANSPORT:设置MCP服务器的传输方法。
    • 违约: "stdio"
    • 有效选项: "stdio", "http", "sse"这对于使用MCP Inspector等工具进行本地开发非常有用。
  • KYLIN_MCP_BIND_HOST:使用HTTP或SSE传输时将MCP服务器绑定到的主机
    • 违约: "127.0.0.1"
    • 吃起来 "0.0.0.0" 绑定到所有网络接口(对Docker或远程访问有用)
    • 仅在运输时使用 "http" 或 "sse"
  • KYLIN_MCP_BIND_PORT:使用HTTP或SSE传输时绑定MCP服务器的端口
    • 违约: "8000"
    • 仅在运输时使用 "http" 或 "sse"