Mcp Rag Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Rag Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP RAG Serverは、Model Context Protocol (MCP)に準拠したRAG(Retrieval-Augmented Generation)機能を持つPythonサーバーです。マークダウン、テキスト、パワーポイント、PDFなど複数の形式のドキュメントをデータソースとして、multilingual-e5-largeモデルを使用してインデックス化し、ベクトル検索によって関連情報を取得する機能を提供します。
このプロジェクトは、MCPサーバーの基本的な実装に加えて、RAG機能を提供します。複数形式のドキュメントをインデックス化し、自然言語クエリに基づいて関連情報を検索することができます。
Docker Desktopを起動した状態で、以下を1回実行すれば依存導入〜DB起動〜サーバー起動まで完了します。
/bin/bash -c '
set -euo pipefail
command -v uv >/dev/null 2>&1 || brew install uv
git clone https://github.com/FORIFOR/map-rag-server.git
cd map-rag-server
cp .env.sample .env
perl -pi -e "s/^POSTGRES_HOST=.*/POSTGRES_HOST=127.0.0.1/; \
s/^POSTGRES_PORT=.*/POSTGRES_PORT=5434/; \
s/^POSTGRES_USER=.*/POSTGRES_USER=rag/; \
s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=ragpass/; \
s/^POSTGRES_DB=.*/POSTGRES_DB=ragdb/" .env
docker run -d --name pgvector-db \
-e POSTGRES_USER=rag \
-e POSTGRES_PASSWORD=ragpass \
-e POSTGRES_DB=ragdb \
-p 5434:5432 \
pgvector/pgvector:pg16
uv sync
uv run python -m src.http_server
'既にリポジトリを持っている場合は git clone 部分を削って使用してください。# uvがインストールされていない場合は先にインストール
# pip install uv
# 依存関係のインストール
uv sync#### Dockerを使用する場合
# pgvectorを含むPostgreSQLコンテナを起動
docker run --name postgres-pgvector -e POSTGRES_PASSWORD=password -p 5432:5432 -d pgvector/pgvector:pg17#### データベースの作成
PostgreSQLコンテナを起動した後、以下のコマンドでデータベースを作成します:
# ragdbデータベースの作成
docker exec -it postgres-pgvector psql -U postgres -c "CREATE DATABASE ragdb;"#### 既存のPostgreSQLにpgvectorをインストールする場合
-- pgvectorエクステンションをインストール
CREATE EXTENSION vector;.envファイルを作成し、以下の環境変数を設定します:
# PostgreSQL接続情報
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DB=ragdb
# ドキュメントディレクトリ
SOURCE_DIR=./data/source
PROCESSED_DIR=./data/processed
# エンベディングモデル設定
EMBEDDING_MODEL=intfloat/multilingual-e5-large
EMBEDDING_DIM=1024
EMBEDDING_PREFIX_QUERY="query: "
EMBEDDING_PREFIX_EMBEDDING="passage: "このサーバーでは、環境変数でエンベディングモデルを選択できます。
#### multilingual-e5-large(デフォルト)
EMBEDDING_MODEL=intfloat/multilingual-e5-large
EMBEDDING_DIM=1024
EMBEDDING_PREFIX_QUERY="query: "
EMBEDDING_PREFIX_EMBEDDING="passage: "#### cl-nagoya/ruri-v3-30m
EMBEDDING_MODEL=cl-nagoya/ruri-v3-30m
EMBEDDING_DIM=256
EMBEDDING_PREFIX_QUERY="検索クエリ: "
EMBEDDING_PREFIX_EMBEDDING="検索文書: "多くのエンベディングモデル(特にE5系)では、テキストの種類に応じてプレフィックスを付けることで性能が向上します:
EMBEDDING_PREFIX_QUERY - ユーザーの検索クエリに自動で追加EMBEDDING_PREFIX_EMBEDDING - インデックス化される文書に自動で追加プレフィックスは自動で処理されるため、MCPクライアントは意識する必要がありません。
エンベディングモデルを変更した場合は、ベクトル次元が変わる可能性があるため、既存のインデックスをクリアして再作成してください:
python -m src.cli clear
python -m src.cli index#### uvを使用する場合(推奨)
uv run python -m src.mainオプションを指定する場合:
uv run python -m src.main --name "my-rag-server" --version "1.0.0" --description "My RAG Server"#### 通常のPythonを使用する場合
python -m src.mainインデックスのクリアとインデックス化を行うためのコマンドラインツールが用意されています。
#### ヘルプの表示
python -m src.cli --help#### インデックスのクリア
python -m src.cli clear#### ドキュメントのインデックス化
# デフォルト設定でインデックス化(./data/source ディレクトリ)
python -m src.cli index
# 特定のディレクトリをインデックス化
python -m src.cli index --directory ./path/to/documents
# チャンクサイズとオーバーラップを指定してインデックス化
python -m src.cli index --directory ./data/source --chunk-size 300 --chunk-overlap 50
# または短い形式で
python -m src.cli index -d ./data/source -s 300 -o 50
# 差分インデックス化(新規・変更ファイルのみを処理)
python -m src.cli index --incremental
# または短い形式で
python -m src.cli index -i#### インデックス内のドキュメント数の取得
python -m src.cli countMCPホスト(Claude Desktop、Cline、Cursorなど)でこのサーバーを使用するには、以下のような設定を行います。設定するjsonファイルについては、各MCPホストの ドキュメントを参照してください。
#### 設定例
{
"mcpServers": {
"mcp-rag-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/mcp-rag-server",
"python",
"-m",
"src.main"
]
}
}
}#### 設定のポイント
command: uv(推奨)またはpythonargs: 実行引数の配列/path/to/mcp-rag-server: このリポジトリの実際のパスに置き換えてください#### uvを使用しない場合
uvがインストールされていない環境では、通常のPythonを使用できます:
{
"command": "python",
"args": [
"-m",
"src.main"
],
"cwd": "/path/to/mcp-rag-server"
}ベクトル検索を行います。
{
"jsonrpc": "2.0",
"method": "search",
"params": {
"query": "Pythonのジェネレータとは何ですか?",
"limit": 5,
"with_context": true,
"context_size": 1,
"full_document": false
},
"id": 1
}#### パラメータの説明
query: 検索クエリ(必須)limit: 返す結果の数(デフォルト: 5)with_context: 前後のチャンクも取得するかどうか(デフォルト: true)context_size: 前後に取得するチャンク数(デフォルト: 1)full_document: ドキュメント全体を取得するかどうか(デフォルト: false)#### 検索結果の改善
このツールは以下の機能により、より良い検索結果を提供します:
with_contextパラメータで有効/無効を切り替え可能context_sizeパラメータで前後に取得するチャンク数を調整可能full_documentパラメータで有効/無効を切り替え可能インデックス内のドキュメント数を取得します。
{
"jsonrpc": "2.0",
"method": "get_document_count",
"params": {},
"id": 2
}data/source ディレクトリに配置します。サポートされるファイル形式は以下の通りです: # 初回は全件インデックス化
python -m src.cli index
# 以降は差分インデックス化で効率的に更新
python -m src.cli index -i uv run python -m src.mainsearchツールを使用して検索を行います。インデックス化したデータベースを別のPCで使用するには、以下の手順でバックアップと復元を行います。
単純に他のPCでRAG検索機能を使いたいだけなら、PostgreSQLデータベースのバックアップだけで十分です。ベクトル化されたデータはすべてデータベースに保存されているためです。
#### PostgreSQLデータベースのバックアップ
PostgreSQLデータベースをバックアップするには、Dockerコンテナ内でpg_dumpコマンドを使用します:
# Dockerコンテナ内でデータベースをバックアップ
docker exec -it postgres-pgvector pg_dump -U postgres -d ragdb -F c -f /tmp/ragdb_backup.dump
# バックアップファイルをコンテナからホストにコピー
docker cp postgres-pgvector:/tmp/ragdb_backup.dump ./ragdb_backup.dumpこれにより、PostgreSQLデータベースのバックアップファイル(例:239MB)がカレントディレクトリに作成されます。
#### 最小限の復元手順
# Dockerを使用する場合
docker run --name postgres-pgvector -e POSTGRES_PASSWORD=password -p 5432:5432 -d pgvector/pgvector:pg17
# データベースを作成
docker exec -it postgres-pgvector psql -U postgres -c "CREATE DATABASE ragdb;"# バックアップファイルをコンテナにコピー
docker cp ./ragdb_backup.dump postgres-pgvector:/tmp/ragdb_backup.dump
# コンテナ内でデータベースを復元
docker exec -it postgres-pgvector pg_restore -U postgres -d ragdb -c /tmp/ragdb_backup.dump新しいPCでは、.envファイルのPostgreSQL接続情報が正しく設定されていることを確認してください。
python -m src.cli countこれにより、インデックス内のドキュメント数が表示されます。元のPCと同じ数が表示されれば、正常に復元されています。
将来的に新しいドキュメントを追加する予定がある場合や、差分インデックス化機能を使用したい場合は、以下の追加バックアップも行うと良いでしょう:
#### 処理済みドキュメントのバックアップ
処理済みドキュメントディレクトリをバックアップします:
# 処理済みドキュメントディレクトリをZIPファイルにバックアップ
zip -r processed_data_backup.zip data/processed/#### 環境設定ファイルのバックアップ
.envファイルをバックアップします:
# .envファイルをコピー
cp .env env_backup.txt#### 完全復元手順
新しいPCには以下のソフトウェアがインストールされている必要があります:
# ZIPファイルを展開
unzip processed_data_backup.zip -d /path/to/mcp-rag-server/# .envファイルを復元
cp env_backup.txt /path/to/mcp-rag-server/.env必要に応じて、新しいPC環境に合わせて.envファイルの設定(特にPostgreSQL接続情報)を編集します。
python -m src.cli countsentence-transformers、psycopg2-binaryなど)をインストールしておく必要があります。mcp-rag-server/
├── data/
│ ├── source/ # 原稿ファイル(階層構造対応)
│ │ ├── markdown/ # マークダウンファイル
│ │ ├── docs/ # ドキュメントファイル
│ │ └── slides/ # プレゼンテーションファイル
│ └── processed/ # 処理済みファイル(テキスト抽出済み)
│ └── file_registry.json # 処理済みファイルの情報(差分インデックス用)
├── docs/
│ └── design.md # 設計書
├── logs/ # ログファイル
├── src/
│ ├── __init__.py
│ ├── document_processor.py # ドキュメント処理モジュール
│ ├── embedding_generator.py # エンベディング生成モジュール
│ ├── example_tool.py # サンプルツールモジュール
│ ├── main.py # メインエントリーポイント
│ ├── mcp_server.py # MCPサーバーモジュール
│ ├── rag_service.py # RAGサービスモジュール
│ ├── rag_tools.py # RAGツールモジュール
│ └── vector_database.py # ベクトルデータベースモジュール
├── tests/
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_document_processor.py
│ ├── test_embedding_generator.py
│ ├── test_example_tool.py
│ ├── test_mcp_server.py
│ ├── test_rag_service.py
│ ├── test_rag_tools.py
│ └── test_vector_database.py
├── .env # 環境変数設定ファイル
├── .gitignore
├── LICENSE
├── pyproject.toml
└── README.mdこのプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.