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
uv run adbpg-mcp-server --transport http --host 0.0.0.0 --port 3000MCP集成
要将此服务器与父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",
"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:数据库名称
MCP服务器需要以下环境变量来初始化graphRAG和llm内存服务器:
API_KEY:LLM提供程序或嵌入API的API密钥BASE_URL:LLM或嵌入服务端点的基本URLLLM_MODEL:LLM型号名称或标识符EMBEDDING_MODEL:嵌入模型名称或标识符
依赖项
- Python 3.11或更高版本
uv(用于环境和包装管理)
