Skip to main content
Glama
abrarsavan123

Filesystem MCP Server

MCP統合プロジェクト — 履歴書マッチングエージェント

マイルストーン2: 直接のファイルシステムツールインポートを、完全に仕様準拠の**Model Context Protocol (MCP)**サーバーに置き換え、LangGraphエージェントが利用します。


アーキテクチャ

User
 │
 ▼
matching_agent.py  (LangGraph state machine)
 │
 │  JSON-RPC 2.0 over stdio
 ▼
mcp_client.py  (subprocess manager + RPC transport)
 │
 ▼
filesystem_mcp_server.py  (MCP server, 6 tools)
 │
 ▼
resumes/  (file system)

主要ファイル

ファイル

役割

filesystem_mcp_server.py

JSON-RPC 2.0 MCPサーバーで、6つのファイルシステムツールを公開

mcp_client.py

サブプロセス管理付きの再利用可能なstdioトランスポートMCPクライアント

matching_agent.py

LangGraphエージェント — MCP経由でツールを発見・呼び出し

tests/test_mcp_server.py

すべてのJSON-RPCメソッドのユニットテスト(サブプロセスなし)

tests/test_agent.py

実際のサブプロセス + LangChainブリッジを使った統合テスト

diagrams/workflow_diagram.md

システムの6つのMermaid図


Related MCP server: Filesystem MCP Server

セットアップ

1. 依存関係のインストール

pip install -r requirements.txt

2. APIキーの設定

cp .env.example .env
# Edit .env and set OPENROUTER_API_KEY

無料のキーは openrouter.ai/keys で取得できます。


実行

履歴書マッチングエージェントを起動

python matching_agent.py

クエリの例:

  • "resumesフォルダ内のすべての履歴書を一覧表示"

  • "Pythonスキルを持つ候補者を検索し、経験でランク付け"

  • "すべての履歴書を一括読み取り、スキル比較レポートを作成"

  • "resumesフォルダを監視して新しい候補者を検出"

  • "Alice Johnsonの履歴書を読み、1段落の要約を書く"

MCPサーバーを単体でテスト

# Send a raw JSON-RPC request
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}}}' | python filesystem_mcp_server.py

# Test the MCP client
python mcp_client.py

テストの実行

# Unit tests (fast, no subprocess)
python -m pytest tests/test_mcp_server.py -v

# Integration tests (spawns subprocess)
python -m pytest tests/test_agent.py -v -s

# All tests
python -m pytest tests/ -v

MCPサーバー — 利用可能なツール

ツール

説明

read_file(filepath)

PDF、DOCX、TXTファイルを読み取り、テキスト+メタデータを返す

list_files(directory, extension?)

ディレクトリ内のファイルを一覧表示(オプションのフィルター付き)

write_file(filepath, content)

テキストをファイルに書き込む(必要に応じてディレクトリを作成)

search_in_file(filepath, keyword)

大文字小文字を区別しないキーワード検索(コンテキスト付き)

watch_directory(directory, reset?)

NEW — 新規/変更/削除されたファイルのスナップショット差分監視

batch_process(filepaths, operation, keyword?)

NEW — ThreadPoolExecutorによる並列マルチファイル処理

MCPサーバー — JSON-RPCメソッド

メソッド

説明

initialize

MCPハンドシェイク; サーバー機能を返す

initialized

クライアント確認通知(応答なし)

tools/list

リソース発見 — 6つのツールすべてをスキーマ付きで一覧表示

tools/call

指定されたツールを引数付きで実行

resources/list

ファイルシステムリソース(resumesディレクトリ)を一覧表示

resources/read

file:// URIでファイルリソースを読み取る

ping

生存確認


JSON-RPC 2.0 エラーコード

コード

名前

発生時

-32700

パースエラー

無効なJSON

-32600

無効なリクエスト

有効なJSON-RPC 2.0メッセージではない

-32601

メソッドが見つからない

不明なメソッドまたはツール名

-32602

無効なパラメータ

引数の型が欠落/誤り

-32000

ツールエラー

ツールの実行に失敗


ワークフロー図

6つのMermaid図については diagrams/workflow_diagram.md を参照してください:

  1. システムアーキテクチャ概要

  2. LangGraph状態機械

  3. JSON-RPC 2.0メッセージフロー(完全なシーケンス図)

  4. watch_directory ポーリングフロー

  5. batch_process 並列実行

  6. エラーハンドリングフロー


マイルストーン1への依存

このプロジェクトは LLM-Powered-File-System-Assistant(マイルストーン1)のリファクタリングです。元の4つのツール(read_file、list_files、write_file、search_in_file)はMCPサーバーに移植されています。llm_file_assistant.py 内の直接の import fs_tools はMCPプロトコル層に置き換えられています。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables file system operations (read, write, list, search, watch, batch process) via MCP over JSON-RPC 2.0, used by a resume matching agent.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with a sandboxed filesystem via MCP tools for reading, writing, searching, and monitoring files, including batch processing and resource discovery for resume management.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides file system tools for resume matching agents, enabling reading, writing, searching, listing, watching, and batch processing of files via the Model Context Protocol.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides MCP tools for filesystem operations on resume directories, including watch, batch extraction, and saving match results.
    1
    -