MCP RAG
MCP-RAG
✨100% AIによって作成
AIクライアント向けのサービス優先RAGサービスであり、現在はFastAPI HTTPサービスおよびStreamable HTTP MCPエンドポイントを主軸としています。
コードは現在、統一されたバックエンドシェルを提供しています:
FastAPI HTTPサービス
Streamable HTTP MCP
共有ランタイム、設定のホットリロード、認証、レート制限、クォータ、オブザーバビリティ
ナレッジベースレジストリに基づく検索およびドキュメント管理
現在の機能
ドキュメントインポート:テキストの直接追加、および
txt、md、pdf、docxのアップロードをサポート検索:ベクトル検索 + キーワード検索の融合
Q&A:
/search、/chat、MCPrag_askマルチナレッジベース:単一ナレッジベースおよび
kb_idsによる複数ナレッジベースの集約検索/対話をサポートナレッジベーススコープ:
publicおよびagent_privateテナントコンテキスト:
base_collection + user_id + agent_idランタイムガバナンス:APIキー、メモリレート制限、アップロード/インデックスクォータ、リクエストレベルの検索キャッシュ
プロバイダーガバナンス:プロバイダー予算、サーキットブレーカー、フォールバック
オブザーバビリティ:
/health、/ready、/metricsフロントエンド:組み込みのシングルページ管理パネル
/app
アーキテクチャ
メインリンク:
HTTP / MCP
-> app_factory.py
-> http_server.py / mcp_server.py
-> context.py
-> service_facade.py
-> services/
- runtime.py
- indexing_service.py
- retrieval_service.py
- chat_service.py
-> knowledge_bases.py
-> core/indexing/
-> retrieval/主要ファイル:
src/mcp_rag/cli.py: CLIエントリーポイント、serveおよびinitを提供src/mcp_rag/main.py: HTTPサービス起動エントリーポイントsrc/mcp_rag/http_server.py: HTTP API、SPAエントリーポイント、Streamable HTTP MCPマウントsrc/mcp_rag/mcp_server.py: MCPツール定義およびrag_asksrc/mcp_rag/app_factory.py: アプリコンテキスト、ランタイム、ガードレールの統一アセンブリsrc/mcp_rag/knowledge_bases.py: ナレッジベースレジストリおよびデフォルトナレッジベースの解決src/mcp_rag/config.py: 設定モデル、JSON/SQLite永続化、ホットリロード
環境要件
Python
>= 3.13uv
インストール
CLIのインストール:
uv tool install mcp-ragインストール後、直接実行:
mcp-rag serveリポジトリ内での開発:
uv syncローカル埋め込み(embedding)が必要な場合:
uv sync --extra local-embeddings境界条件の説明:
uv tool install mcp-ragを使用してインストールするユーザーは、Node.jsやpnpmは不要ですpnpmはフロントエンドビルドの保守にのみ使用され、サービスランタイムの依存関係ではありません
起動と初期化
サービスの起動:
uv run mcp-rag serveデータディレクトリの初期化:
uv run mcp-rag init --data-dir ./dataデフォルトポートは 8060 で、サービスはデフォルトで 0.0.0.0:8060 をリッスンします。
一般的なエントリーポイント:
管理パネル:
http://127.0.0.1:8060/appAPIドキュメント:
http://127.0.0.1:8060/docsMCPエンドポイント:
http://127.0.0.1:8060/mcp
互換性のあるエントリーポイント:
/は/appにリダイレクトされます/docは/docsにリダイレクトされます/documents-pageは/app/documentsにリダイレクトされます/config-pageは/app/configにリダイレクトされます
初回起動時の動作:
./data/config.jsonが存在しない場合、設定読み込み時にデフォルト値が使用されますサービス起動時に
ensure_config_file()が呼び出され、デフォルト設定がディスクに書き込まれますデータディレクトリ内の
./data/chromaおよび関連するSQLiteファイルは必要に応じて作成されます
フロントエンドと静的リソース
リリースパッケージには src/mcp_rag/static/ がwheel / sdistに同梱されます。
これは以下を意味します:
インストールユーザーは
uv tool install mcp-rag後、直接/appにアクセス可能ですフロントエンドの個別ビルドやNode.jsは不要です
フロントエンドのメンテナーは、リリース前に最新の静的リソースを生成する必要があります
フロントエンドのソースコードは frontend/ にあり、ビルド出力は src/mcp_rag/static/app に配置されます。
典型的なフロー:
cd frontend
pnpm install
pnpm buildナレッジベースモデル
現在のプロジェクトは、単なる collection によるデータ整理ではなく、ナレッジベースレジストリを主軸としています。
ナレッジベースの特性:
永続化レジストリは
knowledge_base_db_pathが指すSQLiteファイル内にありますデフォルトでパブリックナレッジベースの存在が保証されます
user_id + agent_idが渡されると、対応するデフォルトのagent_privateナレッジベースの存在が保証されます新しいナレッジベース作成後、安定した内部コレクション名(例:
kb_<id>)が割り当てられます
インターフェース層では引き続き collection パラメータが保持されていますが、これは古い呼び出し方法との互換性のためです。現在の実際の動作は以下の通りです:
kb_idを明示的に渡すことが可能引き続き古い
collectionを渡すことも可能サービスはリクエストを具体的なナレッジベースと実際のコレクション名に解決します
HTTPインターフェース
システムインターフェース:
GET /healthGET /readyGET /metrics
設定インターフェース:
GET /configPOST /configPOST /config/bulkPOST /config/resetPOST /config/reload
プロバイダーインターフェース:
GET /providers/{provider}/models
ナレッジベースインターフェース:
GET /collectionsGET /knowledge-basesPOST /knowledge-bases
ドキュメントインターフェース:
POST /add-documentPOST /upload-filesGET /list-documentsDELETE /delete-documentGET /list-filesDELETE /delete-file
検索とQ&A:
GET /searchPOST /chat
MCPデバッグインターフェース:
GET /debug/mcp/toolsPOST /debug/mcp/call
いくつかの注意点:
/searchおよび/chatはkb_idをサポートしています/searchおよび/chatはkb_idsによる複数ナレッジベースの集約もサポートしています/upload-filesはmultipart/form-dataを使用します/delete-documentおよび/delete-fileはリクエストボディを通じて削除パラメータを渡します
セキュリティポリシーが有効な場合、APIキーは以下の方法で渡すことができます:
HTTP Header:
x-api-keyHeader:
Authorization: Bearer <token>クエリパラメータ、JSONボディ、またはフォーム内の
api_key
MCP
現在の主な形態はStreamable HTTP MCPです:
{
"mcpServers": {
"rag": {
"url": "http://127.0.0.1:8060/mcp"
}
}
}実装済みのMCPツール:
rag_ask
rag_ask の主要パラメータ:
querymode:rawまたはsummarycollectionkb_idscopelimitthresholdtenantuser_id/agent_id_user_id/_agent_idapi_keyrequest_idtrace_id
例:
{
"name": "rag_ask",
"arguments": {
"query": "FastAPI 是什么",
"kb_id": 1,
"mode": "summary",
"limit": 5
}
}設定
デフォルト設定ファイル:
./data/config.jsonデフォルトナレッジベースデータベース:
./data/knowledge_bases.sqlite3現在の設定には重要な変更があります:
通常の実行設定は
config.jsonに保存されますプロバイダー関連の設定は
config.jsonに書き戻されず、SQLiteに永続化されます
つまり、以下のフィールドはSQLite内の service_provider_settings に保存されます:
embedding_providerembedding_fallback_providerprovider_configsllm_providerllm_fallback_providerllm_modelllm_base_urlllm_api_key
その他の設定は引き続き config.json に保存されます(例:
{
"http_port": 8060,
"chroma_persist_directory": "./data/chroma",
"knowledge_base_db_path": "./data/knowledge_bases.sqlite3",
"enable_llm_summary": false,
"security": {
"enabled": false,
"allow_anonymous": true,
"api_keys": [],
"tenant_api_keys": {}
},
"rate_limit": {
"requests_per_window": 120,
"window_seconds": 60,
"burst": 30
},
"quotas": {
"max_upload_files": 20,
"max_upload_bytes": 52428800,
"max_upload_file_bytes": 10485760,
"max_index_documents": 500,
"max_index_chunks": 2000,
"max_index_chars": 500000
},
"cache": {
"enabled": false,
"max_entries": 256,
"ttl_seconds": 300
},
"provider_budget": {
"enabled": true
}
}現在の組み込みプロバイダー関連機能:
embeddingプロバイダーのデフォルト値は
zhipuLLMプロバイダーのデフォルト値は
doubao組み込みプロバイダー設定には
doubao、zhipu、aliyunが含まれますqwen/dashscopeはaliyunに正規化されます/providers/{provider}/modelsはOpenAI互換モデルサービスからのモデルリスト取得をサポートしていますローカルembeddingは
m3e-smallおよびe5-smallをサポートしていますLLMは追加で
ollamaをサポートしています
ホットリロードとランタイム更新
ホットリロードの動作:
/config、/config/bulk、/config/reset、/config/reloadを通じて変更されると、ランタイムは即座に更新されますリクエスト受信時に
reload_if_changed()を通じてディスク上の設定変更が検出されますプロバイダー設定や検索設定が変更されると、関連するランタイム依存関係が再構築され、検索キャッシュがクリアされます
Readiness(準備状況)とMetrics(メトリクス)
/healthはヘルスサマリー、ランタイムスナップショット、config_revisionを返します/readyはブートストラップが完了していない、または重要な依存関係が準備できていない場合に503を返します/metricsは操作/プロバイダーごとに集約された観測メトリクスを返します
現在のreadinessスナップショットには以下が含まれます:
document_processorembedding_modelvector_storehybrid_servicellm_modelretrieval_cacheprovider_budget
テスト
全量テストの実行:
uv run python -m unittest discover -s testsコンパイルチェック:
uv run python -m compileall src現在のテスト範囲:
設定のデフォルト値、ディスクリロード、プロバイダー設定の移行
HTTPシェルおよびMCPシェルの動作
リクエストコンテキスト / テナント解決
リクエストレベルの検索キャッシュ
プロバイダー予算 / フォールバック
readiness / health / metrics
パッケージメタデータと静的リソース
ライセンス
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kalicyh/mcp-rag'
If you have feedback or need assistance with the MCP directory API, please join our Discord server