返回市场
阿里云-adbpg-mcp服务器

阿里云-adbpg-mcp服务器

作者:aliyun10 星标更新:2025-09-15

项目介绍

AnalyticDB PostgreSQL MCP Server

AnalyticDB PostgreSQL MCP Server 是AI代理与AnalyticDB PostgreSQL数据库之间的通用接口。它使AI代理能够无缝地与AnalyticDB PostgreSQL通信,帮助AI代理检索数据库元数据并执行SQL操作。

安装

你可以从源代码进行安装以用于开发,或者通过PyPI直接安装用于生产环境。

方案1:从源代码安装(适用于开发)

如果你希望修改或贡献到服务器,推荐使用此方法。

# 1. 克隆仓库
git clone https://github.com/aliyun/alibabacloud-adbpg-mcp-server.git
cd alibabacloud-adbpg-mcp-server

# 2. 使用uv创建并激活虚拟环境
uv venv .venv
source .venv/bin/activate  # 在Linux/macOS上
# .\.venv\Scripts\activate  # 在Windows上

# 3. 以可编辑模式安装项目
uv pip install -e .

方案2:从PyPI安装(适用于生产/使用)

这是最简单的安装方式,可以直接在你的项目中使用。

pip install adbpg-mcp-server

运行服务器

服务器可以运行在两种传输模式下:stdio(默认)用于与MCP客户端集成,以及http用于直接API访问或调试。

在运行服务器之前,请确保已经设置了所需的环境变量

Stdio模式(默认)

这是与MCP客户端通信的标准模式。

# 使用默认传输(stdio)运行
uv run adbpg-mcp-server

# 或者明确指定传输
uv run adbpg-mcp-server --transport stdio

Streamable-HTTP模式

这种模式会暴露一个HTTP服务器,对于测试、调试或通过REST API直接集成非常有用。

# 在默认主机和端口(127.0.0.1:3000)上以HTTP模式运行服务器
uv run adbpg-mcp-server --transport http

# 指定自定义主机和端口
uv run adbpg-mcp-server --transport http --host 0.0.0.0 --port 3000

MCP集成

要将此服务器与父MCP客户端集成,请在客户端的配置文件中添加以下配置。args数组中的参数取决于你选择的传输协议。

示例:Stdio传输

"mcpServers": {
  "adbpg-mcp-server": {
    "command": "uv",
    "args": [
      "run",
      "adbpg-mcp-server",
      "--transport",
      "stdio"
    ],
    "env": {
      "ADBPG_HOST": "host",
      "ADBPG_PORT": "port",
      "ADBPG_USER": "username",
      "ADBPG_PASSWORD": "password",
      "ADBPG_DATABASE": "database",
      "GRAPHRAG_API_KEY": "graphrag llm api key",
      "GRAPHRAG_BASE_URL": "graphrag llm base url",
      "GRAPHRAG_LLM_MODEL": "graphrag llm model name",
      "GRAPHRAG_EMBEDDING_MODEL": "graphrag embedding model name",
      "GRAPHRAG_EMBEDDING_API_KEY": "graphrag embedding api key",
      "GRAPHRAG_EMBEDDING_BASE_URL": "graphrag embedding url",
      "LLMEMORY_API_KEY": "llm memory api_key",
      "LLMEMORY_BASE_URL": "llm memory base_url",
      "LLMEMORY_LLM_MODEL": "llm memory model name",
      "LLMEMORY_EMBEDDING_MODEL": "llm memory embedding model name",
      "LLMEMORY_ENABLE_GRAPH": "enable graph engine for llm memory (Default: false)"
    }
  }
}

注意: 由于stdio是默认值,你可以选择性地省略"--transport", "stdio"

示例:Streamable-HTTP传输

"mcpServers": {
  "adbpg-mcp-server": {
    "command": "uv",
    "args": [
      "run",
      "adbpg-mcp-server",
      "--transport",
      "http",
      "--port",
      "3000"
    ],
    "env": {
      "ADBPG_HOST": "host",
      "ADBPG_PORT": "port",
      "ADBPG_USER": "username",
      "ADBPG_PASSWORD": "password",
      "ADBPG_DATABASE": "database",
      "GRAPHRAG_API_KEY": "graphrag llm api key",
      "GRAPHRAG_BASE_URL": "graphrag llm base url",
      "GRAPHRAG_LLM_MODEL": "graphrag llm model name",
      "GRAPHRAG_EMBEDDING_MODEL": "graphrag embedding model name",
      "GRAPHRAG_EMBEDDING_API_KEY": "graphrag embedding api key",
      "GRAPHRAG_EMBEDDING_BASE_URL": "graphrag embedding url",
      "LLMEMORY_API_KEY": "llm memory api_key",
      "LLMEMORY_BASE_URL": "llm memory base_url",
      "LLMEMORY_LLM_MODEL": "llm memory model name",
      "LLMEMORY_EMBEDDING_MODEL": "llm memory embedding model name",
      "LLMEMORY_ENABLE_GRAPH": "enable graph engine for llm memory (Default: false)"
    }
  }
}

