Home · Guides

One install, every server: the office-suite bundle

Twenty servers in this collection each do one job: time tracking, invoicing, quotes, expenses, spreadsheets, prices, currency, a Word proposal, contract clauses, a resume, PDF merges, an .ics calendar, a kanban board, image resize, bank CSV reconciliation, barcodes and SEPA payment QR codes, safe zip archives, and credit notes and purchase orders against those same invoices. Adding all twenty to a client one at a time is twenty config entries, twenty absolute paths, twenty things to remember are running. office-suite is the same twenty servers behind one config entry: it starts each one as its own child process over stdio, forwards every tool, resource and prompt call to whichever child owns the name, and merges their license state into one pair of tools, license_status and license_activate. Nothing is reimplemented. Each child keeps its own local JSON storage, exactly as it does standalone.

Install it

One command for Claude Code:

claude mcp add office-suite -- npx -y @theluckystrike/mcp-office-suite

Cursor, VS Code, Windsurf and Cline read the same shape of config. Add this block to the client's own MCP config file and restart it:

{
  "mcpServers": {
    "office-suite": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-office-suite"]
    }
  }
}

Claude Desktop takes the same block in claude_desktop_config.json, or skips JSON entirely: office-suite.mcpb is a one-click bundle attached to the latest release, and opening it shows an installation dialog. There is no account, no API key and no login step: every child runs locally over stdio and writes to its own folder under ~/.local/share/mcp-servers/<name>/.

198 tools in one namespace, and the four names that collided

Read live off a built bundle on 2026-09-05: the twenty children's own tools/list calls sum to more names than a client ever sees, because each child also registers its own license_status and license_activate pair. The bundle merges those twenty pairs down to one, and what is left after that merge is 198 tools on the bundle's own tools/list. Out of those 198 names, exactly four needed disambiguating: invoice and docx both register a tool called business_set, and expense-tracker and bank-statement both register one called category_rules. The bundle exposes all four, prefixed with the server they came from: invoice_business_set, docx_business_set, expense-tracker_category_rules and bank-statement_category_rules. It rewrites each child's own reply so a message that said "run business_set" or "run category_rules" says the name you can actually call. Every other tool keeps its bare name unchanged. Twenty servers, and the bundle had to rename exactly two collisions, four tool names in total.

Six sentences that each need two or more children, measured

An audit ran the real Claude CLI against the built bundle with all 186 tools on an explicit allowlist, the CLI's own file and web tools denied, an empty working directory, and one running conversation. Six prompts, each written the way a person phrases a request, each needing two or more of the children in a single sentence. This was measured on 2026-09-04 against the nineteen-server build with 186 tools, before billing-docs joined the bundle; the sentences, scores and defects below are that measurement, unchanged. Quoted verbatim, with what happened:

  1. "Log 3 hours today on Nova design and invoice them at EUR 90": time-tracker plus invoice. The model checked for a client named Nova, found none, and asked before writing. Told to go ahead, it created the client, logged the entry, generated the invoice and marked the hours billed, unprompted: INV-2026-0001, EUR 270.00 plus 23% VAT is EUR 332.10, due in 14 days from the shared business profile. Scored 2 of 3 for the unnecessary question.
  2. "Quote Acme 2 days consulting at PLN 1200, then make the payment QR for it": quotes plus barcode. The quote came out right, PLN 2,952.00 with VAT. Then it stopped and explained, correctly, that the SEPA payment QR format is euro-only and a Polish-zloty invoice cannot carry one, offering an FX conversion or a plain data code instead of guessing. Scored 2 of 3: right answer, but a question rather than either alternative done.
  3. "Import this bank CSV http://127.0.0.1:8794/bank.csv and tell me which subscriptions are not in my expense log": bank-statement plus expense-tracker. The import tool treated the URL as a relative filesystem path and failed with a path that never existed on disk. Given a local path instead, it found the two subscriptions with no matching expense row, Notion EUR 10.00 and Slack EUR 8.75, EUR 18.75 untracked, exactly right. Scored 2 of 3 for the wasted turn. This URL-as-path defect is fixed; see below.
  4. "Find a 45-minute slot with Ann in New York this week and export it as .ics" : timezone across contacts, slot-finding and calendar export. The instant produced was correct to the second, 09:30 to 10:15 America/New_York, translated from Warsaw with no timezone question asked. Scored 2 of 3 because the run day was a Saturday, the slot landed on the following Monday, and nothing in the answer said the week asked for had run out. Fixed; see below.
  5. "Resize http://127.0.0.1:8794/logo.png to 512 px and put it on a PAID stamp on invoice INV-2026-0001's PDF": image, invoice and pdf, three children in one sentence. All three tools ran correctly: a 512x512 PNG, a rendered invoice PDF, a PAID stamp at 45 degrees on a second copy. It also declined to pretend the logo was composited onto the stamp, since no tool does that, and said so rather than fabricating it.
  6. "Zip this month's invoices and quotes": zip, invoice and quotes. One tool call, zip_bundle_month, and it named the reason the quote PDF was missing from the archive: rendering a quote to PDF is a Pro feature and none had been rendered. Scored 3 of 3, the cleanest prompt of the six.

