MCP File Reader Server

by spar65

170 downloads
Not rated
GitHub

Description

# MCP File Reader Server This project provides a simple MCP (Model-Control-Protocol) server for reading files, runnable in two modes: 1. **Stdio Mode (`file-reader`):** Managed by Cursor via global config. 2. **SSE Mode (`file-reader-sse`):** Runs independently via manual start…

About

# MCP File Reader Server This project provides a simple MCP (Model-Control-Protocol) server for reading files, runnable in two modes: 1. **Stdio Mode (`file-reader`):** Managed by Cursor via global config. 2. **SSE Mode (`file-reader-sse`):** Runs independently via manual start. ## Setup Instructions ### 1…

Details

Author
spar65
Downloads
170
Categories
Other

- Two transport modes: Stdio (Cursor-managed) and SSE (manual Uvicorn)
- Reads files from a dedicated data directory per mode
- Includes an SSE client script for manual testing
- Logging output to stderr for troubleshooting
- MIT licensed

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP File Reader Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install Python 3.8+, clone the repo, create a virtual environment, and install dependencies (mcp, uvicorn[standard], starlette, httpx). For Stdio mode, configure the global Cursor MCP config file to point to the server script and toggle it on in Cursor Settings. For SSE mode, run ./start_sse.sh and let Cursor discover the server via the project’s .mcp.json file. Then issue prompts like read test.txt using the file-reader server (Stdio) or read sse_test.txt using the file-reader-sse server (SSE).

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp file reader server": {
            "file-reader": {
                "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": []
            }
        }
    }
}

McpServers

{
    "file-reader": {
        "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": []
    }
}
# MCP File Reader Server This project provides a simple MCP (Model-Control-Protocol) server for reading files, runnable in two modes: 1. **Stdio Mode (`file-reader`):** Managed by Cursor via global config. 2. **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 1. Clone or download this repository 2. Create a virtual environment: ``` python3 -m venv venv ``` 3. Activate the virtual environment: ``` source venv/bin/activate # On macOS/Linux venv\Scripts\activate # On Windows ``` 4. 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: 1. 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` 2. Ensure an entry exists for `file-reader`, pointing to the correct venv Python and the main `file_reader_server.py` script: ```json { "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 ... } } ``` 3. _(See `cursor_mcp_config.json` in 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_data` by default (in your home directory). - The **SSE** server (`file-reader-sse`) uses `./project_mcp_data_sse` by 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) 1. Complete the global configuration (Option 1 above). 2. Restart Cursor. 3. Go to Cursor Settings -> MCP. 4. Find `file-reader` and toggle it ON. #### Method B: SSE Mode (`file-reader-sse` Manually) Use the provided start script. In your terminal: ```bash ./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`: ``` read sse_test.txt using the file-reader-sse server ``` _(Note: Use the specific server name `file-reader-sse` and 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. 1. **Ensure the SSE server is running (use `./start_sse.sh`).** 2. Run the client wrapper script in your terminal: ```bash # 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 `httpx` are installed and uses the correct Python.)_ 3. The client will connect to `http://127.0.0.1:8080/sse`, initialize the MCP session, call the `read_file` tool by name, and print the response or any errors. ## Troubleshooting - **Stdio:** Check Cursor Settings -> MCP for status (green dot), verify global config paths, check `stderr` via 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 reach `http://127.0.0.1:8080/sse`. - Restart Cursor after config changes. ## Advanced Usage - The `stdio` server uses `file_reader_server.py`. - The `sse` server uses `file_reader_server_sse.py`. - Logging is to `stderr` for 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 via `start_sse.sh`. - A wrapper script for the SSE client is provided: `run_sse_client.sh`. - The SSE client script uses `mcp.client.sse.sse_client` and `mcp.ClientSession` to 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` - **`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 `/sse` path) - Management: Manual start/stop via `start_sse.sh` (runs `uvicorn ...: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)
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.