XiYan MCP 服务器(xiyan_mcp_server)

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个基于 Model Context Protocol (MCP) 的服务器端后端,能够对外提供资源(数据库表/结构)、工具(SQL/数据查询等能力)、以及 Prompt 渲染相关的能力,LLM 客户端可通过 JSON-RPC 与服务器交互,以实现自然语言查询数据库、执行外部工具等能力。
  • 主要功能点

    • 数据库资源托管与读取:支持 GreptimeDB、MySQL、PostgreSQL、SQLite 等数据库,并对表结构、列信息提供信息检索和延迟加载。
    • 工具注册与执行:提供诸如 get_data 等工具,LLM 可以通过工具调用来获取数据库查询结果。
    • Prompt 模板与输出格式:支持多格式输出(Markdown、JSON、CSV),并具备将查询结果以多种格式渲染的能力。
    • 本地模型与向量检索集成:内置 EmbeddingService 和 Redis 向量索引,用于 Schema 检索与子 Schema 构建。
    • 会话管理与传输协议:提供初始化、通知等 MCP 流程,支持 stdio、streamable-http、SSE 等传输方式,具备优雅关机流程。
    • 兼容性与扩展性:提供 GreptimeDB 专用方言、延迟加载表列信息、SQL 自动修复尝试、以及对多数据源的统一访问接口。
  • 安装步骤

    • 环境要求:Python 3.11 及以上,Redis(可选,用于知识库向量检索)。
    • 安装并进入项目(示例,不包含具体目录结构以免歧义):
      • 运行环境准备后,执行 pip install -e . 来安装包依赖。
    • 配置示例(自定义数据库和 Embedding 等参数请参考 config.yml):
      • 该仓库提供了一个 config.yml 的配置模板,包含 model、database、schema_filter、embedding、redis 等配置项,示例中涵盖 GreptimeDB、向量检索、及本地/外部模型等配置。
  • 服务器配置(MCP 客户端所需信息) 说明:以下信息用于 MCP 客户端对接服务器,描述服务器名称、启动命令及参数。MCP 客户端本身通常不需要写死的代码,只需按该配置启动并连接。 { "server_name": "xiyan", "command": "python", "args": [ "-m", "xiyan_mcp_server", "streamable-http", "--host", "0.0.0.0", "--port", "8000" ] }

    • 说明:
      • server_name 与服务器端在代码中注册的 MCP 服务器名称保持一致(本仓库中在 FastMCP 实例化时使用的名称为 "xiyan")。
      • command 与 args 指示如何在本地启动 MCP 服务器本体。示例中的启动方式为通过 Python 模块直接启动 HTTP 流式传输模式(streamable-http),监听 0.0.0.0:8000。
      • 端口、主机、传输模式(stdio、streamable-http、sse)可根据实际网络和客户端能力调整。
  • 基本使用方法

    • 启动服务器后,客户端初始化会话并发送初始化、工具调用等请求,服务器返回 JSON-RPC 响应。
    • 客户端可通过工具 get_data 进行自然语言查询,服务器会将查询请求转为 SQL,并以所需格式返回结果(Markdown/JSON/CSV)。
    • 如需停止服务,优雅关闭信号处理程序将等待活跃请求完成后再清理资源并退出。
  • 备注

    • 服务器包含多数据源支持、向量化检索、以及本地模型部署能力,适用于需要把数据库查询能力以 MCP 服务形式提供给大模型的应用场景。

服务器信息