Mcp Quipu

io.github.nubiia-dev由 GitHub 帳號 nubiia-dev 發布v1.0.2更新於 Oct 29, 2026

Quipu API integration with 18 MCP tools for invoices, expenses, contacts and Spanish VAT reporting

已驗證STDIO僅桌面金融商業與電商

概覽

AI 產生的概覽

串接 Quipu 開票 API 的 MCP 伺服器,讓助理讀取與管理聯絡人、發票、費用,並彙整西班牙營業稅資料。

可以做什麼
  • 列出、檢視、建立、修改與刪除 Quipu 聯絡人(客戶與供應商)
  • 列出、檢視、建立、修改與刪除已開立發票,並取得暫時的 PDF 下載連結
  • 列出、檢視、建立、修改與刪除供應商帳單等額外收入與費用,並取得暫時的 PDF 連結
  • 依季度或日期區間,從已記錄的發票與費用計算營業稅與所得稅扣繳數字
適用情境
適合在 Quipu 記帳的西班牙自營業者與小型企業,用自然語言查詢季度營業額、營業稅狀況,或草擬發票、登錄費用。
執行需求
透過 npx 在本機執行(需要 Node.js)。需要 Quipu 帳戶 API 設定中的憑證,以 QUIPU_CLIENT_ID 與 QUIPU_CLIENT_SECRET 提供,另需 QUIPU_OWNER_SLUG,即帳戶 Quipu 網址的第一段路徑。需要連線至 Quipu API 的網路;OAuth2 權杖會在記憶體中快取並自動更新。
安裝前請注意
此伺服器可在真實帳務中建立、修改並永久刪除聯絡人、發票與費用紀錄,寫入操作的配額較嚴格。刪除已編號發票與西班牙開票規定衝突,通常應改開更正發票。發票與費用的 PDF 連結是暫時的公開網址。用戶端 ID 與密鑰屬於機密,不應寫入共用設定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Quipu,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-quipu

Servidor MCP para la API de Quipu: facturación, gastos, contactos y contabilidad para autónomos y pequeñas empresas en España.

Permite que un asistente como Claude consulte y opere tu cuenta de Quipu en lenguaje natural: «¿cuánto he facturado este trimestre?», «créame la factura de septiembre para este cliente», «dame el PDF de la última factura».

Construido por Nubiia. Hermano de mcp-holded.

Estado: estable (v1.0.0). 18 herramientas sobre contactos, facturas, gastos y agregación fiscal. El resto de recursos de la API está mapeado en docs/api-map.md pero aún no expuesto.

Instalación

bash
npm install -g @nubiia/mcp-quipu

Configuración

Necesitas credenciales de API de Quipu (Configuración → API) y el slug de tu cuenta, que es el primer segmento de tus URLs de Quipu: https://getquipu.com/<slug>/…

json
{  "mcpServers": {    "quipu": {      "command": "npx",      "args": ["-y", "@nubiia/mcp-quipu"],      "env": {        "QUIPU_CLIENT_ID": "tu_client_id",        "QUIPU_CLIENT_SECRET": "tu_client_secret",        "QUIPU_OWNER_SLUG": "tu_slug"      }    }  }}

Herramientas disponibles

Contactos

HerramientaDescripción
list_contactsLista contactos, con filtro por nombre y paginación
get_contactDetalle de un contacto
create_contactCrea un contacto (requiere name; el NIF/CIF es obligatorio para facturarle)
update_contactActualiza solo los campos indicados
delete_contactElimina un contacto

Facturas

HerramientaDescripción
list_invoicesLista facturas emitidas, acotables por periodo
get_invoiceDetalle de una factura
create_invoiceEmite una factura con sus líneas, IVA e IRPF
update_invoiceActualiza una factura
delete_invoiceElimina una factura
get_invoice_download_urlURL temporal para descargar el PDF

Gastos e ingresos adicionales

HerramientaDescripción
list_additional_incomesLista gastos e ingresos, acotables por periodo
get_additional_incomeDetalle de una entrada
create_additional_incomeRegistra una factura de proveedor o gasto deducible
update_additional_incomeActualiza una entrada
delete_additional_incomeElimina una entrada
get_additional_income_download_urlURL temporal del PDF

Fiscalidad

HerramientaDescripción
get_tax_summaryIVA repercutido, soportado, saldo y retenciones de un trimestre o rango

Notas de diseño

OAuth2, no API key. A diferencia de Holded, Quipu emite tokens que caducan. El cliente los cachea en memoria, los renueva con un margen de 60 segundos y comparte una sola petición entre llamadas concurrentes. Ante un 401 invalida el token y reintenta.

JSON:API aplanado. Quipu devuelve { data: { id, attributes: {…} } }. Las herramientas aplanan la respuesta a { id, …attributes }, porque los modelos razonan mucho mejor sobre objetos planos y se ahorran tokens de envoltorio.

Las escrituras van más limitadas que las lecturas. Una factura creada por error no es una fila en una base de datos: es un documento con efectos legales. Las operaciones de escritura tienen cupos más estrictos y las destructivas están anotadas con destructiveHint.

La aritmética fiscal se hace en código, no en el modelo. Quipu no expone ningún endpoint de modelos fiscales (130, 303, 111), así que las cifras hay que derivarlas de facturas y gastos. get_tax_summary recorre todas las páginas de ambos recursos, suma con redondeo a céntimos y devuelve el saldo ya calculado. Pedirle a un modelo que sume una lista larga de importes token a token es una forma fiable de obtener una cifra fiscal equivocada.

