🚀 MongTap - LLM用MongoDB MCPサーバー
YouTubeのデモビデオ:

作成者: SmallMinds LLC Co
MongTapは、統計モデリングを通じてMongoDB互換のデータベース機能を提供するモデルコンテキストプロトコル(MCP)サーバーです。Claudeなどの大規模言語モデル(LLM)が、実際のデータストレージを必要とせずに、自然言語を使用してデータベースを作成、クエリ、管理できるようにします。
リポジトリ: github.com/smallmindsco/MongTap
ウェブサイト: smallminds.co
連絡先: andrew@smallminds.co
✨ 主な機能
- 🚀 MongoDBワイヤプロトコル - MongoDBドライバーやツールと完全互換
- 🧠 統計モデリング - DataFlood技術を使用してリアルタイムに現実的なデータを生成
- 🔧 MCP統合 - Claude Desktopや他のMCP互換のLLMとシームレスに動作
- 📊 自然言語 - 説明やサンプルデータからモデルをトレーニング
- ⚡ 高パフォーマンス - 毎秒20,000以上のドキュメントを生成
- 🎯 ゼロストレージ - データは統計的に生成され、保存されません
📚 ドキュメント
- 生成制御パラメータ - $seedと$entropyを使用したドキュメント生成の制御
- MCPBインストール - MCPBバンドルのインストールガイド
📦 インストール
前提条件
- Node.js 20以上
- Claude Desktop(MCP統合用)
- MongoDBのインストールは不要!
クイックスタート
- リポジトリをクローンします:
git clone https://github.com/smallmindsco/MongTap.git
cd MongTap
- 依存関係をインストールします(最小限):
npm install
- インストールをテストします:
node src/mcp/index.js
- MongoDBサーバーを起動します(オプション):
node start-mongodb-server.js
Claude Desktopの設定
MongTapをClaude Desktopと共に使用するには、MCPサーバーとして設定する必要があります。
1. Claude Desktopの設定ファイルを見つける
Claude Desktopの設定ファイルを見つけます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
2. 設定ファイルにMongTapを追加する
設定ファイルを編集し、mcpServersセクションにMongTapを追加します:
{
"mcpServers": {
"mongtap": {
"command": "node",
"args": [
"/absolute/path/to/MongTap/src/mcp/index.js"
],
"env": {
"NODE_ENV": "production",
"LOG_LEVEL": "info"
}
}
}
}
重要: /absolute/path/to/MongTapを実際のMongTapインストールパスに置き換えてください。
3. Claude Desktopを再起動する
設定を保存した後、変更を反映するためにClaude Desktopを再起動します。
💻 使用例
基本的な使用法
Claude DesktopでMongTapを使用すると、データベース操作やデータ生成に強力なツールが提供されます。
クイックリファレンス
| ツール |
目的 |
主な機能 |
generateDataModel |
統計モデルを作成 |
サンプルまたは説明から |
startMongoServer |
MongoDBサーバーを起動 |
完全なワイヤプロトコルサポート |
stopMongoServer |
サーバーインスタンスを停止 |
クリーンなシャットダウン |
listActiveServers |
実行中のサーバーを表示 |
すべてのインスタンスを監視 |
queryModel |
ドキュメントを生成 |
$seedと$entropyで制御 |
trainModel |
モデルを改善 |
インクリメンタル学習 |
listModels |
利用可能なモデルを表示 |
ローカルのモデルインベントリ |
getModelInfo |
モデルの詳細を取得 |
スキーマと統計情報 |
MCPツールリファレンス
1. generateDataModel
説明: サンプルドキュメントまたはテキスト説明からデータ生成用の統計モデルを作成します。
パラメータ:
name (必須): モデルの名前
description (オプション): データ構造の自然言語による説明
samples (オプション): モデルをトレーニングするためのサンプルドキュメントの配列
例:
generateDataModel({
name: "users",
description: "User profiles with name, email, age, and signup date"
})
generateDataModel({
name: "products",
samples: [
{ name: "Laptop", price: 999, category: "Electronics" },
{ name: "Desk", price: 299, category: "Furniture" }
]
})
2. startMongoServer
説明: 統計モデルからデータを生成するローカルのMongoDB互換サーバーを起動します。
パラメータ:
port (オプション): リッスンするポート(0で自動割り当て、デフォルト: 27017)
database (オプション): デフォルトのデータベース名(デフォルト: "mcp")
例:
startMongoServer({ port: 27017, database: "myapp" })
3. stopMongoServer
説明: ポート番号で実行中のMongoDB互換サーバーインスタンスを停止します。
パラメータ:
例:
stopMongoServer({ port: 27017 })
4. listActiveServers
説明: 現在実行中のすべてのMongoDB互換サーバーインスタンスのリストを取得します。
パラメータ: なし
例:
listActiveServers()
5. queryModel
説明: 統計モデルからオプションのクエリフィルターと生成制御を使用してドキュメントを生成します。
パラメータ:
model (必須): クエリするモデルの名前
query (オプション): MongoDB形式のクエリで、特殊パラメータを使用できます:
$seed: 再現可能な生成のためのシード値
$entropy: ランダム性のレベルを制御する0から1までの数値
count (オプション): 生成するドキュメントの数(デフォルト: 10)
例:
queryModel({
model: "users",
query: { age: { $gte: 18 }, $seed: 42, $entropy: 0.3 },
count: 5
})
6. trainModel
説明: 追加のサンプルドキュメントで既存の統計モデルを更新し、生成品質を向上させます。
パラメータ:
model (必須): トレーニングするモデルの名前
documents (必須): トレーニングに使用するドキュメントの配列
例:
trainModel({
model: "products",
documents: [
{ name: "Mouse", price: 29, category: "Electronics" },
{ name: "Chair", price: 199, category: "Furniture" }
]
})
7. listModels
説明: ローカルに保存されているすべての利用可能な統計モデルのリストを取得します。
パラメータ: なし
例:
listModels()
8. getModelInfo
説明: 特定の統計モデルの詳細なスキーマと統計情報を取得します。
パラメータ:
例:
getModelInfo({ model: "users" })
MCPプロンプト
MongTapには、一般的なデータベースシナリオ用の事前構築済みのプロンプトが含まれています。
1. create_ecommerce_db
説明: 商品、顧客、注文を含む完全な電子商取引データベースを作成します。
使用方法: Claudeに「create_ecommerce_dbプロンプトを使用する」と依頼すると、すぐに完全な電子商取引データベース構造を設定できます。
2. create_user_profile
説明: 認証と設定を含むユーザープロファイルモデルを作成します。
使用方法: ユーザー管理システムをすばやく設定するのに最適です。
3. analyze_model
説明: 既存のモデルを分析し、その構造に関する洞察を提供します。
使用方法: 統計モデルのパターンと分布を理解します。
4. generation_control
説明: 制御された生成のための$seedと$entropyパラメータの使用方法を学びます。
使用方法: 再現可能で制御されたデータ生成に関する詳細情報を取得します。
MCPリソース
MongTapは、監視用の読み取り専用リソースを提供します。
1. models://list
説明: すべてのトレーニング済みDataFloodモデルのリスト
タイプ: application/json
戻り値: モデル名とメタデータの配列
2. servers://status
説明: すべてのMongoDBサーバーの状態
タイプ: application/json
戻り値: サーバーポート、データベース、接続数
3. models://{name}/schema
説明: 特定のモデルのJSONスキーマを取得します
タイプ: application/json
戻り値: 完全なJSONスキーマ定義
4. models://{name}/sample
説明: モデルからサンプルデータを取得します
タイプ: application/json
戻り値: サンプルドキュメントの配列
5. docs://generation-control
説明: $seedと$entropyクエリパラメータのドキュメント
タイプ: text/markdown
戻り値: 詳細な使用ガイド
Claudeとの会話例
説明からデータモデルを作成する
あなた: 名前、メールアドレス、年齢、登録日を含むユーザープロファイルのデータモデルを作成してください。
Claude: MongTapを使用してユーザープロファイルモデルを作成します。
[generateDataModelツールを使用]
以下の構造でユーザープロファイルモデルを作成しました:
- name (文字列)
- email (文字列、メール形式)
- age (整数、0-120)
- registrationDate (文字列、日付時刻形式)
このモデルは、現実的なユーザーデータを生成する準備ができています。
MongoDBサーバーを起動する
あなた: ポート27017でアプリケーション用のMongoDBサーバーを起動してください。
Claude: MongoDBサーバーを起動します。
[startMongoServerツールを使用]
MongoDBサーバーが正常に起動しました:
- ポート: 27017
- データベース: test
- 接続文字列: mongodb://localhost:27017/test
このサーバーには、任意のMongoDBクライアントまたはドライバーを使用して接続できます。
このサーバーは、クエリ内の$seedと$entropyパラメータを通じて高度な生成制御をサポートしています。
サンプルデータを生成する
あなた: 作成したモデルから100件のユーザープロファイルを生成してください。
Claude: 100件のユーザープロファイルを生成します。
[queryModelツールを使用]
100件のユーザープロファイルを生成しました。以下はサンプルです:
1. { name: "John Smith", email: "john.smith@example.com", age: 28, registrationDate: "2024-01-15T10:30:00Z" }
2. { name: "Jane Doe", email: "jane.doe@example.com", age: 34, registrationDate: "2024-02-20T14:45:00Z" }
...
すべてのドキュメントは、モデルの統計パターンに従っています。
サンプルデータからトレーニングする
あなた: 以下はいくつかの商品サンプルです。これらからモデルをトレーニングしてください:
- { name: "Widget", price: 19.99, category: "tools", stock: 100 }
- { name: "Gadget", price: 29.99, category: "electronics", stock: 50 }
- { name: "Gizmo", price: 39.99, category: "tools", stock: 75 }
Claude: あなたのサンプルから商品モデルをトレーニングします。
[サンプルを使用してgenerateDataModelツールを使用]
モデルが正常にトレーニングされました!モデルは以下を学習しました:
- name: 商品名(文字列パターン)
- price: 19.99-39.99の範囲(数値分布)
- category: "tools"または "electronics"(列挙型)
- stock: 50-100の範囲(整数分布)
このモデルは、現実的なバリエーションを持つ同様の商品を生成できるようになりました。
高度な使用法
複数のサーバーインスタンス
複数のMongoDBサーバーを同時に実行できます:
あなた: 開発、テスト、ステージング環境用に3つのMongoDBサーバーを起動してください。
Claude: 3つの別々のMongoDBサーバーを起動します。
[startMongoServerを複数回使用]
3つのMongoDBサーバーを起動しました:
1. 開発 - ポート: 27017, データベース: dev
2. テスト - ポート: 27018, データベース: test
3. ステージング - ポート: 27019, データベース: staging
各サーバーは独自のモデルを維持し、独立してアクセスできます。
モデルの永続化
モデルは自動的に保存され、セッションをまたいで再利用できます:
あなた: すべての利用可能なモデルをリストしてください。
Claude: [listModelsツールを使用]
利用可能なモデル:
1. users - 名前、メールアドレス、年齢を含むユーザープロファイル
2. products - 価格付きの商品カタログ
3. orders - 注文管理システム
4. customers - 顧客データベース
これらのモデルのいずれかをクエリしたり、新しいモデルをトレーニングしたりできます。
制約付き生成
特定の制約と制御パラメータを使用してデータを生成します:
あなた: シード12345を使用して、一貫した結果で25歳から35歳のユーザー50人を生成してください。
Claude: それらの特定の制約とシード制御でユーザーを生成します。
[制約と生成パラメータを使用してqueryModelを使用]
一貫した結果で50人のユーザーを生成しました:
- すべて25-35歳の間
- 再現可能な生成のためにシード12345を使用
- $entropyパラメータでランダム性のレベルを制御
- 同じクエリは常に同じ結果を返します
🔧 設定オプション
環境変数
LOG_LEVEL - ログレベル(error, warn, info, debug, trace)
MONGTAP_PORT - MCPサーバーのデフォルトポート(デフォルト: 3000)
MONGTAP_STORAGE - モデル保存用のパス(デフォルト: ./welldb-models)
MONGTAP_MAX_SERVERS - 同時実行可能な最大MongoDBサーバー数(デフォルト: 10)
MCPサーバーモード
MCPサーバーは、異なるモードで実行できます:
node src/mcp/index.js
node src/mcp/index.js tcp --port 3000
node src/mcp/index.js standalone
🔧 技術詳細
MongTapは3つの主要なコンポーネントで構成されています:
- DataFlood-JS - サンプルから学習する統計モデリングエンジン
- WellDB-Node - MongoDBワイヤプロトコルの実装
- MCPサーバー - LLMツールの統合レイヤー
┌─────────────────┐ MCPプロトコル ┌──────────────┐
│ Claude Desktop │ ◄──────────────────► │ MCP Server │
└─────────────────┘ └──────┬───────┘
│
▼
┌─────────────────┐ MongoDBワイヤ ┌──────────────┐
│ MongoDB Client │ ◄──────────────────► │ WellDB-Node │
└─────────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ DataFlood-JS │
│ (モデリング) │
└──────────────┘
トラブルシューティング
Claude DesktopにMongTapツールが表示されない
- 設定ファイルのパスが正しいことを確認する
- MongTapのパスが絶対パスであり、相対パスでないことを確認する
- Claude Desktopを完全に再起動する
- ログを確認する:
tail -f ~/Library/Logs/Claude/mcp-*.log (macOS)
MongoDBクライアントが接続できない
- サーバーが実行中であることを確認する: Claudeで「listActiveServers」を使用する
- ポートが使用中でないことを確認する:
lsof -i :27017
- ファイアウォールがローカル接続を許可していることを確認する
- IPで接続を試す:
mongodb://127.0.0.1:27017
モデル生成が正しくないように見える
- より多くのサンプルデータを提供して、より良いトレーニングを行う
- サンプルで一貫したデータ形式を使用する
- モデル情報を確認して、学習されたパターンを確認する
- 必要に応じて追加の制約で再トレーニングする
開発
テストの実行
npm test
node test/mcp/test-mcp-server.js
node test/welldb-node/test-mongodb-server.js
node test/dataflood-js/test-inferrer.js
node test/welldb-node/test-integration.js
プロジェクト構造
MongTap/
├── src/
│ ├── mcp/ # MCPサーバーの実装
│ │ ├── mcp-server.js # コアMCPサーバー
│ │ ├── prompt-analyzer.js # プロンプトのNLP
│ │ └── server-manager.js # マルチサーバー管理
│ ├── welldb-node/ # MongoDBプロトコル
│ │ ├── server/ # MongoDBサーバーの実装
│ │ └── storage/ # DataFloodストレージアダプター
│ └── dataflood-js/ # 統計モデリング
│ ├── schema/ # スキーマ推論
│ ├── generator/ # ドキュメント生成
│ └── training/ # モデルトレーニング
└── README.md # このファイル
📄 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照してください。
プライバシーポリシー
MongTapは、プライバシーを基本原則として設計されています:
データ収集
- 個人データを収集しません - MongTapはユーザーデータを一切収集しません
- 分析やトラッキングを行いません - 使用統計情報は収集されません
- 外部接続を行いません - すべての操作はローカルで行われます
- データを永続化しません - モデルは統計的な表現であり、実際のデータではありません
データ保存
- すべてのモデルはあなたのマシンにローカルに保存されます
- 保存場所は
mongtap.config.jsonを通じて完全に設定可能です
- クラウドサービスや外部ストレージは使用されません
- 生成されたデータは合成データであり、実際の情報を表していません
データセキュリティ
- ローカルのみの操作により、データがあなたのマシンを離れることはありません
- 認証は必要ありません(漏洩する資格情報がありません)
- オープンソースコードにより、完全なセキュリティ監査が可能です
- 入力検証により、インジェクション攻撃を防止します
セキュリティ
MongTapは包括的なセキュリティ対策を実装しています:
- 入力検証: すべての入力は処理前に検証されます
- エラーハンドリング: エラーを適切に処理して、情報漏洩を防止します
- 外部依存関係がない: コア機能の依存関係は最小限です
- ローカル操作: 明示的に設定しない限り、ネットワークに公開されません
- オープンソース: セキュリティ監査のための完全なコード透過性
詳細なセキュリティ情報については、docs/SECURITY_AUDIT.mdを参照してください。
サポート
- 問題報告: GitHub Issues
- ドキュメント: docs/
- ステータス: DesignDocuments/STATUS.claude
- 連絡先: SmallMinds LLC Co - smallminds.co - andrew@smallminds.co
謝辞
- 統計モデリングのためのDataFlood技術
- プロトコル仕様のためのMongoDB
- MCPプロトコルのためのAnthropic
- LLM統合のためのClaude Desktop
注意: MongTapは統計的にデータを生成し、実際のデータを保存しません。実際のストレージのオーバーヘッドなしで現実的なデータが必要な開発、テスト、デモンストレーション目的に最適です。