Skip to main content
Glama
Sanket08kumbhare

Filesystem MCP Server

Sistema de emparejamiento de reclutamiento basado en MCP

Convierte las herramientas de sistema de archivos del Hito 1 en un servidor MCP (Model Context Protocol) real y refactoriza el agente de emparejamiento LangGraph para consumirlo (más un segundo servidor MCP) como cliente, en lugar de llamar directamente a funciones locales de Python.

Estructura del proyecto

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.txt

Related MCP server: File Server MCP

Parte A — filesystem_mcp_server.py

  • Construido sobre el SDK oficial de Python mcp de Anthropic: un servidor JSON-RPC 2.0 real sobre stdio, no un protocolo hecho a mano.

  • Expone las operaciones del Hito 1 como herramientas MCP: list_resumes, read_resume, read_job_description, save_report.

  • Expone currículums/descripciones de trabajo como recursos MCP (resources/list, resources/read) con URIs resume://<file> y jd://<file>, para que cualquier cliente MCP pueda explorar el conjunto sin conocer los nombres de las herramientas.

  • Nuevas capacidades específicas de MCP:

    • watch_directory(seconds, target) — sondea una carpeta durante hasta 120 s e informa de cualquier archivo que aparezca, para detectar currículums recién subidos.

    • batch_process(candidate_ids, operation) — ejecuta read / word_count / validate en hasta 50 archivos en una sola ida y vuelta en lugar de una llamada por archivo, y permanece resiliente (los errores por archivo se recogen en un mapa errors{} en lugar de fallar todo el lote).

  • El manejo de errores utiliza códigos de error JSON-RPC distintos (ERR_NOT_FOUND, ERR_INVALID_PARAMS, ERR_FORBIDDEN, ERR_BATCH_TOO_LARGE, además del respaldo de error interno -32603 del propio SDK); consulte docs/workflow_diagram.md §5.

  • La dataclass ServerConfig centraliza directorios, extensiones permitidas, límites de lote y temporización de vigilancia; cada ruta se puede sobrescribir mediante las variables de entorno FS_MCP_RESUME_DIR / FS_MCP_JD_DIR / FS_MCP_REPORT_DIR, y cada acceso a archivos está aislado con _safe_join() contra el recorrido de rutas.

Pruebe los manejadores directamente (sin necesidad de cliente):

python mcp_servers/filesystem_mcp_server.py --selftest

Parte B — matching_agent.py

  • Todas las llamadas directas a os.listdir/open() han desaparecido. Al iniciarse, el agente crea un MultiServerMCPClient apuntando a dos servidores MCP y descubre sus herramientas en tiempo de ejecución; ninguna herramienta se importa de forma fija.

  • Cada nodo de LangGraph llama a herramientas MCP en lugar de funciones locales:

Nodo

Herramienta MCP utilizada

parse_jd

filesystem.list_resumes

extract_requirements

(LLM, o respaldo heurístico si no hay clave API)

search_resumes

rag.search_resumes

rank_candidates

filesystem.batch_process (1 llamada, no N)

generate_report

filesystem.save_report

  • Bonus multi-MCP: search_resumes y todo lo relacionado con el sistema de archivos provienen de dos procesos/sesiones de servidor stdio independientes, lo que demuestra que el agente no está atado a un único servidor MCP.

  • Si ANTHROPIC_API_KEY no está configurada, extract_requirements recurre a un analizador de descripciones de trabajo basado en expresiones regulares para que todo el flujo siga ejecutándose de extremo a extremo sin acceso a la red (útil para calificación/CI).

Ejecútelo:

export ANTHROPIC_API_KEY=sk-...   # optional; heuristic fallback works without it
python matching_agent.py --jd sample_jd.txt

Diagramas

Consulte docs/workflow_diagram.md para:

  1. Arquitectura del sistema (agente + 2 servidores MCP)

  2. Máquina de estados del agente

  3. Diagrama de secuencia JSON-RPC 2.0 para batch_process

  4. Diagrama de secuencia de la ruta de errores

  5. Tabla de referencia de códigos de error

Pruebas

tests/test_scenarios.py — 7 escenarios, ejecutar directamente o mediante pytest:

python tests/test_scenarios.py
# or
python -m pytest tests/test_scenarios.py -v
  1. test_discovery — protocolo de enlace JSON-RPC + tools/list + resources/list

  2. test_resource_readresources/read en resume://cand_001.txt

  3. test_error_handling_not_found — leer un currículum inexistente devuelve un resultado JSON-RPC adecuado con isError=true

  4. test_error_handling_invalid_batch — se rechaza candidate_ids vacío

  5. test_batch_process_efficiency — todos los currículums procesados en 1 llamada

  6. test_watch_directory_detects_new_file — se detecta e informa un archivo creado durante la vigilancia

  7. test_multi_mcp_via_agent — ejecución completa de LangGraph que extrae herramientas de ambos servidores MCP y produce un informe guardado

Los 7 pasan actualmente en este entorno.

Configuración

pip install -r requirements.txt

Video de demostración

No puedo grabar ni renderizar un archivo de video real en este entorno. La ejecución de tests/test_scenarios.py y la ejecución de matching_agent.py anteriores son las secuencias exactas a capturar: grabe la pantalla de python tests/test_scenarios.py seguido de python matching_agent.py --jd sample_jd.txt con, por ejemplo, OBS, QuickTime o Loom para el video de entrega de 5 a 6 minutos. Sugerencias para la narración: (1) mostrar filesystem_mcp_server.py --selftest, (2) mostrar el intercambio JSON-RPC sin procesar por stdio, (3) recorrer docs/workflow_diagram.md, (4) ejecutar matching_agent.py y narrar cada llamada MCP en el registro de razonamiento, (5) abrir el informe generado reports/match_report.md.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

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 accessing and managing files from configured folders with filtering and size limits, allowing listing, reading, and searching files via MCP tools and resources.
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides sandboxed file system tools (read, write, search, list, watch) over the Model Context Protocol, enabling resume matching and analysis workflows via an agent.
  • F
    license
    Not graded
    quality
    C
    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.

Latest Blog Posts

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