mcpField
🚀
🚀 MCP Server for Document Processing

🚀 MCP Server for Document Processing

ロヌカル
github.com/donphiメモリ・ナレッゞ984 週間前に曎新

🚀 MCP Server for Document Processing に぀いお

AIアシスタントからプラむベヌト文曞や技術資料を怜玢できるMCPサヌバヌです。文曞を分割しお埋め蟌みを生成し、ベクトルデヌタベヌスに保存したす。ロヌカルの無料モデルずOpenAIの埋め蟌みモデルに察応したす。

䞻な機胜

  1. 01Markdown、テキスト、PDF、Wordの凊理
  2. 02コンテンツの分割ず埋め蟌み生成
  3. 03ベクトルデヌタベヌスぞの保存ず怜玢
  4. 04ロヌカルおよびOpenAIの埋め蟌みモデル察応
  5. 05コンテキスト取埗ず実装提案のツヌル

掻甚シヌン

  1. 01最新フレヌムワヌク文曞の怜玢
  2. 02プラむベヌトなコヌドベヌス資料の怜玢
  3. 03技術文曞からのコンテキスト取埗
  4. 04実装案の取埗

MCP 察応

文曞読み蟌み、コンテンツ怜玢、コンテキスト取埗、プロゞェクト構成の参照、実装提案のツヌルをMCPクラむアントに公開したす。クラむアントは自動怜玢たたはツヌルの明瀺的な呌び出しで凊理枈みの内容を怜玢できたす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

🚀 ドキュメント凊理甚 MCP サヌバヌ

🔗 Model Context ProtocolMCPに぀いお

Model Context ProtocolMCP は、AI アシスタントが倖郚のツヌルやデヌタ゜ヌスにアクセスできるようにするため、Anthropic が䜜成した新しい暙準です。このプロトコルにより、AI モデルはこの MCP サヌバヌのような専門サヌビスに接続し、トレヌニングデヌタの範囲を超えお胜力を拡匵できたす。

MCP 暙準を実装するこずで、このサヌバヌは AI アシスタントが独自のドキュメントコレクションから情報を怜玢・取埗できるようにし、固有のコンテンツでナレッゞベヌスを効果的に拡匵したす。

🧠 最新情報で LLM の知識を拡匵

この Model Context ProtocolMCPサヌバヌを䜿甚するず、倧芏暡蚀語モデルの最倧の制玄のひず぀である知識のカットオフを克服できたす。独自の MCP サヌバヌを䜜成するこずで、以䞋に関する最新情報を AI アシスタントに提䟛できたす。

  • 最新のフレヌムワヌクのドキュメントLLM のトレヌニングデヌタに含たれおいないコンテンツを利甚できたすReact 19、Angular 17、Vue 3.4 以降など。
  • プラむベヌトなコヌドベヌス独自のコヌドパタヌンや構造を AI アシスタントが理解できるよう支揎したす。
  • 技術仕様新しい API、プロトコル、ツヌルに関するドキュメントをむンポヌトしたす。

掚奚デヌタ゜ヌス

  • FireCrawl.devドキュメントサむトのスクレむピングに䟿利な匷力なツヌル
  • GitHub の公匏リポゞトリREADME ずドキュメントをダりンロヌドしたす
  • 技術ブログずチュヌトリアル重芁な蚘事を Markdown ファむルずしお保存したす

🏗 アヌキテクチャ

システムは次の 2 ぀の䞻芁コンポヌネントで構成されおいたす。

  1. 📝 凊理パむプラむンMarkdown ファむルずテキストファむルを読み蟌み、チャンクに分割しお埋め蟌みを生成し、ベクトルデヌタベヌスに保存したす。
  2. 🔌 MCP サヌバヌ凊理枈みのコンテンツを MCP ツヌル経由で公開し、AI アシスタントが関連情報を怜玢・取埗できるようにしたす。

💡 䜿甚䟋

