io.github.agente-dev/wfirma-mcp

Official registry Finance and payments

Unofficial read-only MCP server for the wFirma API v2: invoices, contractors, expenses, payments.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package wfirma-mcp
Claude Code
claude mcp add wfirma-mcp -e 'WFIRMA_ACCESS_KEY=<your wfirma_access_key>' -e 'WFIRMA_SECRET_KEY=<your wfirma_secret_key>' -e 'WFIRMA_APP_KEY=<your wfirma_app_key>' -- npx -y wfirma-mcp@1.0.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "wfirma-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "wfirma-mcp@1.0.0"
            ],
            "env": {
                "WFIRMA_ACCESS_KEY": "<your wfirma_access_key>",
                "WFIRMA_SECRET_KEY": "<your wfirma_secret_key>",
                "WFIRMA_APP_KEY": "<your wfirma_app_key>"
            }
        }
    }
}

Environment variables

  • WFIRMA_ACCESS_KEY required secret wFirma access key from your panel (Integrations → API)
  • WFIRMA_SECRET_KEY required secret wFirma secret key paired with the access key
  • WFIRMA_APP_KEY required secret wFirma app key for the API application

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. wFirma MCP
  2. Tools (9, all read-only)
  3. Why read-only
  4. Setup
  5. Design notes
  6. License

wFirma MCP

Unofficial, read-only MCP server for the wFirma API v2 (api2.wfirma.pl). Gives MCP-compatible AI assistants typed, read-only access to company data, invoices, contractors, expenses, and payments — with credentials that never leave your machine and no commercial middleware between you and wFirma.

Not affiliated with wFirma. "wFirma" is a trademark of its respective owner.

Tools (9, all read-only)

ToolEndpoint
wfirma_list_companiesGET /user_companies/find
wfirma_list_invoicesGET /invoices/find
wfirma_get_invoiceGET /invoices/get/{id}
wfirma_list_contractorsGET /contractors/find
wfirma_get_contractorGET /contractors/get/{id}
wfirma_list_expensesGET /expenses/find
wfirma_get_expenseGET /expenses/get/{id}
wfirma_list_paymentsGET /payments/find
wfirma_get_paymentGET /payments/get/{id}

Every company-scoped tool requires the internal companyId returned by wfirma_list_companies. A Polish NIP is not accepted as a company id.

Why read-only

The server intentionally contains no add, edit, delete, send, fiscalization, KSeF, or payment-mutation operation. The full list of excluded categories, reviewed against the official documentation at doc.wfirma.pl, is recorded in coverage-manifest.json. If you need writes, use wFirma's own tooling — not this server.

Setup

Credentials

wFirma API keys are created in your wFirma panel (Integrations → API). Required environment variables:

  • WFIRMA_ACCESS_KEY
  • WFIRMA_SECRET_KEY
  • WFIRMA_APP_KEY

See .env.example. Never commit real values.

Build
pnpm install
pnpm build      # → dist/index.js (self-contained esbuild bundle)
pnpm test       # all HTTP traffic is mocked; no live account needed
Claude Desktop / any stdio MCP client
{
  "mcpServers": {
    "wfirma": {
      "command": "node",
      "args": ["/absolute/path/to/wfirma-mcp/dist/index.js"],
      "env": {
        "WFIRMA_ACCESS_KEY": "your-access-key",
        "WFIRMA_SECRET_KEY": "your-secret-key",
        "WFIRMA_APP_KEY": "your-app-key"
      }
    }
  }
}
Claude Code / Cursor (scope: project)
claude mcp add wfirma -- node /absolute/path/to/wfirma-mcp/dist/index.js

Design notes

  • No runtime dependencies beyond the MCP SDK and zod. The client uses Node's stdlib https with a hard 20s timeout and a bounded response-size guard.
  • Fail-closed error taxonomy. Missing credentials, non-numeric company ids, oversized responses, and auth failures each raise a distinct wfirma_* error code instead of a generic failure.
  • No PII in logs. Tool parameters are never logged.
  • Coverage manifest. coverage-manifest.json maps every tool to its endpoint, risk class, and the test that proves it; a CI test enforces the manifest stays in sync with the source.

License

MIT

Frequently asked questions

What is io.github.agente-dev/wfirma-mcp?

Unofficial read-only MCP server for the wFirma API v2: invoices, contractors, expenses, payments.

How do I install io.github.agente-dev/wfirma-mcp?

It runs on your machine. In Claude Code: claude mcp add wfirma-mcp -e 'WFIRMA_ACCESS_KEY=<your wfirma_access_key>' -e 'WFIRMA_SECRET_KEY=<your wfirma_secret_key>' -e 'WFIRMA_APP_KEY=<your wfirma_app_key>' -- npx -y wfirma-mcp@1.0.0. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.agente-dev/wfirma-mcp need an API key?

Yes. It expects WFIRMA_ACCESS_KEY, WFIRMA_SECRET_KEY, WFIRMA_APP_KEY, which you set in its configuration.

Is io.github.agente-dev/wfirma-mcp open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.agente-dev/wfirma-mcp?

It is published by agente-dev. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.