Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Descripción del creador (original en inglés)
MCP server for Xero accounting — contacts, invoices, payments, accounts, and financial reports.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
XERO_TENANT_ID, XERO_ACCESS_TOKEN, MCP_TRANSPORT, AUTH_MODE, LOG_LEVELLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"xero": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"XERO_TENANT_ID",
"-e",
"XERO_ACCESS_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/xero-mcp:v1.5.5"
],
"env": {
"XERO_TENANT_ID": "your-value",
"XERO_ACCESS_TOKEN": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add xero --env XERO_TENANT_ID=your-value --env XERO_ACCESS_TOKEN=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e XERO_TENANT_ID -e XERO_ACCESS_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/xero-mcp:v1.5.5Completa los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"xero": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"XERO_TENANT_ID",
"-e",
"XERO_ACCESS_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/xero-mcp:v1.5.5"
],
"env": {
"XERO_TENANT_ID": "your-value",
"XERO_ACCESS_TOKEN": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"xero": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"XERO_TENANT_ID",
"-e",
"XERO_ACCESS_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/xero-mcp:v1.5.5"
],
"env": {
"XERO_TENANT_ID": "your-value",
"XERO_ACCESS_TOKEN": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
MCP_TRANSPORT envAUTH_MODE envLOG_LEVEL envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub wyre-technology, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: XERO_TENANT_ID, XERO_ACCESS_TOKEN
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.5.5) llegó al registro hace 3 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.
En la misma categoría: Finance Toolkit, SolidInvoice, Korea Tax Calculator
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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: 96 tools with statutory citations.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Model Context Protocol (MCP) server for the Xero Accounting API. Enables Claude and other MCP-compatible clients to manage Xero contacts, invoices, payments, accounts, and reports.
xero_invoices_get renders as a rich, read-only card in MCP Apps hosts — neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env varsNote on registry auth: This server depends only on public npm packages, so the Cloudflare and DigitalOcean cloud builders install its dependencies anonymously — no token is required for one-click deploy. (If a future release adds a private
@wyre-ai/*dependency, you would supply a GitHub PAT withread:packagesas a build variable —NODE_AUTH_TOKENfor Cloudflare Workers, a build-timeGITHUB_TOKENsecret for DigitalOcean.)
Installing the published package: The released package is published to the GitHub Packages npm registry, which requires authentication on every install (even for public packages). To install it, authenticate npm to
npm.pkg.github.comwith a GitHub PAT that hasread:packages:
`bash
export NODE_AUTH_TOKEN=$(gh auth token)
npm install @wyre-ai/xero-mcp
`
npm install
npm run build
XERO_ACCESS_TOKEN=your-access-token XERO_TENANT_ID=your-tenant-id npm start
CONDUIT_S2S_SECRET is required. If it is empty or a known placeholder, the process logs an error and exits non-zero. It never prints the secret.
MCP_TRANSPORT=http \
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ XERO_ACCESS_TOKEN=your-access-token \ XERO_TENANT_ID=your-tenant-id \ npm start
With a secret set and MCP_HTTP_HOST unset, the server listens on http://0.0.0.0:8080/mcp.
Local HTTP without a secret is development-only. It logs a warning, does not check X-Gateway-S2S, and binds 127.0.0.1 only (a non-loopback MCP_HTTP_HOST is ignored):
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
The image listens on 0.0.0.0 inside the container. Publish the port on loopback and pass the S2S secret. Gateway mode does not read Xero credentials from the environment:
docker build -t xero-mcp .
docker run \ -e CONDUIT_S2S_SECRET=your-s2s-secret \ -e AUTH_MODE=gateway \ -p 127.0.0.1:8080:8080 \ xero-mcp
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses XERO_ACCESS_TOKEN and XERO_TENANT_ID:
docker run \
-e CONDUIT_S2S_SECRET=your-s2s-secret \ -e AUTH_MODE=env \ -e XERO_ACCESS_TOKEN=your-access-token \ -e XERO_TENANT_ID=your-tenant-id \ -p 127.0.0.1:8080:8080 \ xero-mcp
The checked-in Compose service is gateway mode. It does not set XERO_ACCESS_TOKEN or XERO_TENANT_ID and does not use env_file, so a project .env cannot inject static vendor credentials into the container. Compose refuses to start when CONDUIT_S2S_SECRET is unset or empty, and publishes 127.0.0.1:8080:8080.
CONDUIT_S2S_SECRET=your-s2s-secret docker compose up
Copy .env.example. Leave CONDUIT_S2S_SECRET empty in that file.
| Variable | Required | Default | Description |
|---|---|---|---|
XERO_ACCESS_TOKEN | For stdio and AUTH_MODE=env | — | Xero OAuth2 access token. Not set on the gateway Compose service. |
XERO_TENANT_ID | For stdio and AUTH_MODE=env | — | Xero tenant ID (organisation). Not set on the gateway Compose service. |
MCP_TRANSPORT | No | stdio | Transport type: stdio or http |
MCP_HTTP_PORT | No | 8080 | HTTP server port |
MCP_HTTP_HOST | No | 0.0.0.0 when CONDUIT_S2S_SECRET is set | Bind address. A configured secret honors this value. With no secret, MCP_ALLOW_INSECURE_DEV=1 forces 127.0.0.1. The container image sets 0.0.0.0. |
AUTH_MODE | No | env | env or gateway. Compose sets gateway. |
CONDUIT_S2S_SECRET | Yes for HTTP | — | Service-to-service HMAC secret. HTTP startup exits non-zero when this is empty or a known placeholder. Never commit a real value. The value is never logged. |
MCP_ALLOW_INSECURE_DEV | No | unset | Set to exactly 1 for local HTTP without CONDUIT_S2S_SECRET. Logs a warning, skips X-Gateway-S2S, and binds 127.0.0.1 only. Does not accept a placeholder secret. |
/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/s2s-verify.ts.
The header value is t= ,v1= :
is the current UTC time. is HMAC-SHA256 of the literal string t= (the same t= prefix and digits), keyed with CONDUIT_S2S_SECRET, encoded as 64 lowercase hex characters.A missing or invalid header is HTTP 401, before vendor credentials are read. The secret is never logged.
TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}') curl -sS http://127.0.0.1:8080/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \ -H "X-Xero-Access-Token: $XERO_ACCESS_TOKEN" \ -H "X-Xero-Tenant-Id: $XERO_TENANT_ID" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Known placeholders (replace-with-a-real-secret, your-s2s-secret, your-secret, changeme, change-me, placeholder, secret, example, replace-me, s2s-secret, any case, surrounding whitespace ignored) are refused at startup so a copied example cannot forge that header. Generate a secret with openssl rand -hex 32.
When AUTH_MODE=gateway, credentials are passed per-request via HTTP headers instead of environment variables:
X-Xero-Access-Token — OAuth2 access tokenX-Xero-Tenant-Id — Xero tenant IDA request missing either header gets HTTP 401 and does not fall back to XERO_ACCESS_TOKEN or XERO_TENANT_ID. When CONDUIT_S2S_SECRET is set, the request must also include a valid X-Gateway-S2S header. This allows a gateway/proxy to manage multi-tenant credentials.
xero_invoices_get renders as an interactive card in MCP Apps hosts (Claude Desktop/web) showing status, contact, dates, amounts, and line items; plain-JSON behavior is unchanged in other hosts. The card is read-only — invoices are financial records, so no write actions are exposed from it. It is neutral by default and brandable via window.__BRAND__ injection or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL, MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG, MCP_BRAND_TEXT) — no rebuild needed.
Tools are organized into domains. Use xero_navigate to select a domain, then use the domain-specific tools.
xero_navigate — Select a domain (contacts, invoices, payments, accounts, reports)xero_back — Return to domain selectionxero_contacts_list — List contacts with pagination and optional filteringxero_contacts_get — Get detailed contact information by IDxero_contacts_create — Create a new contact (customer or supplier)xero_contacts_search — Search contacts by namexero_invoices_list — List invoices with optional status and type filtersxero_invoices_get — Get detailed invoice information by IDxero_invoices_create — Create a new invoice (sales or bill)xero_invoices_update_status — Update invoice status (submit, authorise, void)xero_payments_list — List payments with optional status filterxero_payments_get — Get detailed payment information by IDxero_payments_create — Record a payment against an invoicexero_accounts_list — List chart of accounts with optional type/class filterxero_accounts_get — Get detailed account information by IDxero_reports_profit_and_loss — Profit and Loss (income statement) for a date rangexero_reports_balance_sheet — Balance Sheet as of a specific datexero_reports_aged_receivables — Aged Receivables by contactxero_reports_aged_payables — Aged Payables by contactApache-2.0