使用说明
AnalyticDB PostgreSQL MCP服务器
AnalyticDB PostgreSQL MCP服务器是AI代理和AnalyticDB PostgreSQL数据库之间的通用接口。它实现了AI代理和AnalyticDB PostgreSQL之间的无缝通信,帮助AI代理检索数据库元数据并执行SQL操作。
安装
您可以从源代码设置服务器进行开发,也可以从PyPI安装服务器直接使用。
选项1:来源(用于发展)
如果您想修改或贡献服务器,建议使用此方法。
# 1. Clone the repository
git clone https://github.com/aliyun/alibabacloud-adbpg-mcp-server.git
cd alibabacloud-adbpg-mcp-server
# 2. Create and activate a virtual environment using uv
uv venv .venv
source .venv/bin/activate # On Linux/macOS
# .\.venv\Scripts\activate # On Windows
# 3. Install the project in editable mode
uv pip install -e .
选项2:来自PyPI(用于生产/使用)
这是安装服务器以在项目中直接使用的最简单方法。
pip install adbpg-mcp-server
运行服务器
服务器可以在两种传输模式下运行: stdio (默认)用于与MCP客户端集成,以及 http 用于API的直接访问或调试。
确保您已设置所需的 环境变量 在运行服务器之前。
标准模式(默认)
这是与MCP客户端通信的标准模式。
# Run using the default transport (stdio)
uv run adbpg-mcp-server
# Or explicitly specify the transport
uv run adbpg-mcp-server --transport stdio
流式HTTP模式
此模式公开了一个HTTP服务器,这对于通过REST API进行测试、调试或直接集成非常有用。
# Run the server in HTTP mode on the default host and port (127.0.0.1:3000)
uv run adbpg-mcp-server --transport http
# Specify a custom host and port with authentication
uv run adbpg-mcp-server --transport http --host 0.0.0.0 --port 3000 --auth-token your-secret-token
安全: 绑定到时
0.0.0.0或任何网络可访问的地址,始终通过以下方式设置身份验证令牌--auth-token或MCP_AUTH_TOKEN环境变量。如果没有令牌/mcp端点对未经身份验证的访问开放。客户必须包括Authorization: Bearer <token>所有请求中的标头。
MCP集成
要将此服务器与父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"从args阵列。
流式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",
"MCP_AUTH_TOKEN": "your-secret-token",
"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- 说明: 使用指定的查询字符串和模式查询图形
- 参数:
query_str(text):查询内容。query_mode(text):查询模式,从中选择[bypass, naive, local, global, hybrid, mix]。如果为null,则默认为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_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:数据库名称
对于HTTP传输模式,以下可选变量启用端点身份验证:
MCP_AUTH_TOKEN:HTTP端点身份验证的承载令牌(也可以通过以下方式设置--auth-tokenCLI参数)。 强烈推荐 当绑定到非环回地址时。
MCP服务器需要以下环境变量来初始化graphRAG和llm内存服务器:
API_KEY:LLM提供程序或嵌入API的API密钥BASE_URL:LLM或嵌入服务端点的基本URLLLM_MODEL:LLM型号名称或标识符EMBEDDING_MODEL:嵌入模型名称或标识符
依赖项
- Python 3.11或更高版本
uv(用于环境和包装管理)
