Home · Guides

Popular servers: Spreadsheet · Expense Tracker — Log Expenses from Claude · Recurring Invoices · Word Document Server — Create .docx from Claude · Server for Bill of Sale — Draft and Sign from Claude · Zip · Job Card

Freelancer invoicing from chat: hours in, invoice out

The freelance billing stack is usually three subscriptions: a time tracker, an invoicing tool, and whatever exports between them. All three do one simple job each - which is exactly what local MCP servers replace. The loop: MCP Time Tracker records the hours, MCP Invoice turns them into a numbered invoice, and the PDF comes out of the same chat.

Capture the hours

"Start a timer for Acme, API refactor" starts one. Forgot to start it? "Log 2.5 hours yesterday for Acme, design review, at 90 euros an hour" writes a complete entry with rate and currency. At week's end: "hours for Acme this week, grouped by task" returns totals in hours and money.

Turn hours into an invoice

"Give me invoice lines for Acme in August, then issue the invoice" produces one line per task with hours, rate and amount, advances the invoice sequence once, and keeps the numbering consistent across months and clients. Add the client's terms and the PDF is generated in the same step. The full sequence detail is in invoice numbering from chat.

One click, with no JSON. Download invoice.mcpb from the latest release and open it in Claude Desktop. It runs on the Node runtime Claude Desktop ships with, so your own PATH and node version never come into it.

Or a URL, with nothing installed. /mcp/connect mints a free anonymous token and prints the ready line:

claude mcp add --transport http invoice https://mcp.zovo.one/mcp/invoice/t/<token>

Or from a clone, for a client with no bundle installer. Build once, then point the client at the built file:

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

claude mcp add --scope user invoice -- node /absolute/path/to/mcp-servers/servers/invoice/dist/index.js

Claude Desktop, Cursor, Windsurf and Cline take the same two strings as JSON, in claude_desktop_config.json or the client's own MCP config file:

{
  "mcpServers": {
    "invoice": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-servers/servers/invoice/dist/index.js"]
    }
  }
}

The npm packages are not published yet, so the npx form below returns a 404 today. It is kept because it is what that config becomes the day the publish lands, with nothing else changed; installing these servers when npx does not work yet has the whole picture.

claude mcp add invoice -- npx -y @theluckystrike/mcp-invoice

The time tracker installs the same way (install("time-tracker") equivalent in the setup page). Both run locally over stdio; data lives under your home directory. Free tier covers real usage; Pro is a one-time payment per server or included in the bundle.

Where this wins

No per-seat fee, no data leaving the machine, and the audit trail is the chat itself. For the expense side - receipts, rebilling client costs - see expense tracking in Claude.

Questions

Do I need all three servers?

No. The invoice server alone does lines-to-PDF. The time tracker only matters if you want the timer and weekly reports feeding those lines.

Is there a monthly fee?

No. The free tier covers core usage; Pro is a one-time payment per server, or one payment for the bundle.

Where does my billing data live?

On your machine, in plain JSON files under your home directory. Nothing is uploaded.

Related

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

Servers used in this guide: MCP Time Tracking Server — Free, No Install · MCP Server for Invoices — Generate Invoices from Claude