Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Description from the maker (original English)
MCP server for Holded (Spanish ERP): invoicing, accounting, treasury, CRM, projects, payroll.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
HOLDED_API_KEY, HOLDED_BASE_URL, HOLDED_TIMEOUT_MS, HOLDED_MAX_RETRIES, DEBUGValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"holded": {
"command": "npx",
"args": [
"-y",
"@t4dhg/mcp-holded"
],
"env": {
"HOLDED_API_KEY": "your-value",
"HOLDED_BASE_URL": "your-value",
"HOLDED_TIMEOUT_MS": "your-value",
"HOLDED_MAX_RETRIES": "your-value",
"DEBUG": "your-value"
}
}
}
}Run this in your terminal
claude mcp add holded --env HOLDED_API_KEY=your-value --env HOLDED_BASE_URL=your-value --env HOLDED_TIMEOUT_MS=your-value --env HOLDED_MAX_RETRIES=your-value --env DEBUG=your-value -- npx -y @t4dhg/mcp-holdedFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"holded": {
"command": "npx",
"args": [
"-y",
"@t4dhg/mcp-holded"
],
"env": {
"HOLDED_API_KEY": "your-value",
"HOLDED_BASE_URL": "your-value",
"HOLDED_TIMEOUT_MS": "your-value",
"HOLDED_MAX_RETRIES": "your-value",
"DEBUG": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"holded": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@t4dhg/mcp-holded"
],
"env": {
"HOLDED_API_KEY": "your-value",
"HOLDED_BASE_URL": "your-value",
"HOLDED_TIMEOUT_MS": "your-value",
"HOLDED_MAX_RETRIES": "your-value",
"DEBUG": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
HOLDED_BASE_URL envHOLDED_TIMEOUT_MS envHOLDED_MAX_RETRIES envDEBUG envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 9, 2026
The registry name was verified with the GitHub account t4dhg, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: HOLDED_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (3.0.0) reached the registry 5 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Finance Toolkit, SolidInvoice, Korea Tax Calculator
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 97 tools with statutory citations.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Model Context Protocol server for [Holded](https://www.holded.com), on the v2 API
_A community project. Not affiliated with, endorsed by, or supported by Holded. "Holded" and the Holded logo are trademarks of their owner, used here to identify the API this server speaks to._
An MCP server for the Holded API v2: contacts, sales and purchase documents, payments, treasury, accounting, catalog, team, CRM, projects, calendar, inbox and webhooks. Thirteen hierarchical tools with an action parameter, Zod validation of every request and response, retries on reads, and a confirmation gate on every destructive operation.
Holded deprecated its classic API (/api/invoicing/v1, key header). New keys use the format pat_ _ and only authenticate against v2 (https://api.holded.com/api/v2, Authorization: Bearer). This server speaks v2 only.
/api/invoicing/v1, key header). New tokens are pat_ _ and authenticate only against v2. This server speaks v2 and nothing else.confirm: true.Four MCP servers for Holded exist on npm. This compares the published code of each, not their descriptions, as at 2026-09-08: @t4dhg/mcp-holded 2.1.1, @nubiia/mcp-holded 2.0.2, @energio/holded-mcp 1.5.1 and holded-mcp 1.0.0. It is a snapshot and will age; check the current versions yourself before relying on it.
@t4dhg/mcp-holded | @nubiia/mcp-holded | @energio/holded-mcp | holded-mcp | |
|---|---|---|---|---|
| API version | v2 | v2 | v1 (deprecated) | v1 (deprecated) |
| Auth | Bearer pat_ | Bearer pat_ | key header | key header |
| Domains covered | 13 | 18 tool-module files (no calendar, bookings, inbox, webhooks or CRM) | 5 API sections (accounting, CRM, invoicing, projects, team) | 5 API sections (accounting, CRM, invoicing, projects, team) |
| Tool shape | 13 hierarchical, action parameter (15 tools total) | 119 flat tools, one per operation | 139 flat tools, one per operation | 136 flat tools, one per operation |
| MCP resources | 7 | 0 | 0 | 0 |
| MCP prompts | 6 | 0 | 0 | 0 |
| Destructive operations gated | Every one, structurally tested | No confirmation gate; destructiveHint annotation and per-tool rate limits only | No confirmation gate; destructiveHint annotation only | No confirmation gate; destructiveHint annotation only |
| Response validation | Zod, requests and responses | Zod, requests only | Zod, requests only | Zod, requests only |
| Minimum Node | 18 | 22.14 | 20 | 18 |
| Tests | 234 | 389, across 23 files, shipped in the package and passing | None shipped | None shipped |
| npm provenance | Yes | Yes | No | No |
| Licence | MIT | MIT | MIT | MIT |
| Last publish | 2026-09-08 | 2026-07-07 | 2026-07-01 | 2026-02-25 |
Where this differs most: the v1 servers are on an API Holded has deprecated, and new pat_ tokens do not authenticate against it at all, so they cannot work with a newly issued key. Against @nubiia/mcp-holded, which is current, the differences are breadth (this server covers calendar and bookings, inbox, webhooks, and CRM leads and funnels, none of which appear in nubiia's tool list), the resource and prompt surface, the hierarchical tool shape, and a gated raw-request escape hatch. Nubiia's own Node floor is 22.14, genuinely higher than the 18 this server and holded-mcp both support.
Install nothing. Every client below runs the server through npx. Create the token in Holded under Settings, Developers, API and use the full pat_..._... value.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows:
{
"mcpServers": { "holded": { "command": "npx", "args": ["-y", "@t4dhg/mcp-holded"], "env": { "HOLDED_API_KEY": "pat_xxxxxxxx_xxxxxxxx" } } } }
claude mcp add holded --env HOLDED_API_KEY=pat_xxxxxxxx_xxxxxxxx -- npx -y @t4dhg/mcp-holded
Edit ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": { "holded": { "command": "npx", "args": ["-y", "@t4dhg/mcp-holded"], "env": { "HOLDED_API_KEY": "pat_xxxxxxxx_xxxxxxxx" } } } }
Edit .vscode/mcp.json. Note the key is servers, not mcpServers:
{
"servers": { "holded": { "command": "npx", "args": ["-y", "@t4dhg/mcp-holded"], "env": { "HOLDED_API_KEY": "pat_xxxxxxxx_xxxxxxxx" } } } }
Requires Node.js 20 or later. Development uses Node 24 (nvm use).
Typed request collections accept at most 1,000 items, including nested collections. Existing lower API limits still apply (bank movement batches accept at most 100). A tool call may contain at most 10,000 combined array elements and object members, including arbitrary JSON payloads. Split larger operations into smaller calls.
| Variable | Required | Default | Purpose |
|---|---|---|---|
HOLDED_API_KEY | yes | none | v2 Personal Access Token. A v1 key is rejected at startup. |
HOLDED_BASE_URL | no | https://api.holded.com/api/v2 | Override the API base, for testing. |
HOLDED_TIMEOUT_MS | no | 30000 | Per-request timeout. |
HOLDED_MAX_RETRIES | no | 3 | Attempts for GET requests. Writes are never retried. |
DEBUG | no | false | Log requests to stderr. |
Chasing unpaid invoices. Run the holded_aged_receivables prompt. You get every outstanding invoice bucketed by how late it is and grouped by customer, worst first, counting only the unpaid remainder of part-paid invoices. Then ask for a statement for the worst offender with holded_contact_statement, in a form you can send them.
Reconciling a bank month. Run holded_bank_reconciliation for the period. It matches bank movements against recorded payments on amount and date, then shows you the two lists that matter: m
Only the beginning is shown; read the rest in the repo