MongoDB MCP Server

by 1RB

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables LLMs to interact directly with MongoDB databases, allowing querying collections, inspecting schemas, and managing data through natural language interfaces.

🗄️ LLMS 向け MongoDB MCP サーバー

LLMがMongoDBデータベースと直接やり取りできるようにするモデルコンテキストプロトコル(MCP)サーバー。コレクションのクエリ、スキーマの検査、そして自然言語によるシームレスなデータ管理を実現します。

📚 モデルコンテキストプロトコル (MCP) とは何ですか?

モデルコンテキストプロトコル(MCP)は、Anthropicが開発したオープンスタンダードであり、AIシステムが外部のデータソースやツールに接続するための普遍的な方法を提供します。MCPは、以下の間で標準化された通信チャネルを確立します。

  • MCP クライアント: データを消費する Claude のような AI アシスタント (例: Claude Desktop、Cursor.ai)
  • MCP サーバー: データと機能を公開するサービス (この MongoDB サーバーなど)

MCP の主な利点:

  • ユニバーサルアクセス: AIアシスタントがさまざまなソースからデータを照会するための単一のプロトコルを提供します
  • 標準化された接続: 認証、使用ポリシー、データ形式を一貫して処理します
  • 持続可能なエコシステム: 複数の LLM クライアントで機能する再利用可能なコネクタを推進します。

✨ 特徴

  • 🔍 コレクションスキーマ検査
  • 📊 ドキュメントのクエリとフィルタリング
  • 📈 インデックス管理
  • 📝 ドキュメント操作(挿入、更新、削除)
  • 🔒 接続文字列によるデータベースアクセスのセキュリティ確保
  • 📋 包括的なエラー処理と検証

📋 前提条件

始める前に、次のものを用意してください。

次のコマンドを実行して、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 claude

Cursor.ai 統合

Cursor.ai で MongoDB MCP を使用するには:

  1. Cursor.aiを開き、「設定」>「機能」に移動します
  2. 機能パネルで「MCPサーバー」を探します
  3. 次の構成で新しい MCP サーバーを追加します。
    • 名前: mongodb
    • コマンド: npx
    • 引数: mongo-mcp mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin

注: Cursor は現在、Composer の Agent 機能でのみ MCP ツールをサポートしています。

テストサンドボックスのセットアップ

接続する MongoDB サーバーがなく、サンプル サンドボックスを作成する場合は、次の手順に従います。

  1. Docker Compose を使用して MongoDB を起動します。
docker-compose up -d
  1. データベースにテストデータを入力します。
npm run seed

Claudeデスクトップの設定

この構成を 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 データベースで使用する場合:

  1. ユースケースに必要な最小限の権限を持つ専用の MongoDB ユーザーを作成します。
  2. 本番環境では管理者の資格情報を使用しない
  3. 監査目的でアクセスログを有効にする
  4. コレクションに適切な読み取り/書き込み権限を設定する
  5. アクセスを制限するには接続文字列パラメータを使用します(例: readPreference=secondary
  6. データベースへのアクセスを制限するためにIP許可リストを検討する

⚠️重要: データベース アクセスを構成するときは、常に最小権限の原則に従ってください。

🌐 仕組み

MongoDB MCP サーバー:

  1. 提供された接続文字列を使用してMongoDBデータベースに接続します
  2. MongoDB 操作を MCP 仕様に準拠したツールとして公開します。
  3. 型の安全性とセキュリティのために Zod を使用して入力を検証します
  4. クエリを実行し、構造化されたデータをLLMクライアントに返します。
  5. 接続プールと適切なエラー処理を管理します

すべての操作は、インジェクション攻撃などのセキュリティ問題を防ぐために適切な検証を行って実行されます。

📦 デプロイメント

この MCP サーバーはいくつかの方法で展開できます。

  • npx 経由でローカルに(クイックスタートに示されているように)
  • グローバル npm パッケージとして: npm install -g @coderay/mongo-mcp-server
  • Dockerコンテナ内(リポジトリ内のDockerfileを参照)
  • Heroku、Vercel、AWSなどのプラットフォーム上のサービスとして

❓ トラブルシューティング

よくある問題

  1. 接続エラー
    • MongoDB接続文字列が正しいことを確認する
    • MongoDBサーバーが稼働していてアクセス可能であることを確認する
    • ネットワーク権限で接続が許可されていることを確認する
  2. 認証の問題
    • ユーザー名とパスワードが正しいことを確認してください
    • 認証データベースが指定されていることを確認します(通常はauthSource=admin
    • MongoDB が TLS/SSL 接続を必要とするかどうかを確認する
  3. ツール実行の問題
    • Claude DesktopまたはCursor.aiを完全に再起動します
    • 詳細なエラー メッセージについてはログを確認してください。
      # macOS tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
  4. パフォーマンスの問題
    • 頻繁にクエリされるフィールドに適切なインデックスを追加することを検討してください
    • クエリで返されるデータを制限するには投影を使用します
    • ページ区切りにlimitパラメータとskipパラメータを使用する

ヘルプの取得

問題が発生した場合:

🤝 貢献する

貢献を歓迎します!お気軽にプルリクエストを送信してください。

  1. リポジトリをフォークする
  2. 機能ブランチを作成します( git checkout -b feature/amazing-feature
  3. 変更をコミットします ( git commit -m 'Add some amazing feature' )
  4. ブランチにプッシュする ( git push origin feature/amazing-feature )
  5. プルリクエストを開く

📜 ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

ID: 7w2bcv6rg0