Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

MCP Holded

by t4dhgversion 3.0.0i★ –iRuns on your computer
Registry nameio.github.t4dhg/mcp-holded

Install

Overview

Description from the maker (original English)

MCP server for Holded (Spanish ERP): invoicing, accounting, treasury, CRM, projects, payroll.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Accounting, finance & tax
  • You need to fill in: HOLDED_API_KEY

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: HOLDED_API_KEY, HOLDED_BASE_URL, HOLDED_TIMEOUT_MS, HOLDED_MAX_RETRIES, DEBUG

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

  • npmNode.js installed (for the npx command)

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-holded

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

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.

Open in VS Code

Or copy the settings yourself

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.

Values you fill in

  • HOLDED_API_KEY secret required env
    Holded v2 Personal Access Token (pat_ _ ), created under Settings, Developers, API. A v1 key is rejected at startup.
  • HOLDED_BASE_URL env
    Override the API base URL (default: https://api.holded.com/api/v2)
  • HOLDED_TIMEOUT_MS env
    Per-request timeout in milliseconds (default: 30000)
  • HOLDED_MAX_RETRIES env
    Retry attempts for GET requests; writes are never retried (default: 3)
  • DEBUG env
    Log requests to stderr (default: false)

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

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

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account t4dhg, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Accounting, finance & taxi

  • More stars than 0% of the other 3035 servers in this category
  • Published to the registry more recently than 84% of the other 3035 servers in this category
  • Basic checks equal to or better than 100% of the other 3035 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is MCP Holded safe?

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.

What keys or codes does it need?

You need to fill in: HOLDED_API_KEY

Does it run on my computer or in the cloud?

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).

Is it still maintained?

The GitHub repo last changed –, and the latest version (3.0.0) reached the registry 5 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Finance Toolkit, SolidInvoice, Korea Tax Calculator

Alternatives

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

Finance Toolkit

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

by JerBoumaWidely used↓ 15.5K/wk★ 5.5KUpdated today

Computer or cloud

SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

by SolidInvoiceGrowing★ 981Updated today

Runs in the cloud✓ solidinvoice.co

Korea Tax Calculator

Korean tax calculation and tax-audit judgment MCP: 97 tools with statutory citations.

by UpstageAIGrowing↓ 3.2K/wk★ 97Updated today

Runs on your computer

README from the maker

Open the README

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.

MCP Holded

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.

Why this one

  • v2 only, which is the API that still works. Holded deprecated the classic API (/api/invoicing/v1, key header). New tokens are pat_ _ and authenticate only against v2. This server speaks v2 and nothing else.
  • Thirteen hierarchical tools with an `action` parameter, not one tool per endpoint, so the tool list stays small in a model's context while covering contacts, sales, purchases, payments, treasury, accounting, catalog, team, CRM, projects, calendar, inbox and webhooks.
  • Seven MCP resources and six MCP prompts. The resources carry the account's own tax keys, numbering series, payment methods and chart of accounts, plus the API behaviour a schema cannot express. The prompts run the real workflows: aged receivables, VAT summary, bank reconciliation, statements, month-end close.
  • A confirmation gate on every destructive operation, with a structural test that keeps the documented list equal to the code. Nothing that deletes, overwrites, approves or emails goes through without confirm: true.
  • Zod validation of every request and every response. A shape the server has not seen surfaces as a clear schema error rather than a silent success.
  • Over 200 tests against anonymised real v2 responses, npm provenance via trusted publishing, and Node 20 or later.

How it compares

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-mcpholded-mcp
API versionv2v2v1 (deprecated)v1 (deprecated)
AuthBearer pat_Bearer pat_key headerkey header
Domains covered1318 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 shape13 hierarchical, action parameter (15 tools total)119 flat tools, one per operation139 flat tools, one per operation136 flat tools, one per operation
MCP resources7000
MCP prompts6000
Destructive operations gatedEvery one, structurally testedNo confirmation gate; destructiveHint annotation and per-tool rate limits onlyNo confirmation gate; destructiveHint annotation onlyNo confirmation gate; destructiveHint annotation only
Response validationZod, requests and responsesZod, requests onlyZod, requests onlyZod, requests only
Minimum Node1822.142018
Tests234389, across 23 files, shipped in the package and passingNone shippedNone shipped
npm provenanceYesYesNoNo
LicenceMITMITMITMIT
Last publish2026-09-082026-07-072026-07-012026-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.

Quick start

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.

Claude Desktop

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 Code
claude mcp add holded --env HOLDED_API_KEY=pat_xxxxxxxx_xxxxxxxx -- npx -y @t4dhg/mcp-holded
Cursor

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" } } } }

VS Code

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.

Environment variables
VariableRequiredDefaultPurpose
HOLDED_API_KEYyesnonev2 Personal Access Token. A v1 key is rejected at startup.
HOLDED_BASE_URLnohttps://api.holded.com/api/v2Override the API base, for testing.
HOLDED_TIMEOUT_MSno30000Per-request timeout.
HOLDED_MAX_RETRIESno3Attempts for GET requests. Writes are never retried.
DEBUGnofalseLog requests to stderr.

What people use it for

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

Ask PopNx