mcpField
W
wfirma-mcp

wfirma-mcp

Local
github.comFinance1Updated 9w ago

About wfirma-mcp

wfirma-mcp is an unofficial, read-only MCP server for developers and assistants that need access to wFirma API v2 company data. Its typed tools retrieve invoices, contractors, expenses, and payments, while credentials remain on the local machine.

Key features

  1. 01List companies and invoices
  2. 02Retrieve invoice details
  3. 03List contractors and expenses
  4. 04Retrieve expense and payment details
  5. 05Keep access read-only

Use cases

  1. 01Check invoices in wFirma
  2. 02Look up contractors and company expenses
  3. 03Review payment records without modifying them

MCP support

The MCP server exposes nine typed, read-only tools for retrieving company data, invoices, contractors, expenses, and payments from the wFirma API v2.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"agente-dev-wfirma": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
],
"env": {
"WFIRMA_ACCESS_KEY": "<WFIRMA_ACCESS_KEY>",
"WFIRMA_SECRET_KEY": "<WFIRMA_SECRET_KEY>",
"WFIRMA_APP_KEY": "<WFIRMA_APP_KEY>"
}
}
}
}
Run commandnpx -y wfirma-mcp
Environment variables to set
WFIRMA_ACCESS_KEYSecretwFirma access key from your panel (Integrations → API)
WFIRMA_SECRET_KEYSecretwFirma secret key paired with the access key
WFIRMA_APP_KEYSecretwFirma app key for the API application

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmwfirma-mcp1.0.0

Tools

9

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.