项目简介

'tiger-docs-mcp-server' 是一个基于 Model Context Protocol (MCP) 实现的应用后端,旨在为大型语言模型(LLM)客户端提供 PostgreSQL 和 TimescaleDB 的文档查询能力。它将数据库中存储的文档内容封装为可供 LLM 调用的“工具”和预设的“Prompt 模板”,实现智能、上下文感知的交互。

主要功能点

  • PostgreSQL 文档语义搜索: 允许 LLM 通过自然语言查询 PostgreSQL 文档,系统会根据语义相似度返回最相关的文档片段。
  • TimescaleDB 文档语义搜索: 类似地,提供 TimescaleDB 文档的语义搜索功能,帮助 LLM 快速获取专业信息。
  • TimescaleDB 指南获取: LLM 可以调用工具获取预定义的 TimescaleDB 操作指南、最佳实践等 Prompt 模板,简化复杂主题的交互。
  • 上下文服务: 作为 MCP 服务器,它以标准化的方式向 LLM 提供结构化的上下文信息,增强 LLM 处理特定领域知识的能力。

安装步骤

  1. 克隆仓库:
    git clone --recurse-submodules https://github.com/timescale/tiger-docs-mcp-server.git
    cd tiger-docs-mcp-server
    如果未带 '--recurse-submodules',请运行:
    git submodule update --init --recursive
  2. 安装依赖并构建:
    npm install
  3. 配置环境变量: 复制 '.env.sample' 文件为 '.env',并填写数据库连接信息和 OpenAI API Key。
    cp .env.sample .env
    示例 '.env' 文件内容(请替换为您的实际凭据):
    PGHOST="your_db_host"
    PGDATABASE="your_db_name"
    PGPORT="your_db_port"
    PGUSER="your_db_user"
    PGPASSWORD="your_db_password"
    OPENAI_API_KEY="your_openai_api_key"
  4. 数据导入(可选,但推荐): 此服务器依赖预先导入的 PostgreSQL 和 TimescaleDB 文档数据。您可以运行 'ingest/postgres_docs.py' 和 'ingest/timescale_docs.py' 脚本来填充数据库。 这些脚本需要 Python 环境和相应的依赖(如 'psycopg', 'openai', 'beautifulsoup4' 等),并会从官方源拉取文档并生成嵌入向量。

服务器配置(为MCP客户端配置)

MCP 客户端(如 Claude Desktop)需要通过以下 JSON 配置连接到此服务器。请将 'command' 中的路径替换为您的服务器安装路径。

{
  "mcpServers": {
    "tiger-docs": {
      "command": "node",
      "args": [
        "/absolute/path/to/tiger-docs-mcp-server/dist/index.js", // 替换为 MCP 服务器的绝对路径
        "stdio"
      ],
      "env": {
        "PGHOST": "your_db_host",      // 数据库主机名
        "PGDATABASE": "your_db_name",   // 数据库名称
        "PGPORT": "your_db_port",       // 数据库端口
        "PGUSER": "your_db_user",       // 数据库用户名
        "PGPASSWORD": "your_db_password", // 数据库密码
        "OPENAI_API_KEY": "your_openai_api_key" // OpenAI API 密钥
      }
    }
  }
}

基本使用方法

配置完成后,您的 MCP 客户端(如 Claude Desktop)将能够自动发现并连接到 'tiger-docs' MCP 服务器。

LLM 可以直接调用暴露的工具,例如:

  • 语义搜索 PostgreSQL 文档: 提问关于 PostgreSQL 的问题,如“What is the SQL command to create a table?”
  • 语义搜索 TimescaleDB 文档: 提问关于 TimescaleDB 的问题,如“How to create a hypertable in TimescaleDB?”
  • 获取 TimescaleDB 指南: 请求特定的指南,如“Give me the best practices for TimescaleDB indexing.”

服务器会处理请求,执行语义搜索或返回预定义指南,并将结果作为上下文信息提供给 LLM,从而实现更智能、更专业的对话。

信息

分类

AI与计算