ADK 的 MongoDB MCP 工具¶
Supported in ADKPythonTypeScript
MongoDB MCP 服务器 将你的 ADK 智能体连接到 MongoDB 数据库和 MongoDB Atlas 集群。此集成使你的智能体能够使用自然语言查询集合、管理数据库并与 MongoDB Atlas 基础设施进行交互。
使用场景¶
-
数据探索和分析:使用自然语言查询 MongoDB 集合、运行聚合和分析文档模式,而无需手动编写复杂的查询。
-
数据库管理:通过对话命令列出数据库和集合、创建索引、管理用户并监控数据库统计信息。
-
Atlas 基础设施管理:直接从你的智能体创建和管理 MongoDB Atlas 集群、配置访问列表并查看性能建议。
前置条件¶
- 对于数据库访问:MongoDB 连接字符串(本地、自托管或 Atlas 集群)
- 对于 Atlas 管理:带有 API 凭据(客户端 ID 和密钥)的 MongoDB Atlas 服务账户
与智能体一起使用¶
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters
# For database access, use a connection string:
CONNECTION_STRING = "mongodb://localhost:27017/myDatabase"
# For Atlas management, use API credentials:
# ATLAS_CLIENT_ID = "YOUR_ATLAS_CLIENT_ID"
# ATLAS_CLIENT_SECRET = "YOUR_ATLAS_CLIENT_SECRET"
root_agent = Agent(
model="gemini-2.5-pro",
name="mongodb_agent",
instruction="Help users query and manage MongoDB databases",
tools=[
McpToolset(
connection_params=StdioConnectionParams(
server_params=StdioServerParameters(
command="npx",
args=[
"-y",
"mongodb-mcp-server",
"--readOnly", # Remove for write operations
],
env={
# For database access, use:
"MDB_MCP_CONNECTION_STRING": CONNECTION_STRING,
# For Atlas management, use:
# "MDB_MCP_API_CLIENT_ID": ATLAS_CLIENT_ID,
# "MDB_MCP_API_CLIENT_SECRET": ATLAS_CLIENT_SECRET,
},
),
timeout=30,
),
)
],
)
import { LlmAgent, MCPToolset } from "@google/adk";
// For database access, use a connection string:
const CONNECTION_STRING = "mongodb://localhost:27017/myDatabase";
// For Atlas management, use API credentials:
// const ATLAS_CLIENT_ID = "YOUR_ATLAS_CLIENT_ID";
// const ATLAS_CLIENT_SECRET = "YOUR_ATLAS_CLIENT_SECRET";
const rootAgent = new LlmAgent({
model: "gemini-2.5-pro",
name: "mongodb_agent",
instruction: "Help users query and manage MongoDB databases",
tools: [
new MCPToolset({
type: "StdioConnectionParams",
serverParams: {
command: "npx",
args: [
"-y",
"mongodb-mcp-server",
"--readOnly", // Remove for write operations
],
env: {
// For database access, use:
MDB_MCP_CONNECTION_STRING: CONNECTION_STRING,
// For Atlas management, use:
// MDB_MCP_API_CLIENT_ID: ATLAS_CLIENT_ID,
// MDB_MCP_API_CLIENT_SECRET: ATLAS_CLIENT_SECRET,
},
},
}),
],
});
export { rootAgent };
可用工具¶
MongoDB 数据库工具¶
| 工具 | 描述 |
|---|---|
find |
针对 MongoDB 集合运行查找查询 |
aggregate |
针对 MongoDB 集合运行聚合 |
count |
获取集合中的文档数量 |
list-databases |
列出 MongoDB 连接的所有数据库 |
list-collections |
列出给定数据库的所有集合 |
collection-schema |
描述集合的模式 |
collection-indexes |
描述集合的索引 |
insert-many |
将文档插入到集合中 |
update-many |
更新匹配过滤器的文档 |
delete-many |
删除匹配过滤器的文档 |
create-collection |
创建一个新集合 |
drop-collection |
从数据库中删除一个集合 |
drop-database |
删除一个数据库 |
create-index |
为集合创建一个索引 |
drop-index |
从集合中删除一个索引 |
rename-collection |
重命名一个集合 |
db-stats |
获取数据库的统计信息 |
explain |
获取查询执行统计信息 |
export |
以 EJSON 格式导出查询结果 |
MongoDB Atlas 工具¶
Note
Atlas 工具需要 API 凭据。设置 MDB_MCP_API_CLIENT_ID 和 MDB_MCP_API_CLIENT_SECRET 环境变量以启用它们。
| 工具 | 描述 |
|---|---|
atlas-list-orgs |
列出 MongoDB Atlas 组织 |
atlas-list-projects |
列出 MongoDB Atlas 项目 |
atlas-list-clusters |
列出 MongoDB Atlas 集群 |
atlas-inspect-cluster |
检查集群的元数据 |
atlas-list-db-users |
列出数据库用户 |
atlas-create-free-cluster |
创建一个免费的 Atlas 集群 |
atlas-create-project |
创建一个 Atlas 项目 |
atlas-create-db-user |
创建一个数据库用户 |
atlas-create-access-list |
配置 IP 访问列表 |
atlas-inspect-access-list |
查看 IP 访问列表条目 |
atlas-list-alerts |
列出 Atlas 警报 |
atlas-get-performance-advisor |
获取性能建议 |
配置¶
环境变量¶
| 变量 | 描述 |
|---|---|
MDB_MCP_CONNECTION_STRING |
用于数据库访问的 MongoDB 连接字符串 |
MDB_MCP_API_CLIENT_ID |
用于 Atlas 工具的 Atlas API 客户端 ID |
MDB_MCP_API_CLIENT_SECRET |
用于 Atlas 工具的 Atlas API 客户端密钥 |
MDB_MCP_READ_ONLY |
启用只读模式 (true 或 false) |
MDB_MCP_DISABLED_TOOLS |
逗号分隔的要禁用的工具列表 |
MDB_MCP_LOG_PATH |
日志文件的目录 |
只读模式¶
--readOnly 标志将服务器限制为仅进行读取、连接和元数据操作。这会阻止任何创建、更新或删除操作,使其能够安全地进行数据探索而没有意外修改的风险。
禁用工具¶
你可以使用 MDB_MCP_DISABLED_TOOLS 禁用特定工具或类别:
- 工具名称:
find、aggregate、insert-many等。 - 类别:
atlas(所有 Atlas 工具)、mongodb(所有数据库工具) - 操作类型:
create、update、delete、read、metadata