ragflow-knowledge-mcp-server について
ragflow-knowledge-mcp-serverは、RAGFlowのナレッジベース向けPython製MCPサーバーです。MCPクライアントから検索や情報確認ができ、YAMLと環境変数で設定し、stdioまたはSSEで接続できます。
主な機能
- 01動的なナレッジベース検索ツール
- 02利用可能なナレッジベースの一覧
- 03ナレッジベース情報の取得
- 04stdioとSSEのトランスポート
- 05YAMLと環境変数による設定
活用シーン
- 01RAGFlowのナレッジベース内を検索
- 02利用可能なナレッジベースと詳細を確認
MCP 対応
ナレッジベースの検索、一覧取得、指定したベースの情報取得ツールをMCPクライアントに公開します。stdioまたはSSEで接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ragflow-knowledge-mcp-server
プロジェクト概要:
RAGFlow 向けのシンプルなナレッジベース MCP サーバーです。
このプロジェクトは、RAGFlow のナレッジベース向けに Python で構築された MCP(Model Context Protocol)サーバーです。
RAGFlow とやり取りするためのツールセットを提供し、ナレッジの検索、利用可能なナレッジベースの一覧表示、特定のナレッジベースに関する情報の取得ができます。
サーバーは mcp ライブラリを使用して構築されており、トランスポートには stdio または sse を使用するように設定できます。
サーバーは YAML ファイル(config.yaml)と環境変数で設定します。
対応する RAGFlow のバージョン: 0.17.2 ~ 0.19.0
こちらもご覧ください:infiniflow/ragflow/blob/main/mcp/server/server.py
1. 利用可能なツール
1. 動的ナレッジベース検索ツール
config.yaml で動的ナレッジベース検索ツールを有効にします。詳しくはサーバーの設定もご覧ください。
datasets:
- dataset-id: 00000000000000000000000000000000
search-tool-name: search_xxx_knowledge
#search-tool-description: "Search knowledge about XXX(中文说明)."
#search-tool-result: simple
search-tool-description: "Search knowledge about XXX(中文说明). Results in JSON format, knowledge in the 'content' property."
search-tool-result: json
2. list_knowledge_bases(デフォルトでは無効)
config.yaml で list_knowledge_bases ツールを有効にします。
list-bases-enabled: true
-
デフォルトの説明: ナレッジベースを一覧表示します。
-
入力プロパティ:
page、str:一覧表示するページ番号です。省略可能で、デフォルトは 1 です。limit、str:一覧表示するナレッジベースの最大数です。省略可能で、デフォルトは 20 です。timeout、int:動的タイムアウトパラメーターです。timeout-param-enabledによって有効になり、省略可能です。デフォルトは 60 秒です。
3. get_knowledge_base_info(デフォルトでは無効)
config.yaml で get_knowledge_base_info ツールを有効にします。
get-base-enabled: true
-
デフォルトの説明: 指定したナレッジベース ID の情報を取得します。結果には、ナレッジベース名、説明、その他の情報が含まれます。
-
入力プロパティ:
knowledge_base_id、str:照会するナレッジベースの ID です。timeout、int:動的タイムアウトパラメーターです。timeout-param-enabledによって有効になり、省略可能です。デフォルトは 60 秒です。
2. インストールと実行
2.1. pip を使用してインストール
# Uninstall the previous version
pip uninstall --yes ragflow-knowledge-mcp-server
pip install ragflow-knowledge-mcp-server --upgrade --force-reinstall --extra-index-url http://127.0.0.1:8081/repository/pypi-group/simple --trusted-host 127.0.0.1
2.2. ソースからインストール
cd /path/to/project
pip install .
# Or install using pytools.sh
./pytools.sh reinstall-system
2.3. 実行
export SIMP_LOGGER_LOG_FILE=/path/to/mcp.log
export SIMP_LOGGER_LOG_LEVEL=DEBUG
# This server can be run directly from the command line:
ragflow-knowledge-mcp-server --config=/path/to/config.yaml
# Alternatively, it can be run as a Python module:
python -m ragflow_knowledge_mcp_server --config=/path/to/config.yaml
# This server can also be run using `uv`:
uv run ragflow-knowledge-mcp-server --config=/path/to/config.yaml
2.4. Docker または Docker Compose で実行
-
Docker
EXTRA_INDEX_URL環境変数をエクスポートし、docker/0.1.0/build.sh を実行してイメージをビルドします。必要に応じてビルドスクリプトを変更するか、手動でビルドしてください。- 続いて、docker/0.1.0/run-in-docker.sh を参照してコンテナを実行します。
-
Docker Compose
.envファイルを変更します。config.yamlファイルを変更します。- docker/0.1.0/docker-compose-up-d.sh を実行してコンテナを起動します。必要に応じて起動スクリプトを変更するか、手動で実行してください。
2.4. テスト
# The project uses `pytest` for testing. To run the tests, first install the test dependencies:
python -m venv .venv
. .venv/bin/activate
uv sync --no-install-project --extra test
# Then run pytest:
pytest
3. サーバーの設定
- YAML:
設定例の yaml です。すべての設定については、MCPServerProperties.py をご覧ください。
server-name: ragflow-knowledge-base
default-base-url: http://127.0.0.1:9388/api/v1
default-api-key: ragflow-00000000000000000000000000000000
timeout: 60
timeout-param-enabled: false
# SSE
transport: sse # Defaults to stdio
sse-port: 41106
list-bases-enabled: false
get-base-enabled: false
datasets:
- dataset-id: 00000000000000000000000000000000
search-tool-name: search_xxx_knowledge
search-tool-description: "Search knowledge about XXX(中文说明). Results in JSON format, knowledge in the 'content' property."
- enabled: false
id-param-enabled: true
search-tool-name: search_knowledge
search-tool-description: "Search knowledge from specified knowledge base('knowledge_base_id')."
または、各データセットとツールのベース URL および API キーを設定します。
server-name: ragflow-knowledge-base
timeout: 60
timeout-param-enabled: false
# SSE
transport: sse # Defaults to stdio
sse-port: 41106
list-bases-enabled: false
list-bases-base-url: http://127.0.0.1:9388/api/v1
list-bases-api-key: ragflow-00000000000000000000000000000000
get-base-enabled: false
datasets:
- dataset-id: 00000000000000000000000000000000
base-url: http://127.0.0.1:9388/api/v1
api-key: ragflow-00000000000000000000000000000000
# Other properties...
-
利用可能な環境変数: | Yaml | 環境変数名 | デフォルト値 | 説明 | |-----------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | |
RAGFLOW_KNOWLEDGE_MCP_SERVER_CONFIG|config.yaml| 設定ファイルのパスです。CLI オプション--config=/path/to/config.yamlも利用できます。 | |default-base-url|DEFAULT_RAGFLOW_KNOWLEDGE_BASE_URL| - | ナレッジベースのデフォルトのベース URL です。 | |default-api-key|DEFAULT_RAGFLOW_KNOWLEDGE_API_KEY| - | ナレッジベースのデフォルトの API キーです。 | |server-name|RAGFLOW_KNOWLEDGE_MCP_SERVER_NAME| RAGFlow Knowledge Base | MCP サーバーの名前です。 | |transport|RAGFLOW_KNOWLEDGE_MCP_SERVER_TRANSPORT| stdio | トランスポートの種類です。stdioまたはsseを指定できます。 | |sse-transport-endpoint|RAGFLOW_KNOWLEDGE_MCP_SERVER_SSE_TRANSPORT_ENDPOINT|/messages/| SSE トランスポートのエンドポイントです。 | |sse-bind-host|RAGFLOW_KNOWLEDGE_MCP_SERVER_SSE_BIND_HOST| 0.0.0.0 | SSE トランスポートをバインドするホストです。 | |sse-port|RAGFLOW_KNOWLEDGE_MCP_SERVER_SSE_PORT| 41106 | SSE トランスポートのポートです。 | |sse-debug-enabled|RAGFLOW_KNOWLEDGE_MCP_SERVER_SSE_DEBUG_ENABLED| False | SSE のデバッグモードを有効にするかどうかです。 | |timeout|RAGFLOW_KNOWLEDGE_MCP_SERVER_TIMEOUT| 60 | サーバーのタイムアウト時間です。 | |timeout-param-enabled|RAGFLOW_KNOWLEDGE_MCP_SERVER_TIMEOUT_PARAM_ENABLED| False | タイムアウトパラメーターを有効にするかどうかです。 | |timeout-param-description|RAGFLOW_KNOWLEDGE_MCP_SERVER_TIMEOUT_PARAM_DESCRIPTION|The total timeout for one calling, in seconds, optional, defaults to {self.timeout} seconds.| タイムアウトパラメーターの説明です。 | -
simp-loggerで利用可能な環境変数: | 変数名 | デフォルト値 | 説明 | |-------------------------------------|-----------------------------------------------------------|----------------------------------------------------| |SIMP_LOGGER_LOG_FILE_ENABLED| True | ファイルへのログ記録を有効にするかどうかです。 | |SIMP_LOGGER_LOG_CONSOLE_ENABLED| True | コンソールへのログ記録を有効にするかどうかです。 | |SIMP_LOGGER_LOG_LEVEL| INFO | ログレベルです。 | |SIMP_LOGGER_LOG_FILE|~/logs/simp-logger.log| ログファイルのパスです。 | |SIMP_LOGGER_LOG_PATTERN|%(asctime)s %(levelname)s [%(threadName)s]: %(message)s| ログパターンです。 | |SIMP_LOGGER_LOG_MAX_BYTES| 10485760 (10MB) | ログファイルの最大サイズです。 | |SIMP_LOGGER_LOG_BACKUP_COUNT| 5 | 保持するバックアップファイルの数です。 | |SIMP_LOGGER_LOG_ROTATION_TYPE| size | ログローテーションの種類です。sizeまたはtimeを指定できます。 | |SIMP_LOGGER_LOG_ROTATION_WHEN| midnight | ログファイルをローテーションする時刻です。 | |SIMP_LOGGER_LOG_ROTATION_INTERVAL| 1 | ログローテーションの間隔です。 | |SIMP_LOGGER_LOG_CLEANUP_DISABLED| False | ロガーのクリーンアップを無効にするかどうかです。 |
4. MCP の設定
4.1. SSE
エンドポイントの例:http://127.0.0.1:41106/sse
4.2. stdio
シンプルなコマンドライン:
uv run ragflow-knowledge-mcp-server --config=/path/to/config.yaml
JSON:
{
"ragflow-knowledge-base": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"ragflow-knowledge-mcp-server",
"--config=/path/to/config.yaml"
],
"env": {
"SIMP_LOGGER_LOG_CONSOLE_ENABLED": false,
"SIMP_LOGGER_LOG_FILE": "/path/to/mcp.log",
"SIMP_LOGGER_LOG_LEVEL": "DEBUG"
}
}
}
YAML:
ragflow-knowledge-base:
type: stdio
command: uv
args:
- run
- ragflow-knowledge-mcp-server
- "--config=/path/to/config.yaml"
env:
SIMP_LOGGER_LOG_CONSOLE_ENABLED: false
SIMP_LOGGER_LOG_FILE: /path/to/mcp.log
SIMP_LOGGER_LOG_LEVEL: DEBUG
5. 開発規約
- このプロジェクトは、標準的な Python パッケージング規約に従っています。
- コードは、
src/ragflow_knowledge_mcp_serverディレクトリ内のモジュールに整理されています。 - サーバーのロジックは
server.pyにあり、設定プロパティはproperties/MCPServerProperties.pyで定義され、RAGFlow API とやり取りするサービスはserviceディレクトリにあります。 - このプロジェクトでは、ビルドに
setuptoolsを、バージョン管理にsetuptools_scmを使用しています。 - このプロジェクトでは、ログ記録に
simp-loggerを使用しており、環境変数で設定できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。