npm wfirma-mcpstdioMITupdated 12d ago
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.
What can you do with wfirma mcp?
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)
| Tool | Endpoint |
|---|---|
wfirma_list_companies |
GET /user_companies/find |
wfirma_list_invoices |
GET /invoices/find |
wfirma_get_invoice |
GET /invoices/get/{id} |
wfirma_list_contractors |
GET /contractors/find |
wfirma_get_contractor |
GET /contractors/get/{id} |
wfirma_list_expenses |
GET /expenses/find |
wfirma_get_expense |
GET /expenses/get/{id} |
wfirma_list_payments |
GET /payments/find |
wfirma_get_payment |
GET /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_KEYWFIRMA_SECRET_KEYWFIRMA_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
httpswith 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.jsonmaps 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
Install
Add wfirma mcp to your client. Pick the one you use.
claude mcp add wfirma-mcp -- npx -y wfirma-mcpcodex mcp add wfirma-mcp -- npx -y wfirma-mcpamp mcp add wfirma-mcp -- npx -y wfirma-mcp{
"mcpServers": {
"wfirma-mcp": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"wfirma-mcp": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"wfirma-mcp","command":"npx","args":["-y","wfirma-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"wfirma-mcp": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"wfirma-mcp": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"wfirma-mcp": {
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"wfirma-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"wfirma-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"wfirma-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"wfirma-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y wfirma-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
9 tools
wfirma mcp exposes 9 tools to a connected agent.
- wfirma_list_companies
- `GET /user_companies/find`
- wfirma_list_invoices
- `GET /invoices/find`
- wfirma_get_invoice
- `GET /invoices/get/{id}`
- wfirma_list_contractors
- `GET /contractors/find`
- wfirma_get_contractor
- `GET /contractors/get/{id}`
- wfirma_list_expenses
- `GET /expenses/find`
- wfirma_get_expense
- `GET /expenses/get/{id}`
- wfirma_list_payments
- `GET /payments/find`
- wfirma_get_payment
- `GET /payments/get/{id}`
Score
75 / 100
Good
- Documentation22/25
- Maintenance19/25
- Trust16/20
- Capability6/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 5 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 9 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.0.0Latest | Aug 27, 2026 |