ADK 向け MongoDB MCP ツール¶
ADKでサポートPythonTypeScriptGo
MongoDB MCP Server は ADK エージェントを MongoDB データベースおよび MongoDB Atlas クラスターに接続します。この連携により、エージェントは 自然言語でコレクション照会、データベース管理、MongoDB Atlas インフラ操作を実行できます。
ユースケース¶
-
データ探索と分析: 自然言語で MongoDB コレクションを照会し、 集計を実行し、複雑なクエリを手書きせずにドキュメントスキーマを分析します。
-
データベース管理: データベース/コレクション一覧、インデックス作成、 ユーザー管理、統計監視を会話操作で実行します。
-
Atlas インフラ管理: MongoDB Atlas クラスター作成/管理、 アクセスリスト設定、性能推奨事項の確認をエージェントから直接行います。
前提条件¶
- データベースアクセス用: MongoDB 接続文字列 (ローカル/セルフホスト/Atlas)
- Atlas 管理用: API 資格情報 (client ID と secret) を持つ 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 };
package main
import (
"context"
"log"
"os"
"os/exec"
"github.com/modelcontextprotocol/go-sdk/mcp"
"google.golang.org/genai"
"google.golang.org/adk/v2/agent"
"google.golang.org/adk/v2/agent/llmagent"
"google.golang.org/adk/v2/cmd/launcher"
"google.golang.org/adk/v2/cmd/launcher/full"
"google.golang.org/adk/v2/model/gemini"
"google.golang.org/adk/v2/tool"
"google.golang.org/adk/v2/tool/mcptoolset"
)
// For database access, use a connection string:
const connectionString = "mongodb://localhost:27017/myDatabase"
// For Atlas management, use API credentials:
// const atlasClientID = "YOUR_ATLAS_CLIENT_ID"
// const atlasClientSecret = "YOUR_ATLAS_CLIENT_SECRET"
func main() {
ctx := context.Background()
model, err := gemini.NewModel(ctx, "gemini-flash-latest", &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
})
if err != nil {
log.Fatalf("Failed to create the model: %v", err)
}
args := []string{
"-y", "mongodb-mcp-server",
"--readOnly", // Remove for write operations
}
server := exec.CommandContext(ctx, "npx", args...)
// Forward only what npx needs, plus the MongoDB credentials. The parent
// environment may hold unrelated secrets, such as the GOOGLE_API_KEY above.
server.Env = []string{
// For database access, use:
"MDB_MCP_CONNECTION_STRING=" + connectionString,
// For Atlas management, use:
// "MDB_MCP_API_CLIENT_ID=" + atlasClientID,
// "MDB_MCP_API_CLIENT_SECRET=" + atlasClientSecret,
}
for _, k := range []string{
"PATH", "HOME", // POSIX
"APPDATA", "LOCALAPPDATA", "TEMP", "USERPROFILE", // Windows
} {
if v, ok := os.LookupEnv(k); ok {
server.Env = append(server.Env, k+"="+v)
}
}
mongodb, err := mcptoolset.New(mcptoolset.Config{
Transport: &mcp.CommandTransport{Command: server},
})
if err != nil {
log.Fatalf("Failed to create the MongoDB tool set: %v", err)
}
rootAgent, err := llmagent.New(llmagent.Config{
Model: model,
Name: "mongodb_agent",
Instruction: "Help users query and manage MongoDB databases",
Toolsets: []tool.Toolset{mongodb},
})
if err != nil {
log.Fatalf("Failed to create the agent: %v", err)
}
l := full.NewLauncher()
cfg := &launcher.Config{AgentLoader: agent.NewSingleLoader(rootAgent)}
if err := l.Execute(ctx, cfg, os.Args[1:]); err != nil {
log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
}
}
利用可能なツール¶
MongoDB データベースツール¶
| ツール | 説明 |
|---|---|
find |
MongoDB コレクションに find クエリを実行 |
aggregate |
MongoDB コレクションで集計を実行 |
count |
コレクション内ドキュメント数を取得 |
list-databases |
MongoDB 接続の全データベースを一覧表示 |
list-collections |
指定 DB の全コレクションを一覧表示 |
collection-schema |
コレクションスキーマを説明 |
collection-indexes |
コレクションインデックスを説明 |
insert-many |
コレクションへドキュメントを挿入 |
update-many |
フィルタ一致ドキュメントを更新 |
delete-many |
フィルタ一致ドキュメントを削除 |
create-collection |
新規コレクション作成 |
drop-collection |
DB からコレクション削除 |
drop-database |
データベース削除 |
create-index |
コレクションインデックス作成 |
drop-index |
コレクションインデックス削除 |
rename-collection |
コレクション名変更 |
db-stats |
データベース統計取得 |
explain |
クエリ実行統計取得 |
export |
クエリ結果を EJSON 形式でエクスポート |
MongoDB Atlas ツール¶
Note
Atlas ツールには API 資格情報が必要です。Atlas ツールを有効化するには
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 |
DB ユーザー一覧 |
atlas-create-free-cluster |
無料 Atlas クラスター作成 |
atlas-create-project |
Atlas プロジェクト作成 |
atlas-create-db-user |
DB ユーザー作成 |
atlas-create-access-list |
IP アクセスリスト設定 |
atlas-inspect-access-list |
IP アクセスリスト項目表示 |
atlas-list-alerts |
Atlas アラート一覧 |
atlas-get-performance-advisor |
パフォーマンス推奨事項取得 |
設定¶
環境変数¶
| Variable | Description |
|---|---|
MDB_MCP_CONNECTION_STRING |
DB アクセス用 MongoDB 接続文字列 |
MDB_MCP_API_CLIENT_ID |
Atlas ツール用 Atlas API client ID |
MDB_MCP_API_CLIENT_SECRET |
Atlas ツール用 Atlas API client secret |
MDB_MCP_READ_ONLY |
read-only モード有効化 (true または false) |
MDB_MCP_DISABLED_TOOLS |
無効化するツールのカンマ区切り一覧 |
MDB_MCP_LOG_PATH |
ログファイルディレクトリ |
Read-only モード¶
--readOnly フラグはサーバーを read、connect、metadata 操作のみに制限します。
これにより create、update、delete 操作を防止し、
意図しない変更リスクなく安全にデータ探索できます。
ツール無効化¶
MDB_MCP_DISABLED_TOOLS で特定ツール/カテゴリを無効化できます:
- ツール名:
find,aggregate,insert-manyなど - カテゴリ:
atlas(全 Atlas ツール)、mongodb(全 DB ツール) - 操作タイプ:
create,update,delete,read,metadata