Knowledge MCP Server について
Knowledge MCP Serverは、ベクトルデータベースを使ってナレッジベースを管理・検索するMCPサーバーです。文書の取り込みに加え、ユーザー単位でナレッジソースへのアクセスや共有を制御できます。
主な機能
- 01文書の分割とベクトル化
- 02ベクトルによる意味検索
- 03ナレッジソースのアクセス・共有管理
- 04ナレッジツールの動的登録
- 05OneDriveファイルの取り込み
活用シーン
- 01OneDrive文書をナレッジソースに取り込む
- 02ナレッジソースを意味検索する
- 03ナレッジソース内の文書を更新する
- 04ナレッジソースを他のユーザーと共有する
MCP 対応
MCPクライアントに、ナレッジの追加、検索、利用、更新のツールを提供します。ツール登録と共有はdynamic-mcp-serverを通じて管理されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ナレッジ MCP サーバー
ベクトルデータベースを通じてナレッジベースを管理、検索するための Model Context Protocol(MCP)サーバーです。dynamic-mcp-server (DMS) フレームワークを基盤としています。
概要
Knowledge MCP Server は、dynamic-mcp-server(DMS)をコアとして活用し、安全でユーザーを認識し、動的に拡張できる AI ツールサーバーの堅牢なプラットフォームを提供します。ユーザー、ツール、データベースの管理はすべて DMS が担い、プロジェクト固有のロジック(ナレッジソースや Microsoft 認証など)向けに拡張ポイントを備えています。
アーキテクチャ
- コア統合: 認証、ユーザー管理、ツール登録、MongoDB/Mongoose 接続管理のすべてに DMS を使用します。
- データベース接続の一元化: すべてのモデルとリポジトリで、DMS が提供する共有 MongoDB 接続を使用します。
- ユーザーとツールの管理: ユーザーおよびツールのモデルは DMS に準拠しており、サブクラス化によってプロジェクト固有の拡張を行います(
AppUserRepositoryを参照)。 - カスタム HTTP ルート: すべてのカスタムルート(OAuth、ヘルスチェックなど)は、DMS の API(
addAuthHttpRouteなど)を使用して、DMS がエクスポートする Express サーバーに登録します。 - 拡張性: ユーザーモデルやリポジトリの拡張、新しいツールやルートの追加は、サブクラス化するか DMS の拡張ポイントを使用して行います。
機能
- 埋め込みの保存と検索に対応するベクトルデータベース統合
- コンテンツ取り込み用のドキュメント処理パイプライン
- テキストのチャンク分割と埋め込みの生成
- 動的なツールの登録と管理(DMS API 経由)
- ナレッジソースへの安全なアクセス制御と共有
- ウェブサイトのクロールとコンテンツ抽出に対応
- メタデータとベクトル保存のための MongoDB 統合
前提条件
- Node.js 18 以降
- MongoDB Atlas M10 以上のインスタンス(ベクトル検索機能に必要)
- OpenAI API キー
インストール
-
リポジトリをクローンします。
git clone https://github.com/your-org/knowledge-mcp-server.git cd knowledge-mcp-server -
依存関係をインストールします。
npm install
設定
プロジェクトのルートに .env ファイルを作成し、次の変数を設定します。
# Server Configuration
PORT=4001
HOST=localhost
# MongoDB Configuration
MONGODB_URI=your_mongodb_connection_string
# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key
# Admin Bootstrapping (required by DMS)
[email protected]
サーバーの起動
開発モードでサーバーを起動します。
npm run dev
または、本番モードで起動します。
npm start
注意: サーバーは DMS 経由で起動し、カスタムルートはすべて DMS がエクスポートする Express サーバーに登録されます。ローカルで Express サーバーを起動する処理はありません。
ツールの登録と共有
- ツールの登録と共有はすべて DMS API(
addTool、共有エンドポイントなど)で管理します。 - 従来のツール登録ロジックは削除されています。
- 動的な拡張に対応するため、必要に応じてユーザー/セッションごとにツールを登録します。
ユーザーとアクセスモデル
- ナレッジソースへのユーザーアクセスは、ユーザーレコードの
applicationAuthorization.knowledge.ownedおよびapplicationAuthorization.knowledge.sharedフィールドで管理します。 - 共有は DMS の共有モデルと API を通じて処理され、「読み取り」および「書き込み」のアクセスレベルに対応します。
- ユーザーリポジトリは
AppUserRepositoryとして拡張し、プロジェクト固有のロジック(カスタムの共有/アクセスメソッドなど)を実装します。
ナレッジソースの管理
現在、サーバーは次の種類のナレッジソースに対応しています。
- Microsoft OneDrive
- OneDrive のファイルとフォルダーを取り込みます。
- さまざまなドキュメント形式(PDF、DOCX など)に対応します。
- Microsoft Graph API の統合が必要です。
注意: ウェブサイトのナレッジソース(ウェブクロール、HTML 抽出など)にはまだ対応していませんが、今後のリリースで対応を予定しています。
サーバーの拡張
- ユーザーモデルの拡張:
AppUserRepositoryをサブクラス化して、プロジェクト固有のユーザーロジックやフィールドを追加します。 - カスタム HTTP ルート: DMS API(
addAuthHttpRouteなど)を使用して新しいルートを登録します。 - ツールの登録: DMS の
addToolおよび関連 API を使用して、新しいツールを追加します。 - モデル/リポジトリの拡張: カスタムロジックには、DMS リポジトリのサブクラス化またはラップを推奨します。
利用可能なツール
サーバーでは、次のツールを提供します。
1. ナレッジの追加
- ツール名:
add-knowledge - 目的: 新しいドキュメントをナレッジソースに取り込み、処理します
- 機能: ドキュメントのソース(URL、テキスト、ファイルのアップロード)を受け取り、コンテンツをスクレイピング/処理し、チャンクに分割してベクトルデータベースに埋め込み、ナレッジソースに関連付けます
2. 検索
- ツール名:
search - 目的: 特定のナレッジソースを検索し、関連情報を取得します
- 機能: ベクトルデータベースを対象にセマンティック検索を行い、メタデータ付きの関連ドキュメント断片を返します。フィルタリング/ランキングにも対応しています
3. ナレッジソースの使用
- ツール名:
use-knowledge-source - 目的: 特定のナレッジソースとやり取りするための新しいツールを作成します
- 機能: 新しいツール定義を生成し、パラメーター/制約を設定して、動的なツール登録を可能にします
4. ナレッジソースの更新
- ツール名:
refresh-knowledge-source - 目的: コンテンツを再取り込みして、ナレッジソースを更新します
- 機能: ステータスを更新し、ベクトルストアをクリアして、ソースを再処理し、ステータスを更新します
アクセス制御と共有
- 所有権: ユーザーは自身が作成したナレッジソースを所有し、完全なアクセス権を持ちます。
- 共有: ナレッジソースは他のユーザーと共有でき(「読み取り」または「書き込み」アクセス)、
applicationAuthorization.knowledge.sharedで追跡されます。
依存関係
このプロジェクトでは、以下の主要な依存関係を使用しています。
{
"@llm-tools/embedjs": "latest",
"@llm-tools/embedjs-mongodb": "latest",
"@llm-tools/embedjs-openai": "latest",
"@llm-tools/embedjs-loader-web": "latest",
"mongodb": "latest",
"dynamic-mcp-server": "github:scitara-cto/dynamic-mcp-server"
}
テスト
- テストスイートを実行します:
npm test - ウォッチモードでテストを実行します:
npm run test:watch - 型チェック:
npm run typecheck - モック: DMS ドキュメントで推奨されているモック戦略とテストパターンを使用してください。テストでは拡張リポジトリ(例:
AppUserRepository)を使用してください。
移行状況
- ドキュメントを除き、すべての移行およびリファクタリングの手順が完了しています。
- すべてのテストとビルドが成功します。
- コードベースは新しい DMS アーキテクチャとリポジトリモデルに完全に準拠しています。
ライセンス
[Your License Here]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。