filesystem_mcp_server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@filesystem_mcp_serverlist all files in the resumes folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Resume Matching — Milestone 2
Converts the Milestone 1 filesystem tools into a proper MCP (Model Context Protocol) server, and refactors the LangGraph matching agent to talk to that server as an MCP client instead of calling the filesystem directly.
Files
File | Part | What it does |
| A | JSON-RPC 2.0 MCP server. Exposes |
| B | LangGraph agent ( |
| — | Runnable scenarios: tool discovery, |
| — | Mermaid sequence + state diagrams of the agent ↔ MCP interaction. |
| — | Dependencies and required API keys. |
Related MCP server: Filesystem MCP Server
API keys — where they come from
Key | Required? | Used for | Get it from |
| Yes | The LLM that reasons over resumes and ranks them ( | |
| No (bonus only) | Part B bonus — connects a second MCP server (Tavily web search) so the agent can look up company/role info while it works |
Neither key is ever hardcoded in the source. Both are read from environment
variables via python-dotenv, loaded from a local .env file that you
create yourself and should not commit to git.
If you'd rather use a different LLM provider, swap
ChatOpenAI(...)inmatching_agent.pyfor another LangChain chat model (e.g.ChatAnthropic) and set the matching key instead — the MCP plumbing doesn't change.
Setup in VS Code
Open the folder
File → Open Folder…→ select this project directory.Create and select a virtual environment (Terminal in VS Code,
Ctrl+`):python -m venv venv # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activateIn VS Code, run Python: Select Interpreter (Ctrl+Shift+P) and pick
./venv.Install dependencies
pip install -r requirements.txtAdd your keys
cp .env.example .envOpen
.envand paste in your realOPENAI_API_KEY(and optionallyTAVILY_API_KEY).Add sample resumes
mkdir -p resumes # drop a few .pdf or .txt resumes into resumes/
Running it
You do not run filesystem_mcp_server.py by itself in normal use —
matching_agent.py launches it automatically as a subprocess and talks to
it over stdio via JSON-RPC 2.0.
# Full agent run (ranks resumes/ against a hardcoded job description)
python matching_agent.py
# All test scenarios (tool discovery, batch_process, watch_directory,
# error handling, end-to-end agent run)
python test_scenarios.pyTo manually test the server in isolation, launch it with the MCP
inspector (installed via the mcp[cli] extra):
mcp dev filesystem_mcp_server.pyThis opens a browser UI where you can call each tool and see the raw JSON-RPC 2.0 requests/responses — useful for the demo video.
Why this counts as JSON-RPC 2.0 / resource discovery
The
mcpSDK'sFastMCPclass implements the full MCP spec, which is itself built on JSON-RPC 2.0 — everytools/list,tools/call, andresources/listexchange over stdio is a JSON-RPC 2.0 request/response.Errors raised inside any
@mcp.tool()function (e.g.FileNotFoundErrorfor a bad path) are automatically converted into JSON-RPC 2.0 error responses by the SDK, with the message preserved — that's the "proper error handling and status codes" requirement.@mcp.resource(...)decorators (resumes://list,config://server) are what a client callsresources/list/resources/readagainst — that's the resource discovery endpoint requirement.
Multi-MCP bonus (Part B)
If TAVILY_API_KEY is set in .env, matching_agent.py automatically
adds a second entry to its MCP config (web_search, launched via
npx -y tavily-mcp), and the LangGraph agent gets tools from both
servers in the same run — demonstrating multi-MCP integration without any
code changes on your end.
Demo video checklist (5–6 min)
Show
filesystem_mcp_server.pyrunning viamcp dev— callbatch_processandwatch_directorylive, point at the JSON-RPC traffic in the inspector.Show
matching_agent.pyconnecting as a client (log line:tools/list).Run
python test_scenarios.pyend to end.Walk through
workflow_diagram.md.(Bonus) Add
TAVILY_API_KEYand show the second MCP server joining.
This server cannot be deployed
Maintenance
Related MCP Connectors
Browse and manage files in your Moxt AI workspace from any MCP client.
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Document processing over MCP: merge, split and compress PDFs, run OCR, extract document text.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
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.-
- AlicenseNot 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.Academic Free v1.1
- FlicenseNot gradedqualityCmaintenanceProvides MCP tools for reading, listing, writing, searching, watching, and batch-processing files, enabling automated file management and resume matching workflows.-
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to list, read, and batch-process resume and job description files, watch directories for new uploads, and save reports, with sandboxed access to recruitment data.-