# Ekwo OS — open source accounting: ledger, invoices and VAT on your own Supabase or Postgres

An MCP server connecting AI agents to Ekwo OS accounting on your Postgres or Supabase. It allows assistants to handle invoices, reconcile payments, and calculate VAT within user permissions.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 39
- Author: Ekwo-ai
- License: AGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/Ekwo-ai/ekwo-os/tree/HEAD/packages/mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/ekwo-os-open-source-accounting-ledger-invoices-and-vat-on-your-own-supabase-or-p

## What it does

The server gives coding agents direct access to double-entry books stored in Postgres or Supabase. Assistants can inspect ledgers, draft invoices, and organize tax filings without leaving the editor. Connections run through a remote HTTP endpoint at `https://mcp.ekwo.ai/mcp` or locally via stdio using `npx -y @ekwo-ai/mcp@latest`.

Permissions mirror the actual user rather than an elevated database administrator. The server deliberately rejects `service_role` keys on launch. Every request runs through Row Level Security policies, keeping multi-tenant organizations isolated. The agent cannot inspect locked accounting periods or foreign accounts.

The model cannot delete posted records. Any corrected transaction requires credit notes or explicit reversals handled by schema rules. Ledger rows are generated exclusively through database procedures. For direct Postgres connections without PostgREST, `EKWO_ACT_AS_USER_ID` is strictly required, and the environment needs the `postgres` npm package installed.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://mcp.ekwo.ai/mcp`
- Environment variables: `SUPABASE_URL`, `SUPABASE_ANON_KEY`, `EKWO_EMAIL`, `EKWO_PASSWORD`, `EKWO_ACCESS_TOKEN`, `EKWO_DB_URL`, `EKWO_ACT_AS_USER_ID`, `EKWO_EINVOICE_DIRECTORY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: PostgreSQL, Supabase

## Install

### Claude Code (native platform)

1. **Platform CLI: remote server**
```bash
claude mcp add --transport http mcp https://mcp.ekwo.ai/mcp
```

2. **Platform CLI**
```bash
claude mcp add --env SUPABASE_URL=<SUPABASE_URL> --env SUPABASE_ANON_KEY=<SUPABASE_ANON_KEY> --env EKWO_EMAIL=<EKWO_EMAIL> --env EKWO_PASSWORD=<EKWO_PASSWORD> --env EKWO_ACCESS_TOKEN=<EKWO_ACCESS_TOKEN> --transport stdio mcp -- npx -y @ekwo-ai/mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add mcp --url https://mcp.ekwo.ai/mcp
```

2. **Platform CLI**
```bash
codex mcp add mcp --env SUPABASE_URL=<SUPABASE_URL> --env SUPABASE_ANON_KEY=<SUPABASE_ANON_KEY> --env EKWO_EMAIL=<EKWO_EMAIL> --env EKWO_PASSWORD=<EKWO_PASSWORD> --env EKWO_ACCESS_TOKEN=<EKWO_ACCESS_TOKEN> -- npx -y @ekwo-ai/mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp": {
            "url": "https://mcp.ekwo.ai/mcp"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@ekwo-ai/mcp"
            ],
            "env": {
                "SUPABASE_URL": "<SUPABASE_URL>",
                "SUPABASE_ANON_KEY": "<SUPABASE_ANON_KEY>",
                "EKWO_EMAIL": "<EKWO_EMAIL>",
                "EKWO_PASSWORD": "<EKWO_PASSWORD>",
                "EKWO_ACCESS_TOKEN": "<EKWO_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. 3 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp": {
            "type": "http",
            "url": "https://mcp.ekwo.ai/mcp"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@ekwo-ai/mcp"
            ],
            "env": {
                "SUPABASE_URL": "<SUPABASE_URL>",
                "SUPABASE_ANON_KEY": "<SUPABASE_ANON_KEY>",
                "EKWO_EMAIL": "<EKWO_EMAIL>",
                "EKWO_PASSWORD": "<EKWO_PASSWORD>",
                "EKWO_ACCESS_TOKEN": "<EKWO_ACCESS_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. 3 more environment variables are in the server README

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http mcp https://mcp.ekwo.ai/mcp
```

2. **Platform CLI**
```bash
gemini mcp add -e SUPABASE_URL=<SUPABASE_URL> -e SUPABASE_ANON_KEY=<SUPABASE_ANON_KEY> -e EKWO_EMAIL=<EKWO_EMAIL> -e EKWO_PASSWORD=<EKWO_PASSWORD> -e EKWO_ACCESS_TOKEN=<EKWO_ACCESS_TOKEN> mcp npx -y @ekwo-ai/mcp
```
Replace <…> with your own values. 3 more environment variables are in the server README

## When to use it
- generate and issue customer invoices directly through an AI agent
- match incoming bank payments against open transactions
- calculate VAT liabilities and assemble tax return drafts
- audit general ledger balances under row level security

## Example prompts
- Review the ledger for last month and list all unmatched bank deposits.
- Draft a sales invoice for Acme Corp covering the recent consulting work.
- Prepare the preliminary VAT return using our posted transactions.

## Similar
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [CCXT](https://affpapa.org/en/nevibecode/mcp/ccxt.md) — MCP server · ★ 44583
- [Finance Toolkit](https://affpapa.org/en/nevibecode/mcp/finance-toolkit.md) — MCP server · ★ 5458
- [EdgarTools](https://affpapa.org/en/nevibecode/mcp/edgartools.md) — MCP server · ★ 2814
- [LetsFG — Flights & Hotels](https://affpapa.org/en/nevibecode/mcp/letsfg-flights-hotels.md) — MCP server · ★ 2188
- [AutoTS](https://affpapa.org/en/nevibecode/mcp/autots.md) — MCP server · ★ 1434

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
