All projects

Open source · Active · September 18, 2026

iCount MCP

An MCP server that allows AI agents to open, search, and close iCount documents — invoices, receipts, orders, and quotes — and manage customer records directly from a conversation. Runs locally on stdio, with no storage and no OAuth — just a single API token.

  • MCP
  • Node.js
  • iCount API v3
  • stdio

The Problem

Every action in iCount — issuing an invoice, checking payment status, opening a customer record — required leaving the conversation with the agent and moving to the accounting system itself. There is no official way to give an AI agent access to this without building a custom integration.

What it does

icount-mcp is an MCP (Model Context Protocol) server that exposes the iCount API as tools that any MCP client — Claude Code, Claude Desktop, Cursor, Windsurf, n8n, and others — can call directly from a conversation. 14 tools in two areas:

  • Documents — Create, search, retrieve, close, convert, and cancel invoices, receipts, orders, quotes, delivery notes, and transactions, including breaking down payments into tax documents (without which iCount simply refuses to create the document).
  • Customers — Create, update, retrieve, list, and delete customer records, and retrieve open documents for a given customer.

The server runs locally on stdio — it is not hosted anywhere, and there is no OAuth process. Authentication with iCount is a single API token held by the user only.

How it's installed

Installation is one line in the MCP client config: npx -y icount-mcp with the ICOUNT_API_TOKEN environment variable. In Claude Code, it's one command — claude mcp add icount --env ICOUNT_API_TOKEN=... -- npx -y icount-mcp. There is no build, no background daemon, and no "app registration" step with iCount other than creating the token itself.

Permissions and Approval Gates

This touches real financial records, so the explicit instruction in the documentation is to keep tool approvals enabled in the MCP client — every call that creates, closes, or cancels a document undergoes manual approval before it is executed. The token itself is the only permission the server has; it does not see or touch anything beyond what the iCount API allows for that token.

Trade-offs

There is no state management or server-side cache — every call is a direct round trip to iCount. Simple to maintain, but it means an agent running several queries in a row will feel it in the response time. And this is not an official iCount integration — it is a community project, explicitly documented as such.

What's still missing

There is no support for reports yet (balance sheet, profit and loss) and no webhook for real-time updates — every interaction is initiated by the agent, not a push from iCount.