Los importes vienen como texto y con nombres poco obvios. El importe base es total_amount_without_taxes y el impuesto es vat_amount — no existen total ni subtotal. El sumador acepta coma decimal, ignora vacíos y, ante un valor no parseable, lo excluye y avisa en la respuesta en lugar de propagar un NaN silencioso.

Sobre eliminar facturas. La normativa española exige rectificar mediante factura rectificativa, no borrando una factura ya numerada. delete_invoice existe porque la API lo permite, pero la descripción de la herramienta advierte de ello para que el modelo no lo proponga a la ligera.

Desarrollo

bash
npm installnpm run buildnpm testnpm run lint

Roadmap

  • simplified_invoices — tickets y facturas simplificadas (7 ops)
  • paysheets — nóminas (5 ops)
  • numbering_series, accounting_categories, accounting_subcategories
  • attachments y book_entries
  • Resolución automática del owner_slug vía GET /users/{id}

Licencia

MIT

來源:README.md,提交 c208c89

工具

18

list_contacts

List contacts (clients and suppliers) from Quipu. Returns id, name, tax_id (NIF/CIF), email, phone and address fields. Results are paginated: use `page` to walk through pages. Quipu returns JSON:API, but this tool flattens each resource so attributes appear at the top level alongside `id`.

輸入參數pagefilter_name

get_contact

Get a single Quipu contact by its id, with all available attributes (name, tax_id, email, phone, address, town, zip_code, country_code).

輸入參數id必填

create_contact

Create a contact in Quipu. `name` is required. Provide `tax_id` (NIF/CIF) whenever the contact will be invoiced — Spanish invoices require it and Quipu will reject the invoice later without it.

輸入參數name必填townemailphonetax_idaddresszip_codecountry_code

update_contact

Update an existing Quipu contact. Only the fields you pass are modified; everything else is left untouched.

輸入參數id必填nametownemailphonetax_idaddresszip_codecountry_code

delete_contact

Delete a Quipu contact permanently. Quipu refuses to delete contacts that already have invoices attached; in that case the API returns an error explaining it.

輸入參數id必填

list_invoices

List issued invoices from Quipu, with number, issue_date, due_date, total, subtotal and payment status. Paginated via `page`. Use `filter_from` and `filter_to` to bound the period — this is the tool to use when asked about revenue or VAT for a quarter, since Quipu has no endpoint that returns tax models directly and the figures must be derived from invoices.

輸入參數pagefilter_tofilter_from

get_invoice

Get a single Quipu invoice by id, with all of its attributes and totals.

輸入參數id必填

create_invoice

Create an issued invoice in Quipu. Requires the contact id it is billed to and at least one line item. The contact must already have a tax_id (NIF/CIF) or Quipu will reject the invoice.

輸入參數items必填due_datecontact_id必填issue_datepayment_method

update_invoice

Update an existing Quipu invoice. Note that Spanish invoicing rules restrict what can change once an invoice is issued and numbered; Quipu returns an error when a field is locked.

輸入參數id必填paid_atdue_dateissue_datepayment_method

delete_invoice

Delete a Quipu invoice permanently. Spanish invoicing rules generally require issuing a credit note instead of deleting a numbered invoice — prefer that unless the invoice is still a draft.

輸入參數id必填

get_invoice_download_url

Get a temporary public URL to download a Quipu invoice as PDF. The link is ephemeral and expires, so fetch it when the user actually needs the document rather than storing it.

輸入參數id必填

list_additional_incomes

List additional incomes and expenses recorded in Quipu — everything that is not an issued invoice: supplier bills, purchases, tickets and other deductible costs. Returns kind, total_amount_without_taxes, vat_amount and retention_amount. Bound the period with `filter_from` / `filter_to`. This is the input-VAT side needed to work out what a quarter actually owes.

輸入參數pagefilter_tofilter_from

get_additional_income

Get a single additional income or expense entry from Quipu by its id.

輸入參數id必填

create_additional_income

Record an expense or additional income in Quipu. Use it to log supplier bills and deductible costs. Assign an `accounting_category_id` whenever you know it — an uncategorised expense still counts for VAT but is useless for the profit and loss breakdown.

輸入參數kinditems必填notesnumberpaid_atcontact_idissue_datepayment_methodrecipient_nameaccounting_category_id

update_additional_income

Update an existing additional income or expense in Quipu. Only the fields passed are modified.

輸入參數id必填notesnumberpaid_atissue_datepayment_methodrecipient_name

delete_additional_income

Delete an additional income or expense entry from Quipu permanently.

輸入參數id必填

get_additional_income_download_url

Get a temporary public URL to download an expense document as PDF. The link is ephemeral and expires.

輸入參數id必填

get_tax_summary

Work out the VAT and IRPF position for a period from the invoices and expenses recorded in Quipu. Give it a year and a quarter (or an explicit date range) and it returns output VAT charged on invoices, input VAT paid on expenses, the resulting balance, and withholdings. Use this instead of listing invoices and adding them up by hand: Quipu has no endpoint that returns tax models (130, 303, 111), so the figures must be derived, and doing the arithmetic in code avoids the mistakes that come from adding long lists token by token. Treat the result as an estimate for orientation, not as a filed return.

輸入參數tofromyearquarter

版本歷史

2
  1. v1.0.2最新Oct 22, 2026
  2. v1.0.1Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分