🗄️ LLMS 向け MongoDB MCP サーバー
LLMがMongoDBデータベースと直接やり取りできるようにするモデルコンテキストプロトコル(MCP)サーバー。コレクションのクエリ、スキーマの検査、そして自然言語によるシームレスなデータ管理を実現します。
📚 モデルコンテキストプロトコル (MCP) とは何ですか?
モデルコンテキストプロトコル(MCP)は、Anthropicが開発したオープンスタンダードであり、AIシステムが外部のデータソースやツールに接続するための普遍的な方法を提供します。MCPは、以下の間で標準化された通信チャネルを確立します。
MCP クライアント: データを消費する Claude のような AI アシスタント (例: Claude Desktop、Cursor.ai)
MCP サーバー: データと機能を公開するサービス (この MongoDB サーバーなど)
MCP の主な利点:
ユニバーサルアクセス: AIアシスタントがさまざまなソースからデータを照会するための単一のプロトコルを提供します
標準化された接続: 認証、使用ポリシー、データ形式を一貫して処理します
持続可能なエコシステム: 複数の LLM クライアントで機能する再利用可能なコネクタを推進します。
Related MCP server: MongoDB MCP Server for LLMs
✨ 特徴
🔍 コレクションスキーマ検査
📊 ドキュメントのクエリとフィルタリング
📈 インデックス管理
📝 ドキュメント操作(挿入、更新、削除)
🔒 接続文字列によるデータベースアクセスのセキュリティ確保
📋 包括的なエラー処理と検証
📋 前提条件
始める前に、次のものを用意してください。
Node.js (v18以上)
MongoDBインスタンス (ローカルまたはリモート)
Claude DesktopやCursor.aiのようなMCPクライアント
次のコマンドを実行して、Node.js のインストールを確認できます。
node --version # Should show v18.0.0 or higher🚀 クイックスタート
開始するには、MongoDB 接続 URL を見つけて、次の構成を Claude Desktop 構成ファイルに追加します。
MacOS : ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows : %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mongodb": {
"command": "npx",
"args": [
"mongo-mcp",
"mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin"
]
}
}
}Smithery経由でインストール
Smithery.aiは、MCPサーバーのレジストリプラットフォームであり、検出とインストールを簡素化します。Smithery.ai経由でClaude Desktop用のMongoDB MCPサーバーを自動的にインストールするには、以下の手順に従ってください。
npx -y @smithery/cli install mongo-mcp --client claudeCursor.ai 統合
Cursor.ai で MongoDB MCP を使用するには:
Cursor.aiを開き、「設定」>「機能」に移動します
機能パネルで「MCPサーバー」を探します
次の構成で新しい MCP サーバーを追加します。
名前:
mongodbコマンド:
npx引数:
mongo-mcp mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin
注: Cursor は現在、Composer の Agent 機能でのみ MCP ツールをサポートしています。
テストサンドボックスのセットアップ
接続する MongoDB サーバーがなく、サンプル サンドボックスを作成する場合は、次の手順に従います。
Docker Compose を使用して MongoDB を起動します。
docker-compose up -dデータベースにテストデータを入力します。
npm run seedClaudeデスクトップの設定
この構成を Claude Desktop 構成ファイルに追加します。
MacOS : ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows : %APPDATA%/Claude/claude_desktop_config.json
ローカル開発モード:
{
"mcpServers": {
"mongodb": {
"command": "node",
"args": [
"dist/index.js",
"mongodb://root:example@localhost:27017/test?authSource=admin"
]
}
}
}テストサンドボックスのデータ構造
シード スクリプトは、サンプル データを含む 3 つのコレクションを作成します。
ユーザー
個人情報(名前、メールアドレス、年齢)
座標を含むネストされた住所
さまざまな興味
会員期間
製品
製品の詳細(名前、SKU、カテゴリ)
ネストされた仕様
価格と在庫情報
タグと評価
注文
注文の詳細と商品
ユーザーリファレンス
配送と支払い情報
ステータス追跡
🎯 プロンプトの例
機能を確認するには、Claude と一緒に次のプロンプトを試してください。
基本操作
"What collections are available in the database?"
"Show me the schema for the users collection"
"Find all users in San Francisco"高度なクエリ
"Find all electronics products that are in stock and cost less than $1000"
"Show me all orders from the user john@example.com"
"List the products with ratings above 4.5"インデックス管理
"What indexes exist on the users collection?"
"Create an index on the products collection for the 'category' field"
"List all indexes across all collections"ドキュメント操作
"Insert a new product with name 'Gaming Laptop' in the products collection"
"Update the status of order with ID X to 'shipped'"
"Find and delete all products that are out of stock"📝 利用可能なツール
サーバーは、データベースとの対話用に次のツールを提供します。
クエリツール
listCollections: データベース内の利用可能なコレクションを一覧表示しますfind: フィルタリングと投影を使ってドキュメントを照会するinsertOne: コレクションに単一のドキュメントを挿入しますupdateOne: コレクション内の単一のドキュメントを更新するdeleteOne: コレクションから単一のドキュメントを削除します
インデックスツール
createIndex: コレクションに新しいインデックスを作成しますdropIndex: コレクションからインデックスを削除しますindexes: コレクションのインデックスを一覧表示します
🛠️ 開発
このプロジェクトは以下を使用して構築されています:
型安全な開発のためのTypeScript
データベース操作用の MongoDB Node.js ドライバー
スキーマ検証のためのZod
サーバー実装用のモデルコンテキストプロトコルSDK
開発環境をセットアップするには:
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
# Run tests
npm test🔒 セキュリティに関する考慮事項
この MCP サーバーを MongoDB データベースで使用する場合:
ユースケースに必要な最小限の権限を持つ専用の MongoDB ユーザーを作成します。
本番環境では管理者の資格情報を使用しない
監査目的でアクセスログを有効にする
コレクションに適切な読み取り/書き込み権限を設定する
アクセスを制限するには接続文字列パラメータを使用します(例:
readPreference=secondary)データベースへのアクセスを制限するためにIP許可リストを検討する
⚠️重要: データベース アクセスを構成するときは、常に最小権限の原則に従ってください。
🌐 仕組み
MongoDB MCP サーバー:
提供された接続文字列を使用してMongoDBデータベースに接続します
MongoDB 操作を MCP 仕様に準拠したツールとして公開します。
型の安全性とセキュリティのために Zod を使用して入力を検証します
クエリを実行し、構造化されたデータをLLMクライアントに返します。
接続プールと適切なエラー処理を管理します
すべての操作は、インジェクション攻撃などのセキュリティ問題を防ぐために適切な検証を行って実行されます。
📦 デプロイメント
この MCP サーバーはいくつかの方法で展開できます。
npx 経由でローカルに(クイックスタートに示されているように)
グローバル npm パッケージとして:
npm install -g @coderay/mongo-mcp-serverDockerコンテナ内(リポジトリ内のDockerfileを参照)
Heroku、Vercel、AWSなどのプラットフォーム上のサービスとして
❓ トラブルシューティング
よくある問題
接続エラー
MongoDB接続文字列が正しいことを確認する
MongoDBサーバーが稼働していてアクセス可能であることを確認する
ネットワーク権限で接続が許可されていることを確認する
認証の問題
ユーザー名とパスワードが正しいことを確認してください
認証データベースが指定されていることを確認します(通常は
authSource=admin)MongoDB が TLS/SSL 接続を必要とするかどうかを確認する
ツール実行の問題
Claude DesktopまたはCursor.aiを完全に再起動します
詳細なエラー メッセージについてはログを確認してください。
# macOS tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
パフォーマンスの問題
頻繁にクエリされるフィールドに適切なインデックスを追加することを検討してください
クエリで返されるデータを制限するには投影を使用します
ページ区切りにlimitパラメータとskipパラメータを使用する
ヘルプの取得
問題が発生した場合:
MCPドキュメントを確認する
GitHubリポジトリに問題を提出する
🤝 貢献する
貢献を歓迎します!お気軽にプルリクエストを送信してください。
リポジトリをフォークする
機能ブランチを作成します(
git checkout -b feature/amazing-feature)変更をコミットします (
git commit -m 'Add some amazing feature')ブランチにプッシュする (
git push origin feature/amazing-feature)プルリクエストを開く
📜 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。