最新のフレヌムワヌクドキュメントで AI の知識を曎新
# Scrape latest React 19 docs using FireCrawl.dev
# Place the saved markdown files in the data/ directory
# Run the pipeline to process the documentation
# Now ask your AI assistant about React 19 features!
プラむベヌトなコヌドベヌスのドキュメントを䜿甚
# Export your API documentation as markdown
# Place the markdown files in the data/ directory
# Run the pipeline to process
# Now your AI assistant can help debug issues with your specific APIs!

✅ 前提条件

  • DockerWindows たたは Mac 甚の Docker Desktop、たたは Linux 甚の Docker Engine
  • OpenAI API キヌ任意代わりに無料のロヌカル埋め蟌みを䜿甚できたす
  • MCP に察応した AI アシスタントRoo やその他の互換性のあるアシスタントなど

🛠 セットアップ

  1. このリポゞトリをクロヌンしたす。

    git clone https://github.com/donphi/mcp-server.git
    cd mcp-server
    
  2. 蚭定を蚘述した .env ファむルを䜜成したす。

    # Copy the example file
    cp .env.example .env
    
    # Edit the file with your settings
    nano .env
    

    Windows では、メモ垳を䜿っお .env ファむルを線集できたす。

  3. Markdown.mdファむルずテキスト.txtファむルを data/ ディレクトリに配眮したす。

⚙ 蚭定

.env ファむルの環境倉数を䜿甚しお、MCP サヌバヌを蚭定できたす。

# API Keys
OPENAI_API_KEY=your_openai_api_key_here  # Optional - can use free local embeddings instead
ANTHROPIC_API_KEY=your_anthropic_api_key_here  # Optional

# Pipeline Configuration
CHUNK_SIZE=800                 # Size of text chunks
CHUNK_OVERLAP=120              # Overlap between chunks (in tokens)
BATCH_SIZE=10                  # Batch size for embedding generation
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2  # Model to use (see options below)
SUPPORTED_EXTENSIONS=.md,.txt,.pdf,.docx,.doc  # Comma-separated list of supported file extensions

# Server Configuration
CLAUDE_MODEL=claude-3-7-sonnet-20240307  # Claude model to use
MAX_RESULTS=10                 # Maximum number of results to return
USE_ANTHROPIC=true             # Whether to use Anthropic API for responses

# Paths
DATA_DIR=/data                 # Directory containing input files
OUTPUT_DIR=/output             # Directory for output files
DB_PATH=/db                    # Directory for vector database
CONFIG_PATH=/config/server_config.json  # Path to server configuration file

📊 埋め蟌みモデル

このシステムは、テキストをベクトル衚珟に倉換するため、耇数の埋め蟌みモデルに察応しおいたす。

無料モデルAPI キヌ䞍芁

これらのモデルは Docker コンテナ内でロヌカルに実行され、API キヌは䞍芁です。

  • sentence-transformers/all-MiniLM-L6-v2文や短い段萜の゚ンコヌド甚に蚭蚈されたコンパクトなモデルです。効率的な埋め蟌みを生成し、高速な怜玢タスクに適しおいたす。

  • BAAI/bge-m3耇数の怜玢機胜に察応し、100 を超える蚀語ず最倧 8192 トヌクンの入力をサポヌトする汎甚性の高いモデルです。包括的な怜玢タスクに最適です。

  • Snowflake/snowflake-arctic-embed-m高品質な怜玢性胜を実珟するよう最適化されたモデルで、粟床ず掚論速床のバランスに優れおいたす。

有料モデルOpenAI API キヌが必芁
  • text-embedding-3-small高い品質を保ちながら、速床ずコスト効率を重芖しお最適化されおいたす。
  • text-embedding-3-large最高品質の埋め蟌みを生成したすより高䟡です。

パむプラむンを実行するず、䜿甚するモデルを遞択するよう求められたす。OpenAI API キヌがない堎合、システムは無料のロヌカルモデルを自動的に䜿甚したす。

🚀 䜿甚方法

🔄 ファむルの凊理

ファむルを凊理しお埋め蟌みを生成するには、次のコマンドを実行したす。

docker-compose build pipeline
docker-compose run pipeline

Windows の堎合は、Docker Desktop のむンストヌル埌に、コマンドプロンプトたたは PowerShell でこれらのコマンドを実行できたす。

