Real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL.
MCPpedia last refreshed this data
io.github.Adirdavi/docmcp is an MCP server that real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL. Its tool list has not been published yet over http, requires no API key, and scores 37/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"docmcp": {
"env": {
"OUT_DIR": "<somewhere>",
"DATABASE_URL": "postgres://…"
},
"args": [
"<repo>/node_modules/tsx/dist/cli.mjs",
"<repo>/src/index.ts",
"--stdio"
],
"command": "/usr/local/bin/node"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Live: https://docmcp.onrender.com — free key at POST /keys/free, 10 docs/month. Paid: $10/mo for 100, $30/mo for 500. Quotas live in PLANS in src/store.ts.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in data / writing
Manage Supabase projects — databases, auth, storage, and edge functions
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
MCP server for document format conversion using pandoc.
DataForSEO API modelcontextprotocol server
MCP Security Weekly
Get CVE alerts and security updates for io.github.Adirdavi/docmcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Live: https://docmcp.onrender.com — free key at POST /keys/free, 10 docs/month.
Paid: $10/mo for 100, $30/mo for 500. Quotas live in PLANS in src/store.ts.
A paid MCP server that turns structured data into real .docx and .xlsx files.
Agents are good at prose and bad at file formats — they emit Markdown and hope. This
gives them a tool that returns a Word or Excel file with actual headings, tables,
bold headers, frozen panes and RTL support.
Returns a short-lived download URL rather than a base64 blob: a 200KB docx inlined into a tool result costs the caller ~70k tokens.
Two modes, one codebase:
--stdio — local client (Claude Desktop / Code). No auth, no quota, no expiry;
files are written to OUT_DIR and the tool returns the path./mcp. API key required, quota metered, files served
as URLs that expire after 24h. This is the product.npm install
Already registered in Claude Desktop as docmcp (output → ~/Documents/docmcp).
To register elsewhere:
{
"mcpServers": {
"docmcp": {
"command": "/usr/local/bin/node",
"args": ["<repo>/node_modules/tsx/dist/cli.mjs", "<repo>/src/index.ts", "--stdio"],
"env": { "DATABASE_URL": "postgres://…", "OUT_DIR": "<somewhere>" }
}
}
}
Absolute paths matter — the client launches with a minimal PATH.
npm start # http://localhost:8787/mcp
curl -X POST localhost:8787/keys/free
{
"mcpServers": {
"docmcp": {
"type": "http",
"url": "https://your-host/mcp",
"headers": { "Authorization": "Bearer dk_..." }
}
}
}
| Tool | Does |
|---|---|
create_docx | headings, paragraphs, bullet/numbered lists, tables, page breaks, rtl for Hebrew/Arabic |
create_xlsx | multi-sheet, bold + frozen header, auto-filter, sized columns, numbers stay numbers |
usage | calls used / quota this month |
| Var | Default | Notes |
|---|---|---|
PORT | 8787 | |
BASE_URL | http://localhost:$PORT | Must be the public URL — it goes in download links |
DATABASE_URL | — | Required. Any Postgres (Koyeb, Neon, Supabase) |
OUT_DIR | out | Generated files, swept hourly, 24h TTL |
STRIPE_SECRET_KEY | — | Omit to run without billing |
STRIPE_WEBHOOK_SECRET | — | For /stripe/webhook |
STRIPE_PRICE_STARTER, STRIPE_PRICE_PRO | — | Price IDs behind /buy/:plan |
Plans and quotas live in PLANS in src/store.ts.
Any Docker host with a Postgres URL. There is no persistent disk requirement: generated files live on the container filesystem and expire in 24h anyway, so a restart only breaks links that were about to die. Everything that must survive — keys, quotas, the IP salt — is in Postgres.
Currently Render (web service, free tier) + Neon (Postgres, free, no expiry). Deliberately two providers: state lives somewhere that isn't tied to whoever is hosting the container this month. Render builds the Dockerfile straight from GitHub.
BASE_URL must be the public URL — it is baked into every download link handed to a
client, so getting it wrong produces links to a host that does not exist. You only
learn the URL after the first deploy, so set it then and redeploy.
Render's free tier sleeps after 15 minutes idle and takes 30–50s to wake. That is the cost of not having a card on file; fix it by upgrading once a customer pays.
/buy/starter → Stripe Checkout → webhook checkout.session.completed → key issued →
customer lands on /success and sees the key there. No email provider needed.
customer.subscription.deleted deactivates it. There are no user accounts: the key
is the account.
npm test
Covers both generators (including a ragged table row and a / in a sheet name — both
things an LLM will send eventually), number preservation through an xlsx round-trip,
and