test-files-mcp
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., "@test-files-mcp create a 5MB PNG image"
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.
Test Files MCP
Generate test files directly from your AI coding assistant.
Need a 20 MB JPEG? A 100,000-row CSV? A corrupted PDF? Ask your MCP client and Test Files MCP creates it locally.
One-click install
Client | What happens when you click |
Cursor | Opens Cursor and prompts you to add the MCP server |
Claude Desktop | Downloads |
Claude Desktop has no URL deeplink for MCP JSON config. The
.mcpbbundle is Anthropic's official one-click install format for local servers.
Open Settings → Developer → Edit Config and add:
{
"mcpServers": {
"test-files": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zulelee/test-files-mcp",
"test-files-mcp"
]
}
}
}Related MCP server: nano-banana-mcp
Why this exists
Testing file uploads, parsers, validators, and storage limits usually means hunting for sample files or writing one-off scripts. Test Files MCP lets you describe what you need in plain language and get a real file on disk with useful metadata back.
Features
Dummy files — exact byte sizes (1 byte to GB-scale, within limits)
Images — JPEG, PNG, WEBP, BMP with dimensions, patterns, and approximate target sizes
PDFs — multi-page, blank or with fixture text, approximate target sizes
CSV — streamed generation up to 1M rows
JSON — valid or intentionally malformed fixtures
ZIP archives — empty, flat, or nested
WAV audio — tones or silence at configurable duration
Corrupted files — truncate, bad headers, garbage bytes, wrong extensions
Edge-case filenames — spaces, unicode, long names, hidden files
File inspection — size, MIME type, SHA256, image/audio metadata
Example prompts
Tell your MCP client things like:
Create a 25 MB JPEG
Generate a CSV with 500,000 rows
Create a corrupted PDF
Give me a 30-second WAV
Create an empty ZIP
Generate a weird filename for upload testingInstallation
With uvx (recommended)
From Git (replace Zulelee with your GitHub username or org):
uvx --from git+https://github.com/Zulelee/test-files-mcp test-files-mcpAfter publishing to PyPI:
uvx test-files-mcpFrom source
git clone https://github.com/Zulelee/test-files-mcp
cd test-files-mcp
uv sync
uv run test-files-mcpCursor setup
This repository follows the Agent Plugins standard. Plugin components live at the repo root:
.plugin/plugin.json # Portable manifest
.cursor-plugin/plugin.json
.mcp.json # MCP server (stdio via uv)
skills/ # Agent skills
commands/ # Slash commands
agents/ # Subagents
rules/ # Project rules
hooks/hooks.json # Lifecycle hooks
.lsp.json # Python LSP configAdd to your Cursor MCP settings (.cursor/mcp.json or Cursor Settings → MCP):
{
"mcpServers": {
"test-files": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zulelee/test-files-mcp",
"test-files-mcp"
]
}
}
}For local development:
{
"mcpServers": {
"test-files": {
"command": "uv",
"args": ["run", "test-files-mcp"],
"cwd": "/path/to/test-files-mcp"
}
}
}Claude Desktop setup
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"test-files": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zulelee/test-files-mcp",
"test-files-mcp"
]
}
}
}Available MCP tools
Tool | Description |
| Generic file with exact byte size |
| JPEG, PNG, WEBP, BMP images |
| Multi-page PDF fixtures |
| CSV with synthetic rows (streamed) |
| Valid or malformed JSON |
| ZIP archives |
| WAV audio (tone or silence) |
| Corrupted copy of a file |
| Files with tricky filenames |
| Inspect file metadata |
Configuration
Set environment variables to customize behavior:
Variable | Default | Description |
|
| Default output directory |
|
| Maximum file size (MB) |
|
| Maximum CSV rows |
|
| Maximum PDF pages |
|
| Max image width/height |
|
| Max audio duration |
Generated files are written to the output directory and returned as absolute paths.
Safety limits
This MCP intentionally generates large files. Requests exceeding configured limits return a clear error — values are never silently clamped.
Example error:
Requested file size is 500 MB, but the configured maximum is 250 MB.
Set TEST_FILES_MAX_FILE_SIZE_MB to increase the limit.Development
git clone https://github.com/Zulelee/test-files-mcp
cd test-files-mcp
uv sync --group devRunning tests
uv run pytest
uv run ruff check src testsRebuild Claude Desktop bundle
mcpb pack . dist/test-files-mcp.mcpbRegenerate install badge URLs after changing MCP config:
uv run python scripts/generate-install-badges.pyMCP Inspector
uv run mcp dev src/test_files_mcp/server.pyContributing
Contributions welcome! Please open an issue or pull request on GitHub.
Suggested topics for the repository:
mcp, model-context-protocol, python, testing, developer-tools, test-data, fixtures, qa, cursor, claude, file-upload, open-source
License
MIT — see LICENSE.
Available Tools
10 toolscreate_archive_toolA
Generate a ZIP archive test fixture.
Examples: empty ZIP, ZIP with 100 files, nested directory structure.
Inputs: seed, empty, files, nested, +5 more. Returns: result
create_audio_toolB
Generate a WAV audio test fixture.
Examples: 30-second silent WAV, 5-second 440 Hz tone.
Inputs: silence, tone_hz, channels, filename, +4 more. Returns: result
create_corrupted_file_toolB
Create a corrupted copy of a file for testing error handling. Never modifies the original.
Examples: corrupted JPEG, PDF truncated at 70%, ZIP with random bytes, PNG with wrong extension.
Inputs: seed, filename, severity, file_type, +4 more. Returns: result
create_csv_toolB
Generate a CSV test fixture with synthetic data, streamed to disk.
Examples: 0 rows, 100,000 rows, 1,000,000 rows (within configured limits).
Inputs: rows, seed, columns, headers, +6 more. Returns: result
create_dummy_file_toolA
Create a dummy file of a requested size for testing file uploads, storage limits, validators, APIs, and other file-handling code.
Examples: 1 byte file, 500 KB, 20 MB, 1 GB (within configured limits). Content can be random bytes, zeros, or repeating text.
Inputs: seed, content, size_kb, size_mb, +4 more. Returns: result
create_edge_case_filename_toolB
Generate a file with an edge-case filename for upload/path testing.
Cases: spaces, unicode, very_long, multiple_dots, uppercase_extension, no_extension, hidden.
Inputs: case, extension, overwrite, size_bytes, +1 more. Returns: result
create_image_toolA
Generate a test image (JPEG, PNG, WEBP, BMP) with configurable dimensions, patterns, and approximate target file size.
Examples: 8000x8000 JPEG, approximately 20 MB JPEG, checkerboard PNG.
Inputs: seed, width, format, height, +8 more. Returns: result
create_json_toolB
Generate a JSON test fixture. Set malformed=true for intentionally invalid JSON.
Examples: valid JSON array, malformed JSON with trailing comma or missing bracket.
Inputs: seed, depth, items, pretty, +4 more. Returns: result
create_pdf_toolB
Generate a PDF test fixture with a specified number of pages.
Examples: 100 blank pages, 200-page PDF with sample text, ~30 MB PDF.
Inputs: blank, pages, filename, overwrite, +4 more. Returns: result
inspect_file_toolA
Inspect a generated test file and return metadata (size, MIME type, SHA256, etc.).
Inputs: path (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool maps to a distinct fixture category—generic dummy bytes, specific formats, corrupted files, edge-case filenames, and inspection—so an agent can select by intended purpose without ambiguity. Although corrupted-file and format-specific tools both generate files for error handling, the valid-vs-corrupted distinction is clear.
All creation tools follow a consistent create_<format>_tool pattern (e.g. create_pdf_tool, create_archive_tool), with inspect_file_tool as the one inspect_* verb. This makes the API predictable and easy to navigate.
Ten tools is well-scoped for a test-fixture generator: nine creators cover generic and format-specific cases plus an inspector. None seem redundant or excessive.
The set covers common fixture generation needs: arbitrary dummy files, specific formats, malformed/corrupted variants, difficult filenames, and metadata inspection. Missing cleanup/removal of generated fixtures and a few formats like video/docx are minor gaps, but core workflows are covered.
Maintenance
Related MCP Connectors
Generate images, videos and music with model discovery, cost estimates and asynchronous results.
Writes adversarial test suites for AI-built code. Your agent's test engineer.
Generate reproducible image, video, and audio assets with leading models and your own provider keys.
Create images and videos from prompts, with options for image mixing, reference images, and start/…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Large Language Models to safely browse and interact with local file systems through secure directory listing, file reading, and content search capabilities. Built with comprehensive security controls and high-performance handling of large directories and files.1MIT
- FlicenseNot gradedqualityDmaintenanceGenerates images using Google's Gemini model, with options to save to file or return as base64 data URL.-
- FlicenseNot gradedqualityCmaintenanceEnables file operations (PDF, Office, images, archives, media) through natural language, with tools for reading, writing, converting, and analyzing files locally.1-
- FlicenseNot gradedqualityDmaintenanceGenerates images from text prompts using OpenAI's API, saves them locally, and serves them via an integrated HTTP static file server.-