実行するず、次の凊理が行われたす。

  • 埋め蟌みモデルを遞択するよう求められたす
  • 必芁に応じおパッケヌゞがむンストヌルされたす
  • data/ ディレクトリ内にある、サポヌト察象のすべおのファむルが読み蟌たれたす
  • コンテンツが凊理され、チャンクに分割されたす
  • 埋め蟌みが生成されたす
  • 埋め蟌みがベクタヌデヌタベヌスに保存されたすdb/ ディレクトリ内に chroma.sqlite3 ファむルが䜜成されたす

⚠ 重芁な次の手順 ファむルを凊理した埌、サヌバヌを実行する前に、必ずサヌバヌをビルドしおください。次のセクションを参照しおください。

🔧 MCP サヌバヌのビルド

必須の手順 ドキュメントを凊理した埌、サヌバヌを実行する前に、サヌバヌコンポヌネントをビルドする必芁がありたす。

docker-compose build server

Windows ナヌザヌぞの泚意 MCP サヌバヌを実行する前に、この手順を行うこずが重芁です。サヌバヌむメヌゞをビルドせずにサヌバヌを実行しようずするず、「invalid reference format」゚ラヌが発生したす。

Linux/macOS 甚の曎新された実行スクリプトは、サヌバヌむメヌゞが存圚しない堎合に自動的にビルドしたす。ただし、パフォヌマンスを向䞊させ、サヌバヌの初回実行時に予期しない遅延が発生しないよう、手動でビルドするこずをおすすめしたす。

🔌 MCP 察応の AI アシスタントぞの接続

⚠ 再確認 MCP サヌバヌぞの接続を蚭定する前に、次の手順が完了しおいるこずを確認しおください。

  1. パむプラむンをビルドしたすdocker-compose build pipeline
  2. パむプラむンを実行したすdocker-compose run pipeline
  3. サヌバヌをビルドしたすdocker-compose build server— この手順は重芁ですが、芋萜ずされるこずがよくありたす

MCP サヌバヌを AI アシスタントで蚭定する必芁がありたす。蚭定を生成するスクリプトを甚意しおいたす。

macOS/Linux の堎合
  1. セットアップスクリプトに実行暩限を付䞎しお、実行したす。

    chmod +x setup-mcpServer-json.sh
    ./setup-mcpServer-json.sh
    
  2. 正しい蚭定を含む mcp-config.json ファむルが䜜成されたす。

  3. AI アシスタントに蚭定を远加したす。

Windows の堎合
  1. setup-mcpServer-json.bat ファむルをダブルクリックするか、コマンドプロンプトから実行したす。

    setup-mcpServer-json.bat
    
  2. 正しい蚭定を含む mcp-config.json ファむルが䜜成されたす。

  3. AI アシスタントに蚭定を远加したす。

Windows ナヌザヌぞの重芁なお知らせ run-mcp-server.bat ファむルは、Docker Compose を䞀貫しお䜿甚するように曎新されたした。これにより、䞀郚の Windows ナヌザヌに発生しおいた「invalid reference format」゚ラヌが解消されたす。それでもこの問題が発生する堎合は、このリポゞトリの最新バヌゞョンのバッチファむルを䜿甚しおいるこずを確認しおください。

䟋Roo の蚭定

AI アシスタントずしお Roo を䜿甚する堎合

  1. お䜿いのプラットフォヌムに適したセットアップスクリプトを実行し、蚭定ファむルを生成したす
  2. Roo のサむドバヌにある「MCP Server」ボタンタブをクリックしたす
  3. 「Enable MCP Servers」の切り替えを有効にしたす
  4. 「Edit MCP Settings」をクリックしたす
  5. mcp-config.json ファむルの内容党䜓をコピヌしお貌り付けたす
  6. 蚭定を保存したす

🧩 MCP サヌバヌの䜿甚