工具

  • execute_select_sql: 在AnalyticDB PostgreSQL服务器上执行SELECT SQL查询

  • execute_dml_sql: 在AnalyticDB PostgreSQL服务器上执行DML(INSERT, UPDATE, DELETE)SQL查询

  • execute_ddl_sql: 在AnalyticDB PostgreSQL服务器上执行DDL(CREATE, ALTER, DROP)SQL查询

  • analyze_table: 收集表统计信息

  • explain_query: 获取查询执行计划

  • adbpg_graphrag_upload

    • 描述: 将文本文件(及其名称)和文件内容上传到graphrag以生成知识图谱。
    • 参数:
      • filename (text):要上传的文件名。
      • context (text):文件的文本内容。
  • adbpg_graphrag_query

    • 描述: 使用指定的查询字符串和模式查询graphrag。
    • 参数:
      • query_str (text):查询内容。
      • query_mode (text):查询模式,从[bypass, naive, local, global, hybrid, mix]中选择。如果为空,默认为mix
  • adbpg_graphrag.upload_decision_tree(context text, root_node text)

    • 描述: 上传具有指定root_node的决策树。如果root_node不存在,则创建新的决策树。
    • 参数:
      • context (text):决策树的文本表示。
      • root_node (text):根节点的内容。
  • adbpg_graphrag.append_decision_tree(context text, root_node_id text)

    • 描述: 将子树附加到由root_node_id指定的现有决策树的节点上。
    • 参数:
      • context (text):子树的文本表示。
      • root_node_id (text):子树将被附加到的节点ID。
  • adbpg_graphrag.delete_decision_tree(root_node_entity text)

    • 描述: 删除由root_node_entity指定的节点下的子决策树。
    • 参数:
      • root_node_entity (text):要删除的子决策树的根节点ID。
  • adbpg_llm_memory_add

    • 描述: 添加LLM长期记忆。
    • 参数:
      • messages (json):要上传的文件名。
      • user_id (text):用户ID。
      • run_id (text):运行ID。
      • agent_id (text):代理ID。
      • metadata (json):元数据JSON(可选)。
      • memory_type (text):记忆类型(可选)。
      • prompt (text):提示(可选)。 注意: 至少应提供user_idrun_idagent_id之一。
  • adbpg_llm_memory_get_all

    • 描述: 获取与特定用户、运行或代理相关的所有记忆记录。
    • 参数:
      • user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。
      • run_id (text):运行ID(可选)。
      • agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。 注意: 至少应提供user_idrun_idagent_id之一。
  • adbpg_llm_memory_search

    • 描述: 根据给定的查询获取与特定用户、运行或代理相关的记忆。
    • 参数:
      • query (text):搜索查询字符串。
      • user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。
      • run_id (text):运行ID(可选)。
      • agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。
      • filter (json):附加过滤条件的JSON格式(可选)。 注意: 至少应提供user_idrun_idagent_id之一。
  • adbpg_llm_memory_delete_all

    • 描述: 删除与特定用户、运行或代理相关的所有记忆记录。
    • 参数:
      • user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。
      • run_id (text):运行ID(可选)。
      • agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。 注意: 至少应提供user_idrun_idagent_id之一。

资源

内置资源

  • adbpg:///schemas:获取数据库中的所有模式

资源模板

  • adbpg:///{schema}/tables:列出特定模式中的所有表
  • adbpg:///{schema}/{table}/ddl:获取表DDL
  • adbpg:///{schema}/{table}/statistics:显示表统计信息

环境变量

MCP服务器需要以下环境变量来连接到AnalyticDB PostgreSQL实例:

  • ADBPG_HOST:数据库主机地址
  • ADBPG_PORT:数据库端口
  • ADBPG_USER:数据库用户名
  • ADBPG_PASSWORD:数据库密码
  • ADBPG_DATABASE:数据库名称

MCP服务器需要以下环境变量来初始化graphRAG和llm内存服务器:

  • API_KEY:LLM提供商或嵌入式API的API密钥
  • BASE_URL:LLM或嵌入式服务端点的基础URL
  • LLM_MODEL:LLM模型名称或标识符
  • EMBEDDING_MODEL:嵌入式模型名称或标识符

依赖项

  • Python 3.11或更高版本
  • uv(用于环境和包管理)