Filesystem MCP Server
MCP-basiertes Recruitment-Matching-System
Konvertiert die Dateisystem-Tools aus Meilenstein 1 in einen echten MCP-Server (Model Context Protocol) und refaktoriert den LangGraph-Matching-Agenten so, dass er diesen (plus einen zweiten MCP-Server) als Client konsumiert, anstatt lokale Python-Funktionen direkt aufzurufen.
Projektstruktur
mcp_recruitment_project/
├── mcp_servers/
│ ├── filesystem_mcp_server.py # Part A — main deliverable
│ └── rag_mcp_server.py # Part B.2 bonus — 2nd MCP server
├── matching_agent.py # Part B — refactored LangGraph agent
├── state.py # LangGraph agent state schema
├── data/
│ ├── resumes/ # cand_001.txt ... cand_005.txt
│ └── job_descriptions/ # sample_jd.txt
├── reports/ # generate_report() output lands here
├── docs/
│ └── workflow_diagram.md # state machine / sequence diagrams
├── tests/
│ └── test_scenarios.py # 7 automated test scenarios
└── requirements.txtRelated MCP server: File Server MCP
Teil A — filesystem_mcp_server.py
Basierend auf dem offiziellen
mcpPython SDK von Anthropic – ein echter JSON-RPC-2.0-Server über stdio, kein handgebautes Protokoll.Stellt die Operationen aus Meilenstein 1 als MCP-Tools bereit:
list_resumes,read_resume,read_job_description,save_report.Stellt Lebensläufe und Stellenbeschreibungen als MCP-Ressourcen bereit (
resources/list,resources/read) mitresume://<file>- undjd://<file>-URIs, sodass jeder MCP-Client den Pool durchsuchen kann, ohne die Tool-Namen zu kennen.Neue MCP-spezifische Fähigkeiten:
watch_directory(seconds, target)– pollt einen Ordner bis zu 120 Sekunden lang und meldet alle neu erschienenen Dateien, um frisch hochgeladene Lebensläufe zu erkennen.batch_process(candidate_ids, operation)– führtread/word_count/validateüber bis zu 50 Dateien in einem Round Trip aus, statt eines Aufrufs pro Datei, und bleibt robust (Fehler pro Datei werden in einererrors{}-Map gesammelt, statt den gesamten Batch fehlschlagen zu lassen).
Fehlerbehandlung verwendet eindeutige JSON-RPC-Fehlercodes (
ERR_NOT_FOUND,ERR_INVALID_PARAMS,ERR_FORBIDDEN,ERR_BATCH_TOO_LARGEsowie den eigenen-32603-Internal-Error-Fallback des SDKs) – siehedocs/workflow_diagram.md§5.Die
ServerConfig-Dataclass zentralisiert Verzeichnisse, erlaubte Erweiterungen, Batch-Limits und Watch-Timing; jeder Pfad ist über die UmgebungsvariablenFS_MCP_RESUME_DIR/FS_MCP_JD_DIR/FS_MCP_REPORT_DIRüberschreibbar, und jeder Dateizugriff wird mit_safe_join()gegen Path Traversal abgesichert.
Smoke-Test der Handler direkt (kein Client nötig):
python mcp_servers/filesystem_mcp_server.py --selftestTeil B — matching_agent.py
Alle direkten
os.listdir/open()-Aufrufe sind entfernt. Beim Start erstellt der Agent einenMultiServerMCPClient, der auf zwei MCP-Server zeigt, und entdeckt deren Tools zur Laufzeit – kein Tool wird hart importiert.Jeder LangGraph-Knoten ruft MCP-Tools auf, statt lokale Funktionen zu verwenden:
Knoten
Verwendetes MCP-Tool
parse_jdfilesystem.list_resumesextract_requirements(LLM oder heuristischer Fallback ohne API-Key)
search_resumesrag.search_resumesrank_candidatesfilesystem.batch_process(1 Aufruf, nicht N)generate_reportfilesystem.save_reportBonus Multi-MCP:
search_resumesund alles Dateisystembezogene stammen aus zwei unabhängigen stdio-Serverprozessen/-Sessions, was beweist, dass der Agent nicht an einen einzelnen MCP-Server gebunden ist.Wenn
ANTHROPIC_API_KEYnicht gesetzt ist, fälltextract_requirementsauf einen regexbasierten JD-Parser zurück, sodass die gesamte Pipeline ohne Netzwerkzugriff Ende-zu-Ende läuft (nützlich für Bewertung/CI).
Ausführen:
export ANTHROPIC_API_KEY=sk-... # optional; heuristic fallback works without it
python matching_agent.py --jd sample_jd.txtDiagramme
Siehe docs/workflow_diagram.md für:
Systemarchitektur (Agent + 2 MCP-Server)
Agent-Zustandsmaschine
JSON-RPC-2.0-Sequenzdiagramm für
batch_processFehlerpfad-Sequenzdiagramm
Fehlercode-Referenztabelle
Tests
tests/test_scenarios.py – 7 Szenarien, direkt oder über pytest ausführbar:
python tests/test_scenarios.py
# or
python -m pytest tests/test_scenarios.py -vtest_discovery– JSON-RPC-Handshake +tools/list+resources/listtest_resource_read–resources/readaufresume://cand_001.txttest_error_handling_not_found– Lesen eines fehlenden Lebenslaufs liefert ein korrektesisError=true-JSON-RPC-Ergebnistest_error_handling_invalid_batch– leerecandidate_idswerden abgelehnttest_batch_process_efficiency– alle Lebensläufe werden in 1 Aufruf verarbeitettest_watch_directory_detects_new_file– eine während des Watch erstellte Datei wird erkannt und gemeldettest_multi_mcp_via_agent– vollständiger LangGraph-Lauf, der Tools von beiden MCP-Servern bezieht und einen gespeicherten Bericht erzeugt
Alle 7 bestehen derzeit in dieser Umgebung.
Setup
pip install -r requirements.txtDemo-Video
Ich kann in dieser Umgebung keine echte Videodatei aufnehmen oder rendern. Der Lauf von tests/test_scenarios.py und der Lauf von matching_agent.py oben sind die exakten Sequenzen, die aufgenommen werden sollen – Bildschirmaufnahme von python tests/test_scenarios.py gefolgt von python matching_agent.py --jd sample_jd.txt mit z. B. OBS, QuickTime oder Loom für das 5–6-minütige Einreichungsvideo. Vorgeschlagene Erzählabschnitte: (1) filesystem_mcp_server.py --selftest zeigen, (2) den rohen stdio-JSON-RPC-Round-Trip zeigen, (3) docs/workflow_diagram.md durchgehen, (4) matching_agent.py ausführen und jeden MCP-Aufruf im Reasoning-Log kommentieren, (5) den generierten reports/match_report.md öffnen.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted Google Ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Discover, hire, and verify real-world physical capability through MCP.
Public MCP server for discovering open jobs. Search, filter, and get application links.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables file system operations (read, write, list, search, watch, batch process) via MCP over JSON-RPC 2.0, used by a resume matching agent.
- FlicenseNot gradedqualityDmaintenanceEnables accessing and managing files from configured folders with filtering and size limits, allowing listing, reading, and searching files via MCP tools and resources.
- FlicenseNot gradedqualityBmaintenanceProvides sandboxed file system tools (read, write, search, list, watch) over the Model Context Protocol, enabling resume matching and analysis workflows via an agent.
- FlicenseNot gradedqualityCmaintenanceEnables 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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sanket08kumbhare/MCP_Recruitment_Project'
If you have feedback or need assistance with the MCP directory API, please join our Discord server