蚭定が完了するず、MCP に察応した AI アシスタントで MCP サヌバヌを䜿甚できたす。Roo のような察応アシスタントでは、次の 2 ぀の方法で䜿甚できたす。

  1. 自動モヌドautoQuery: true の堎合通垞どおり質問するず、AI がベクタヌデヌタベヌスを自動的に怜玢し、関連情報を確認したす。

    䟋「React 19 の䞻な機胜は䜕ですか」

  2. ツヌルの明瀺的な䜿甚特定のツヌルを䜿うよう AI に盎接䟝頌したす。

    䟋「search_content ツヌルを䜿っお、React 19 Compiler に関する情報を芋぀けおください。」

🧰 MCP ツヌル

MCP サヌバヌでは、次のツヌルを利甚できたす。

  • 📚 read_md_filesファむルを凊理しお取埗したす。パラメヌタヌfile_path特定のファむルたたはディレクトリぞのパス。省略可胜
  • 🔍 search_content凊理枈みのコンテンツ党䜓を怜玢したす。パラメヌタヌquery必須の怜玢ク゚リ
  • 📋 get_contextコンテキスト情報を取埗したす。パラメヌタヌquery必須のコンテキストク゚リ、window_size取埗するコンテキスト項目数。省略可胜
  • 🏗 project_structureプロゞェクト構造に関する情報を提䟛したす。パラメヌタヌはありたせん。
  • 💡 suggest_implementation実装案を生成したす。パラメヌタヌdescription実装する内容の説明。必須

📄 察応ファむル圢匏

デフォルトでは、次のファむル圢匏に察応しおいたす。

  • Markdown ファむル.md
  • テキストファむル.txt
  • PDF ファむル.pdf
  • Word 文曞.docx、.doc

.env ファむルで環境倉数 SUPPORTED_EXTENSIONS を蚭定するず、察応するファむル拡匵子を远加できたす。

🔄 動䜜モヌド

MCP サヌバヌは、次の 2 ぀のモヌドで動䜜したす。

  1. 🀖 フル凊理モヌドAnthropic API キヌが蚭定され、USE_ANTHROPIC が true に蚭定されおいる堎合、サヌバヌは取埗したコンテキストに基づいお Claude で応答を生成したす。

  2. 📋 コンテキスト取埗モヌドAnthropic API キヌが蚭定されおいない堎合、たたは USE_ANTHROPIC が false に蚭定されおいる堎合、サヌバヌは関連するコンテキストの取埗ず返华のみを行いたす。クラむアントAI アシスタントなどは、そのコンテキストを独自の LLM で凊理できたす。

📁 プロゞェクト構造

mcp-server/
├── Dockerfile.pipeline
├── Dockerfile.server
├── docker-compose.yml
├── requirements.pipeline.txt
├── requirements.server.txt
├── README.md
├── .env.example
├── run-mcp-server.sh       # For macOS/Linux
├── run-mcp-server.bat      # For Windows
├── setup-mcpServer-json.sh # Setup script for macOS/Linux
├── setup-mcpServer-json.bat # Setup script for Windows
├── enhanced_chunking.py
├── inspect_chunks.py
├── run_chunk_analysis.sh
├── setup_enhanced_chunking.sh
├── visualize_chunks.py
├── restart_server.sh
├── chunk_analysis/         # Tools for analyzing chunking methods
│   ├── docker_entrypoint.sh
│   ├── docker-compose.yml
│   ├── Dockerfile
│   ├── inspect_chunks.py
│   ├── README.md
│   ├── run_tests.sh
│   ├── semi_interactive_chunking.py
│   └── test_chunking.py
├── src/
│   ├── pipeline.py
│   ├── server.py
│   └── utils/
│       ├── __init__.py
│       ├── chunking.py
│       ├── embedding.py
│       └── vector_db.py
├── config/
│   ├── pipeline_config.json
│   └── server_config.json
├── data/
│   └── README.md
├── output/
│   └── .gitkeep
└── db/
    └── .gitkeep

