mcpField
R
RAG for your documents

RAG for your documents

ローカル
devilsdev.github.ioメモリ・ナレッジ11 日前に更新

RAG for your documents について

@devilsdev/rag-mcp-serverは、ローカルの文書フォルダーをインデックス化し、オフライン検索と回答の根拠確認を行います。APIキー、データベース、ネットワーク接続なしで、出典箇所の検索と語句ベースの確認を行いたいMCPクライアント向けです。

主な機能

  1. 01ローカル文書フォルダーのインデックス化
  2. 02自然言語クエリによる箇所検索
  3. 03取得した出典に基づく回答確認
  4. 04Markdown、HTML、CSV、テキストに対応
  5. 05起動時にメモリー上のインデックスを再構築

活用シーン

  1. 01ローカル文書から関連箇所を検索
  2. 02回答がファイル内容に裏付けられているか確認
  3. 03ネットワーク接続なしで文書を検索

MCP 対応

`search_documents`で箇所を検索し、`check_answer`でインデックス済み文書または指定した出典が回答を裏付けるか確認します。stdioで通信し、モデル呼び出しは行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"devilsdev-rag": {
"command": "npx",
"args": [
"-y",
"@devilsdev/rag-mcp-server"
]
}
}
}
起動コマンドnpx -y @devilsdev/rag-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@devilsdev/rag-mcp-server3.8.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

@devilsdev/rag-mcp-server

ドキュメント用のMCPサーバーです。フォルダーを指定すると、Claudeやその他のMCPクライアントからドキュメントを検索し、回答をドキュメントと照合できます。

npx @devilsdev/rag-mcp-server ./docs

起動時にフォルダーをインデックス化します。@devilsdev/rag-pipeline-utilsのオフラインTF-IDF埋め込み器とインメモリ検索機能を使用します。APIキー、データベース、ネットワークは不要です。言語モデルはアシスタント側にあるため、このサーバーが言語モデルを呼び出すことはありません。

Node.js 22以降が必要です。

クライアントを接続する

このサーバーはstdio経由でMCPを使用するため、クライアントが起動します。フォルダーには絶対パスを指定してください。

Claude Code:

claude mcp add docs -- npx -y @devilsdev/rag-mcp-server /absolute/path/to/docs

Claude Desktop、Cursor、その他のmcpServers設定を使用するクライアント(Claude Desktopの場合:Settings → Developer → Edit Configを選択し、再起動します):

{
  "mcpServers": {
    "docs": {
      "command": "npx",
      "args": ["-y", "@devilsdev/rag-mcp-server", "/absolute/path/to/docs"]
    }
  }
}

続いて、「従業員の休暇日数はいくつですか?」のように、ドキュメントから回答できる質問をしてみてください。

ツール

search_documents
入力型説明
querystring、必須自然言語で検索する内容
topKinteger、1~20返すパッセージ数(デフォルトは4、または--top-k)

{ passages: [{ id, source, score, text }] }を、関連度の高い順に、構造化コンテンツとJSONテキストの両方で返します。sourceはフォルダーからの相対パス、idは<source>#<chunk number>です。クエリと用語が一致しないパッセージは除外されます。

check_answer
入力型説明
answerstring、必須確認する回答
questionstring回答対象の質問。sourcesを省略した場合、検索精度が向上します
sources文字列または{ id, text }の配列照合するパッセージ。省略すると、インデックス化されたドキュメントを検索します
topKinteger、1~20sourcesを省略した場合に取得するパッセージ数

ライブラリのcheckAnswerを実行し、{ grounded, groundedness, unsupported, citations, sources }を返します。返される内容は、すべての文が根拠によって裏付けられているか、裏付けられている文の割合(0~1)、裏付けられていない文、各文を裏付けるソースのID、および照合したソースです。このチェックは語彙ベースで、モデルを呼び出しません。そのため、正しい言い換えでも裏付けがないと判定されることがあります。最終判断ではなく、再確認を促すフラグとして扱ってください。

どちらのツールも読み取り専用です。パッセージのテキストはファイルの内容であり、ツールの説明では、クライアントに対してそれを指示ではなくデータとして扱うよう伝えています。ただし、ファイルにアシスタントを操作するための文章が含まれている可能性はあるため、信頼できるフォルダーをインデックス化してください。

ファイル

フォルダーとそのサブフォルダー内のMarkdown(.md、.markdown)、HTML(.html、.htm、表示テキストのみ)、CSV(.csv、1行につき1つのパッセージ)、およびテキスト(.txt)ファイルが対象です。ライブラリのローダーと同じ方法で処理され、文章は最大500文字の文単位チャンクに分割されます。その他のファイル、node_modules、.gitはスキップされます。インデックスはメモリ上に保持され、サーバーの起動ごとに再構築されます。そのため、ドキュメントを変更した後は、クライアントのサーバーを再起動してください。

オプション

rag-mcp-server <folder> [--top-k <n>] [--embedder local]
オプションデフォルト説明
--top-k <n>4クライアントから topK が渡されない場合の呼び出しあたりのパッセージ数
--embedder <name>localエンベッダー。使用できるのは local(TF-IDF、オフライン)のみです

サーバーのログはすべて stderr に出力され、stdout はプロトコル用です。

独自に構築する

ほかのエンベッダー(OpenAI、Ollama)、永続インデックス、またはベクトルデータベースを使用する場合は、MCP サーバーの例を参考にしてください。ライブラリを使って、同じ種類のサーバーを約100行で構築しています。

ドキュメント:https://devilsdev.github.io/rag-pipeline-utils/

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。