About MCP File Reader Server
MCP File Reader Server provides an MCP tool for reading files from configured data directories. It is for Cursor users and can run either as a Cursor-managed stdio server or as a manually started SSE server.
Key features
- 01Read files from a configured directory
- 02Cursor-managed stdio mode
- 03Manually started SSE mode
- 04SSE client test scripts
Use cases
- 01Read files from ~/mcp_data in Cursor
- 02Read project files through the SSE server
- 03Test an SSE connection and file read
MCP support
Exposes a read_file tool to MCP clients. It supports stdio managed by Cursor and an SSE endpoint served by Starlette and Uvicorn.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP File Reader Server
This project provides a simple MCP (Model-Control-Protocol) server for reading files, runnable in two modes:
- Stdio Mode (
file-reader): Managed by Cursor via global config. - SSE Mode (
file-reader-sse): Runs independently via manual start.
Setup Instructions
1. Prerequisites
- Python 3.8 or higher
- Cursor app installed
- pip package manager
2. Installation
- Clone or download this repository
- Create a virtual environment:
python3 -m venv venv - Activate the virtual environment:
source venv/bin/activate # On macOS/Linux venv\Scripts\activate # On Windows - Install the required packages:
pip install mcp # Uvicorn & Starlette are needed for running the SSE server # httpx is needed for the SSE client pip install "uvicorn[standard]" starlette httpx
3. Configuration
Option 1: Configure Cursor for Stdio Mode (file-reader)
To let Cursor manage the stdio server:
- Edit your global MCP config file:
- macOS:
~/Library/Application Support/Cursor/cursor_mcp_config.json - Windows:
%APPDATA%\Cursor\cursor_mcp_config.json - Linux:
~/.config/Cursor/cursor_mcp_config.json
- macOS:
- Ensure an entry exists for
file-reader, pointing to the correct venv Python and the mainfile_reader_server.pyscript:{ "mcpServers": { "file-reader": { // Server name for stdio mode "command": "/FULL/PATH/TO/YOUR/PROJECT/venv/bin/python", "args": [ "/FULL/PATH/TO/YOUR/PROJECT/mcp-file-reader-example/file_reader_server.py" ], "enabled": true, "env": {} } // ... other servers ... } } - (See
cursor_mcp_config.jsonin this repo for a template)
Option 2: Configure Project for SSE Discovery (file-reader-sse)
The project-local .mcp.json file is already configured to describe the SSE server (file-reader-sse) running at http://127.0.0.1:8080. Note that the client will likely need to connect to the /sse subpath (http://127.0.0.1:8080/sse).
Data Directory
- The stdio server (
file-reader) uses~/mcp_databy default (in your home directory). - The SSE server (
file-reader-sse) uses./project_mcp_data_sseby default (within this project directory).
Make sure these directories exist before running the respective servers. The ./start_sse.sh script will create ./project_mcp_data_sse if it's missing.
4. Running the Server
Choose one method:
Method A: Stdio Mode (file-reader via Cursor)
- Complete the global configuration (Option 1 above).
- Restart Cursor.
- Go to Cursor Settings -> MCP.
- Find
file-readerand toggle it ON.
Method B: SSE Mode (file-reader-sse Manually)
Use the provided start script. In your terminal:
./start_sse.sh
This script ensures dependencies (including uvicorn, starlette) are installed and runs the Uvicorn ASGI server, loading the Starlette app defined in file_reader_server_sse.py. The Starlette app mounts the MCP server's SSE handler (mcp.sse_app()) at the root path.
The server will start listening on http://127.0.0.1:8080.
5. Using the Server in Cursor
- If using Stdio Mode (Method A):
Reads from
~/mcp_data:read test.txt using the file-reader server - If using SSE Mode (Method B):
Assuming Cursor discovers the server via
.mcp.json. Reads from./project_mcp_data_sse:
(Note: Use the specific server nameread sse_test.txt using the file-reader-sse serverfile-reader-sseand a filename expected in./project_mcp_data_sse)
6. Using the SSE Client Script (Manual Testing)
This project includes a Python client script (file_reader_sse_client.py) and a wrapper shell script (run_sse_client.sh) to test the SSE server independently using the mcp library's SSE client capabilities.
-
Ensure the SSE server is running (use
./start_sse.sh). -
Run the client wrapper script in your terminal:
# Connects, initializes, lists tools, and calls read_file for sse_test.txt ./run_sse_client.sh # Tries to read a different file (e.g., another_sse.txt) ./run_sse_client.sh another_sse.txt(The wrapper script ensures dependencies like
httpxare installed and uses the correct Python.) -
The client will connect to
http://127.0.0.1:8080/sse, initialize the MCP session, call theread_filetool by name, and print the response or any errors.
Troubleshooting
- Stdio: Check Cursor Settings -> MCP for status (green dot), verify global config paths, check
stderrvia Cursor logs if startup fails. - SSE: Ensure the server is running manually (use
./start_sse.sh), check its terminal output (stderr) for errors, verify the client can reachhttp://127.0.0.1:8080/sse. - Restart Cursor after config changes.
Advanced Usage
- The
stdioserver usesfile_reader_server.py. - The
sseserver usesfile_reader_server_sse.py. - Logging is to
stderrfor both. - A basic client for the SSE server is provided in
file_reader_sse_client.py. - A startup script for the SSE server is provided:
start_sse.sh. - The SSE server uses Starlette to mount the MCP SSE application (
mcp.sse_app()) which is then run by Uvicorn viastart_sse.sh. - A wrapper script for the SSE client is provided:
run_sse_client.sh. - The SSE client script uses
mcp.client.sse.sse_clientandmcp.ClientSessionto interact with the server.
License
MIT
Server Details
file-reader(Stdio):- Script:
file_reader_server.py - Transport: Stdio
- Management: Via Cursor global config (
~/.cursor/mcp.json) & Settings toggle. - Rules:
00-MCP-Server-Rules.txt,00-MCP-Client-Rules.txt - Data Dir:
~/mcp_data
- Script:
file-reader-sse(SSE):- Script:
file_reader_server_sse.py(defines FastMCP instance and Starlette app) - Transport: SSE via Starlette/Uvicorn (listens on
http://127.0.0.1:8080, client connects to/ssepath) - Management: Manual start/stop via
start_sse.sh(runsuvicorn ...:app). - Discovery: Via project
.mcp.json. - Rules:
00-MCP-SSE-Server-Rule.txt,00-MCP-SSE-Client-Rule.txt - Data Dir:
./project_mcp_data_sse(relative to project root)
- Script:
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.