Home · Setup · VS Code

MCP Recurring Invoices in VS Code

Retainers and subscriptions billed on a schedule you set once. It stores a billing schedule per client, weekly, monthly, quarterly, yearly or every N days, shows what falls due, and generates exactly one invoice per schedule per period into the invoice server's own store with its number series and its A4 PDF.

The invoices and their PDFs are written to the invoice server's data directory rather than the workspace, so the useful thing agent mode adds here is reading the dry run back before anything is issued.

What you get in VS Code

You sayTool
Bill Acme 12 hours at 90 EUR every month from the 1st, 14 day terms.schedule_create
Show me what this month's billing run would create before you create it.invoice_generate_due with dry_run
What is due in the next 30 days?schedule_upcoming

The worked run created 4 invoices totalling EUR 4,320.00 and, repeated five minutes later, created 0 and skipped 4. The key is the period, not the calendar day, so a billing run you forgot you already did is a no-op rather than four duplicate invoices.

Install it in VS Code

The file is .vscode/mcp.json, and the key inside it is servers.

ScopePath
This workspace<workspace>/.vscode/mcp.json
Every workspacethe user profile mcp.json, opened by the MCP: Open User Configuration command

If you also run Claude Desktop, the shortest path there is one click: recurring.mcpb from the bundle catalog opens as an extension, with no JSON and no terminal. VS Code reads its own config, so here it is:

// .vscode/mcp.json  (the key is "servers")
{
  "servers": {
    "recurring": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-servers/servers/recurring/dist/index.js"]
    }
  }
}

Or from a terminal:

code --add-mcp '{"name":"recurring","command":"node","args":["/absolute/path/to/mcp-servers/servers/recurring/dist/index.js"]}'

The node command above wants a built file. From a clone, once:

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers && npm install
npm run build -w packages/mcp-license -w servers/recurring

That writes servers/recurring/dist/index.js, and its absolute path is the one argument the config needs.

The npm packages are not published yet, so the form below returns a 404 today. It is here because it is what the entry becomes the day the publish lands, with nothing else changed:

code --add-mcp '{"name":"recurring","command":"npx","args":["-y","@theluckystrike/mcp-recurring"]}'

VS Code asks you to confirm you trust the server and its capabilities before it starts. Nothing runs until you answer.

Nothing is published to npm yet, so the working install paths are the ones above: the .mcpb bundle from the bundle catalog, a clone and build, or the hosted URL.

No install: the hosted endpoint

The same server runs at https://mcp.zovo.one/mcp/recurring over MCP streamable HTTP, no install. Mint a free token with curl https://mcp.zovo.one/mcp/token, or use a Pro key. It has no filesystem, so a file comes back as a one-hour download link.

{
  "servers": {
    "recurring": {
      "url": "https://mcp.zovo.one/mcp/recurring",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

VS Code notes worth knowing first

The top-level key is "servers", not "mcpServers". A config pasted from a Claude Desktop or Cursor README parses cleanly, contributes no servers, and gives you no error to read, which makes it the most expensive one-word mistake here. Alongside it an "inputs" array holds secrets. The newer Agent Host reads a workspace .mcp.json instead.

Free: 3 active schedules, unlimited generation, a 30 day upcoming view and a 3 month forecast. Pro is $19 once, verified offline.

Questions

Why does my mcp.json do nothing?

The key is servers, not mcpServers. A config copied from a Claude Desktop README parses cleanly and contributes nothing. Rename it. On the newer Agent Host, use a workspace .mcp.json instead.

Do I have to edit the file at all?

No. code --add-mcp takes the server object on the command line, and MCP: Add Server in the palette asks whether the target is Workspace or Global.

Where do the MCP Recurring Invoices tools show up?

In Chat, behind the tools picker, once the server has started. Adding or changing one raises a prompt asking you to confirm you trust it; if the picker is empty, that prompt is usually still waiting.

Related

MCP Recurring Invoices in detail · The same server in Cursor and Windsurf · Every server in VS Code · Guides · VS Code docs · Buy Pro

Related guides & tools

Bill a retainer on a schedule without a billing SaaS · Create an invoice PDF from a chat message with an MCP server