❓ トラブルシュヌティング

  • Docker が芋぀からないDocker がむンストヌルされ、実行䞭であるこずを確認しおください。docker --version で確認できたす。
  • 「Invalid reference format」゚ラヌこのよくある゚ラヌは、次の 2 ぀の原因で発生するこずがありたす。
    1. ビルド手順の未実行サヌバヌむメヌゞをビルドする前に、MCP サヌバヌを実行しようずしたした。サヌバヌを実行する前に、必ず docker-compose build server を実行しおください。
    2. Docker ず Docker Compose の混圚Windows のバッチファむルは、䞀貫しお Docker Compose を䜿甚するように曎新されおいたす。それでもこの゚ラヌが発生する堎合は、このリポゞトリの最新バヌゞョンのバッチファむルを䜿甚しおいるこずを確認しおください。
  • API キヌの問題ご心配には及びたせん。API キヌなしで、無料のロヌカル埋め蟌みモデルを䜿甚できたす。
  • sentence-transformers パッケヌゞが芋぀からない無料モデルを遞択するず、必芁なパッケヌゞはシステムによっお自動的にむンストヌルされたす。
  • Chroma デヌタベヌスが芋぀からないたずパむプラむンを実行しお、ドキュメントを凊理しおください。
  • 接続の問題MCP の蚭定にあるパスが、実行スクリプトの正しい堎所を指しおいるこずを確認しおください。
  • Windows のパスの問題Windows でパスに問題が発生する堎合は、JSON 蚭定内のパスに二重のバックスラッシュ\\を䜿甚しおください。
  • 埋め蟌みモデルの䞍䞀臎サヌバヌはデヌタベヌスの䜜成に䜿甚されたモデルを自動的に怜出し、怜玢にも同じモデルを䜿甚したす。
ドキュメントのチャンク分割に関する問題

チャンク分割の䞍䞀臎

ファむル間でチャンク分割に䞀貫性がない堎合、次の原因が考えられたす。

  • ドキュメントタむプ怜出システムが以前の刀定を蚘憶しおいる
  • spaCy の䟝存関係が䞍足しおいる
  • 蚭定ファむルず環境倉数が競合しおいる

解決方法

  • パむプラむンは実行ごずにドキュメントタむプの蚘憶を自動的にリセットしたす
  • spaCy がむンストヌルされおいるこずを確認しおくださいpip install spacy && python -m spacy download en_core_web_md
  • .env ファむルず蚭定ファむルの内容に䞀貫性があるこずを確認しおください

PDF の凊理

次の堎合、PDF が適切にチャンク分割されないこずがありたす。

  • PDF にテキストではなく、スキャン画像が含たれおいる
  • PDF の曞匏が耇雑である
  • 必芁な䟝存関係が䞍足しおいる

解決方法

  • パむプラむンでは、蚺断機胜を匷化しお PDF の凊理を改善しおいたす
  • スキャンした PDF では、事前に OCR 凊理を行うこずを怜蚎しおください
  • PyPDF をむンストヌルしおくださいpip install pypdf

🔬 高床な蚭定

高床なナヌスケヌスでは、パむプラむンずサヌバヌをカスタマむズできたす。

  • カスタム埋め蟌み関数独自の埋め蟌みロゞックを䜜成したす
  • ドキュメントタむプの分類ドキュメントタむプの怜出方法を倉曎したす
  • チャンク化の動䜜特定のニヌズに合わせおチャンク化のパラメヌタヌを調敎したす
  • チャンク分析/chunk_analysis のテストツヌルを䜿っお、暙準的なチャンク化方法ず拡匵されたチャンク化方法を比范したす。
    # First build the Docker container
    cd chunk_analysis
    docker-compose build
    
    # Then run the tests
    ./run_tests.sh
    
チャンク化戊略

パむプラむンでは、ドキュメントの皮類に応じお次のチャンク化戊略を䜿甚したす。

  • 科孊論文セクションごずに分割し、参考文献を保持したす
  • 財務ドキュメント衚ず数倀のセクションを保持したす
  • 技術ドキュメントコヌドブロックず䟋を保持したす
  • 物語文spaCy NLP による意味的な境界を䜿甚したす
  • 䞀般セクション芋出しず意味的な区切りを䜿ったバランスの取れた方法です

利甚可胜な堎合、すべおのドキュメントタむプで、チャンク化の掚奚方法ずしお spaCy を䜿甚したす。

📄 ラむセンス

MIT


donphi が ❀ を蟌めお䜜成したした

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。