file-writer-mcp
by thekogit
README.md
# File Writer MCP Server
A Node.js implementation of the Model Context Protocol (MCP) designed for seamless file operations within LM Studio and other MCP-compatible environments. This server provides a robust interface for large language models to create, append, and manage files in multiple formats including Plain Text, Markdown, CSV, and Microsoft Excel (XLSX).
## Features
- **Multi-Format Support**: Handles data transformation for .txt, .md, .csv, and .xlsx files.
- **Structured Data Processing**: Accepts table data as JSON objects and converts them into the requested format automatically.
- **Flexible Write Modes**:
- **Append (Default)**: Adds new data to the end of existing files.
- **Overwrite**: Replaces existing files with new content.
- **Numbered Backup**: Preserves existing data by creating incremented versions (e.g., file.1.csv).
- **Security Focused**: Restricts all file operations to a user-specified root directory to prevent unauthorized path traversal.
- **Excel Integration**: Utilizes ExcelJS for high-fidelity generation of binary spreadsheet files.
## Installation
### Prerequisites
- Node.js (v18 or higher)
- npm
### Setup
1. Clone the repository or copy the source files to your local machine.
2. Install the required dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Configuration for LM Studio
To use this server in LM Studio, add it to your MCP settings with the following configuration:
```json
{
"mcpServers": {
"file-writer": {
"command": "node",
"args": [
"C:/Users/szpon/file_writer_mcp/dist/index.js",
"--root",
"C:/your/default/directory"
]
}
}
}
```
### Arguments
- `--root <path>`: (Required) The absolute path to the default directory for relative file operations.
- `--overwrite`: (Optional/Legacy) Provided for compatibility with older configs; ignored in favor of tool selection.
- `--backup`: (Optional/Legacy) Provided for compatibility with older configs; ignored in favor of tool selection.
## Tool Usage
The server provides three distinct tools to give you clear control over file handling directly from the LM Studio sidebar:
1. **`write_file`**: Use this for standard operations. It appends data to existing files or creates them if they do not exist.
2. **`write_file_overwrite`**: Use this to completely replace an existing file with new data.
3. **`write_file_backup`**: Use this to save data while preserving the original. If the file exists, it creates a numbered backup (e.g., `data.1.csv`).
### Tool Arguments
- `path` (string): The filename or **full absolute path**. If a relative path is provided, it resolves against the `--root` directory. If an absolute path is provided, the server writes directly to that location.
- `format` (string): The desired file extension (`txt`, `md`, `csv`, or `xlsx`).
- `data` (object):
- `headers` (string[]): Column names for table formats.
- `rows` (any[][]): The dataset to be written.
- `content` (string, optional): Plain text content for .txt files.
## Development
### Running Tests
The project uses Vitest for unit testing. To execute the test suite:
```bash
npm test
```
### Building
To compile the TypeScript source into the distribution directory:
```bash
npm run build
```
## License
This project is provided as-is for integration with LM Studio and other MCP clients.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues