AnalyticDB PostgreSQL MCP Server 是AI代理与AnalyticDB PostgreSQL数据库之间的通用接口。它使AI代理能够无缝地与AnalyticDB PostgreSQL通信,帮助AI代理检索数据库元数据并执行SQL操作。
你可以从源代码进行安装以用于开发,或者通过PyPI直接安装用于生产环境。
如果你希望修改或贡献到服务器,推荐使用此方法。
# 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 .
这是最简单的安装方式,可以直接在你的项目中使用。
pip install adbpg-mcp-server
服务器可以运行在两种传输模式下:stdio(默认)用于与MCP客户端集成,以及http用于直接API访问或调试。
在运行服务器之前,请确保已经设置了所需的环境变量。
这是与MCP客户端通信的标准模式。
# 使用默认传输(stdio)运行
uv run adbpg-mcp-server
# 或者明确指定传输
uv run adbpg-mcp-server --transport stdio
这种模式会暴露一个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客户端集成,请在客户端的配置文件中添加以下配置。args数组中的参数取决于你选择的传输协议。
"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"。
"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
filename (text):要上传的文件名。context (text):文件的文本内容。adbpg_graphrag_query
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
messages (json):要上传的文件名。user_id (text):用户ID。run_id (text):运行ID。agent_id (text):代理ID。metadata (json):元数据JSON(可选)。memory_type (text):记忆类型(可选)。prompt (text):提示(可选)。
注意:
至少应提供user_id、run_id或agent_id之一。adbpg_llm_memory_get_all
user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。run_id (text):运行ID(可选)。agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。
注意:
至少应提供user_id、run_id或agent_id之一。adbpg_llm_memory_search
query (text):搜索查询字符串。user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。run_id (text):运行ID(可选)。agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。filter (json):附加过滤条件的JSON格式(可选)。
注意:
至少应提供user_id、run_id或agent_id之一。adbpg_llm_memory_delete_all
user_id (text):用户ID(可选)。如果提供,则获取该用户的全部记忆。run_id (text):运行ID(可选)。agent_id (text):代理ID(可选)。如果提供,则获取该代理的全部记忆。
注意:
至少应提供user_id、run_id或agent_id之一。adbpg:///schemas:获取数据库中的所有模式adbpg:///{schema}/tables:列出特定模式中的所有表adbpg:///{schema}/{table}/ddl:获取表DDLadbpg:///{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或嵌入式服务端点的基础URLLLM_MODEL:LLM模型名称或标识符EMBEDDING_MODEL:嵌入式模型名称或标识符uv(用于环境和包管理)