What the reach numbers actually say

Across the six prompts, 20 tool calls went to the bundle, and every single one landed in the correct child and the correct tool inside it: zero cross-child confusion, zero wrong-server picks. The "first tool called with no hint" reach was 5 of 6, 83%; the stricter "was the very first call the working tool" reading was 3 of 6, 50%, but all three misses were the same habit, reading an empty list of clients or contacts before writing to it, not a wrong pick. This was measured on 2026-09-04 against the nineteen-server build with 186 tools, 1.7x the 108 tools measured when this bundle held five children; tool selection did not get worse: 20 of 20 correct against 50 of 51 at the smaller count. The total score was 13 of 18 across six prompts, 226.5 seconds of wall clock. The bundle has since grown to twenty servers and 198 tools; that growth has not been re-measured against this six-prompt audit.

Three defects came out of the same round and are already fixed in the shipped server: a URL handed to a tool that expects a local file path used to be silently resolved against the server's own working directory and fail with a path that never existed; find_meeting_slots now always states the date range it searched and flags it by name when "this week" rolls into the following Monday; and an empty client or entry list now says which tool creates one automatically from the fact you already gave, instead of reading as a dead end that buys a confirmation question.

When to install single servers instead

The bundle is not always the right size. Windsurf's Cascade agent caps out at 100 tools across every enabled server, so 198 tools in one entry does not fit at all; installing only the two or three single servers you actually use, at 9 to 16 tools each, leaves room for the rest of that budget. The same logic applies anywhere the count matters more than the config-entry count: a project that only ever needs the time tracker and the invoice server gets the same free tier and the same tools either way, with fewer license checks and no dormant sibling processes started for the servers it never calls. Ten of the nineteen children went untouched by the 2026-09-04 audit's six sentences entirely, which is the concrete argument for installing single servers when you know in advance which two or three you will actually use, and the bundle when you do not, or when the client charges per config entry rather than per tool.

Free tier and Pro

Each child keeps its own free tier exactly as documented in its own guide; this bundle changes nothing about those limits, only how many config entries it takes to reach all of them. A single bundle Pro key, $39 once, lifetime, activates Pro on every child at once instead of buying each server's own $19 key separately; activation is all-or-nothing and prints a per-child OK/FAILED table so a bundle that is half Pro cannot look like a full success. Full detail on free versus Pro.

Questions

What exactly is office-suite?

One MCP server, run over stdio, that starts all twenty sibling servers as child processes and proxies their tools, resources and prompts under one connection. Each child stores its data exactly as it does standalone; the bundle adds no storage of its own.

How many tools does it expose?

198, read live off the built bundle on 2026-09-05. Every child also registers its own license_status/license_activate pair; the bundle merges those twenty pairs down to one, and 198 is what is left on the bundle's own tools/list after that merge.

Which tool names needed a prefix?

Four out of 198: invoice and docx both register business_set, and expense-tracker and bank-statement both register category_rules. The bundle exposes invoice_business_set, docx_business_set, expense-tracker_category_rules and bank-statement_category_rules, and rewrites each child's own replies to match. Every other tool keeps its bare name.

Does adding more children make tool selection worse?

Not as of the last measurement. A six-prompt audit needing two or more children per sentence, run on 2026-09-04 against the nineteen-server build with 186 tools, put 20 of 20 tool calls in the correct child and the correct tool, against 50 of 51 at 108 tools with five children. Every remaining defect was a tool declining to say something it already knew, not a wrong pick. The bundle has since grown to twenty servers and 198 tools; that growth has not been re-measured against this audit.

When should I install a single server instead of the whole bundle?

When a client caps total tools, such as Windsurf's Cascade agent at 100, 198 tools does not fit in one entry at all. It is also the better choice when you already know you only need two or three of the twenty: same free tier, fewer license checks, no dormant sibling processes started for servers you never call.

Related

All MCP servers and prices · All guides · Buy the bundle $39