MCP Hub
Back to servers

Blank Files MCP

MCP server for listing and retrieving minimal valid blank files from blankfiles.com.

Registry
Stars
1
Updated
Feb 13, 2026

Quick Install

npx -y @filearchitect/blankfiles-mcp

Blank Files Website

Laravel application that powers blankfiles.com. Browse and download minimal valid blank files by type and category. File data and assets are served from the filearchitect/blank-files repository via a configurable CDN.

Requirements

  • PHP 8.2+
  • Composer
  • Node.js 18+ (for Vite frontend build)

Installation

git clone https://github.com/filearchitect/blankfiles-website.git
cd blankfiles-website
composer install
cp .env.example .env
php artisan key:generate

Set CDN_URL in .env (see Configuration). Then build the frontend and run the app:

npm install && npm run build
php artisan serve

Or use Laravel Herd with a .test domain.

Configuration

VariableDescription
CDN_URLRequired. Base URL where the file catalog and assets are served. The app expects {CDN_URL}/files/files.json for the catalog and {CDN_URL}/files/{filename} for each file. Examples: https://cdn.statically.io/gh/filearchitect/blank-files/main, https://raw.githubusercontent.com/filearchitect/blank-files/main (note: raw GitHub has rate limits). Default in config/app.php is Statically CDN.
CACHE_ENABLEDOptional. When true, the file list from the CDN is cached for 1 hour. See config/cache.php and app/Services/FileService.php.
API_KEYSOptional. Comma-separated API keys for higher-rate API clients (used by X-API-Key or Authorization: Bearer ...).
API_PUBLIC_RATE_LIMITOptional. Public API requests/minute limit (default 30).
API_KEY_RATE_LIMITOptional. API-key requests/minute limit (default 300).
API_USAGE_LOG_CHANNELOptional. Logging channel for API usage analytics (default api_usage).

Project structure

PathPurpose
app/Http/Controllers/FileController.phpWeb: homepage, file detail page, download proxy.
app/Http/Controllers/Api/FileController.phpAPI: list all files, list files by type.
app/Services/FileService.phpFetches and formats file list from CDN (files/files.json).
routes/web.phpWeb routes (home, files show, download).
routes/api.phpAPI v1 routes.
resources/views/files/Blade views for file listing and file detail.

Deployment

On push to main, GitHub Actions:

  1. Builds the frontend (Vite) with npm ci and npm run build.
  2. SCPs public/build/ to the Forge server.
  3. Triggers a Laravel Forge deployment.
  4. Runs php artisan optimize:clear on the server.

Required repository secrets:

  • FORGE_SSH_HOST — SSH host for the server.
  • FORGE_SSH_USER — SSH user (e.g. forge).
  • SSH_PRIVATE_KEY — Private key for SCP/SSH.
  • FORGE_SERVER_ID — Forge server ID.
  • FORGE_SITE_ID — Forge site ID.
  • FORGE_API_KEY — Forge deploy token.

See .github/workflows/deploy.yml.


For developers and bots

Base URL

Production: https://blankfiles.com. HTML and JSON are available; use Accept: application/json where applicable.

Web routes

MethodPathDescription
GET/Homepage: file list by category. Responds with JSON when Accept: application/json. Throttle: 30/min.
GET/files/{category}/{type}SEO-friendly file detail page (e.g. /files/document-spreadsheet/xlsx). Constraints: category, type = [A-Za-z0-9\-]+.
GET/files/download/{category}/{type}Download proxy: streams the file with Content-Disposition: attachment (filename blank.{type} or blank.{type}.zip). Throttle: 60/min.

API routes (prefix api/v1)

MethodPathResponse
GET/api/v1/files{ "files": [ ... ], "meta": { "version", "generated_at", "count" } }.
GET/api/v1/files/{type}Same schema, filtered by extension.
GET/api/v1/files/{category}/{type}Same schema with exactly one matching entry when found; 404 when missing.
GET/api/v1/statusAPI health + aggregate catalog metrics (file_count, type_count, category_count) and upstream source info.

Machine-friendly notes

  • The canonical file catalog schema is defined in the blank-files repo: files/files.json (key files, array of { type, url, category, package? }).
  • Download URLs: use the API url field for direct CDN access, or GET /files/download/{category}/{type} for a same-origin download with a predictable filename.
  • Conditional requests are supported on API responses and sitemap (ETag, Last-Modified).
  • Rate limits: public IP-based limits and optional API-key limits (X-API-Key).
  • API usage analytics are logged to storage/logs/api-usage-*.log (configurable channel).
  • Compatibility policy: API policy.

Client snippets

curl -sS "https://blankfiles.com/api/v1/files/document-spreadsheet/xlsx" \
  -H "Accept: application/json" \
  -H "X-API-Key: $BLANKFILES_API_KEY"
const res = await fetch("https://blankfiles.com/api/v1/files", {
  headers: { "Accept": "application/json", "If-None-Match": etag }
});
if (res.status === 304) {
  // unchanged
}
import requests
r = requests.get("https://blankfiles.com/api/v1/status", timeout=20)
r.raise_for_status()
print(r.json())

Compatibility policy

  • URL versioning is stable under /api/v1/*.
  • Breaking changes require a new major API path version.
  • Deprecated endpoints are kept for at least 90 days before removal.
  • New fields may be added; clients should ignore unknown fields.

Related

MCP server (for agent marketplaces/registries)

This repository now includes a minimal MCP server that exposes Blank Files as tool calls.

  • Script: scripts/mcp/blankfiles-mcp.mjs
  • Run: npm run mcp:server
  • Optional env: BLANKFILES_BASE_URL (default: https://blankfiles.com)

Available MCP tools:

  • list_blank_files — list files, optional filters (category, type, limit)
  • files_by_type — list entries by extension
  • file_by_category_type — deterministic single lookup by category + extension

Example local MCP client config entry:

{
  "mcpServers": {
    "blankfiles": {
      "command": "node",
      "args": ["/absolute/path/to/blankfiles-website/scripts/mcp/blankfiles-mcp.mjs"],
      "env": {
        "BLANKFILES_BASE_URL": "https://blankfiles.com"
      }
    }
  }
}

Registry submission helpers:

  • Template metadata: scripts/mcp/registry/server.json.template
  • Publish checklist: scripts/mcp/registry/PUBLISHING.md

Published package workspace:

  • packages/blankfiles-mcp (publish as @filearchitect/blankfiles-mcp)

License

This project is licensed under the MIT License.

Reviews

No reviews yet

Sign in to write a review