invoiceninja-mcp-server
Provides tools for interacting with Invoice Ninja v5 (self-hosted) API, enabling management of invoices, clients, payments, and other resources through CRUD operations, bulk actions, and reports.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@invoiceninja-mcp-serverlist my recent invoices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Invoice Ninja MCP Server
An MCP (Model Context Protocol) server for Invoice Ninja v5, connecting your self-hosted invoicing data to AI tools.
Quick start
Claude
bash (macOS/Linux):
INVOICENINJA_BASE_URL="https://invoicing.yourdomain.com"
INVOICENINJA_API_TOKEN="your-api-token"
claude mcp add invoiceninja \
--env INVOICENINJA_BASE_URL="$INVOICENINJA_BASE_URL" \
--env INVOICENINJA_API_TOKEN="$INVOICENINJA_API_TOKEN" \
-- npx -y @nightsquawktech/invoiceninja-mcp-serverPowerShell (Windows):
$INVOICENINJA_BASE_URL = "https://invoicing.yourdomain.com"
$INVOICENINJA_API_TOKEN = "your-api-token"
claude mcp add invoiceninja `
--env "INVOICENINJA_BASE_URL=$INVOICENINJA_BASE_URL" `
--env "INVOICENINJA_API_TOKEN=$INVOICENINJA_API_TOKEN" `
-- npx -y @nightsquawktech/invoiceninja-mcp-serverCursor
Or put the mcp.json block in .cursor/mcp.json, then verify with:
agent mcp list(The Cursor CLI manages configured servers but has no mcp add; install is via the button or mcp.json.)
VS Code
bash (macOS/Linux):
INVOICENINJA_BASE_URL="https://invoicing.yourdomain.com"
INVOICENINJA_API_TOKEN="your-api-token"
code --add-mcp '{"name":"invoiceninja","command":"npx","args":["-y","@nightsquawktech/invoiceninja-mcp-server"],"env":{"INVOICENINJA_BASE_URL":"'"$INVOICENINJA_BASE_URL"'","INVOICENINJA_API_TOKEN":"'"$INVOICENINJA_API_TOKEN"'"}}'PowerShell (Windows):
$INVOICENINJA_BASE_URL = "https://invoicing.yourdomain.com"
$INVOICENINJA_API_TOKEN = "your-api-token"
$config = @{
name = "invoiceninja"
command = "npx"
args = @("-y", "@nightsquawktech/invoiceninja-mcp-server")
env = @{
INVOICENINJA_BASE_URL = $INVOICENINJA_BASE_URL
INVOICENINJA_API_TOKEN = $INVOICENINJA_API_TOKEN
}
} | ConvertTo-Json -Compress
code --add-mcp $configCodex
bash (macOS/Linux):
INVOICENINJA_BASE_URL="https://invoicing.yourdomain.com"
INVOICENINJA_API_TOKEN="your-api-token"
codex mcp add invoiceninja \
--env INVOICENINJA_BASE_URL="$INVOICENINJA_BASE_URL" \
--env INVOICENINJA_API_TOKEN="$INVOICENINJA_API_TOKEN" \
-- npx -y @nightsquawktech/invoiceninja-mcp-serverPowerShell (Windows):
$INVOICENINJA_BASE_URL = "https://invoicing.yourdomain.com"
$INVOICENINJA_API_TOKEN = "your-api-token"
codex mcp add invoiceninja `
--env "INVOICENINJA_BASE_URL=$INVOICENINJA_BASE_URL" `
--env "INVOICENINJA_API_TOKEN=$INVOICENINJA_API_TOKEN" `
-- npx -y @nightsquawktech/invoiceninja-mcp-serverOr add it to ~/.codex/config.toml under [mcp_servers.invoiceninja].
mcp.json
Every environment variable the server reads, with recommended values:
{
"mcpServers": {
"invoiceninja": {
"command": "npx",
"args": ["-y", "@nightsquawktech/invoiceninja-mcp-server"],
"env": {
"INVOICENINJA_BASE_URL": "https://invoicing.yourdomain.com",
"INVOICENINJA_API_TOKEN": "your-api-token",
"INVOICENINJA_TIMEOUT_MS": "30000"
}
}
}
}File locations: .mcp.json in your project root (Claude Code), claude_desktop_config.json (Claude Desktop), .cursor/mcp.json (Cursor).
Related MCP server: QuickFile MCP Server
Configuration
Variable | Required | Default | Purpose |
| yes | Your Invoice Ninja v5 instance URL, no trailing slash, no | |
| yes | API token from Settings > Account Management > Integrations > API tokens, sent as | |
| no |
| HTTP timeout for API requests, minimum 1000 |
Security & write safety
Invoice Ninja credentials: create a dedicated API token under a restricted user (Settings > User Management) and grant that user only the permissions the assistant needs; the token inherits the user's permissions.
Read-only endpoints (186 GETs) execute freely.
Mutating endpoints (193 POST/PUT/DELETE operations) are refused unless the call carries
authorization_confirmed: trueand a non-emptyauthorization_notedescribing the user's explicit approval. There is no blanket write mode: authorization is per call.Before every mutating call, the server writes a JSON backup of the full request to a local temp directory. For updates and deletes it also fetches the current record first (best-effort) and stores it in the backup, so the change is reversible. The backup file path is returned in the tool response.
Any
{action}route (email, mark_paid, archive, restore, delete, clone) is treated as mutating even when registered as a GET, so destructive actions can never slip past the guard.All requests go directly from your machine to your Invoice Ninja instance; nothing passes through third parties.
The authorization gate is a guardrail, not a security boundary.INVOICENINJA_API_TOKEN in your MCP config is a real Invoice Ninja API token, and an AI agent with shell access can bypass the MCP tools and call the Invoice Ninja API directly with it. If you need hard read-only, enforce it at the source: issue the token under a user whose permissions are scoped down in Invoice Ninja itself.
Tools
Instead of one tool per endpoint (379 tools would drown any model's tool selection), this server ships a generated endpoint catalog behind three generic tools: list_endpoints to discover operations, describe_endpoint for the exact parameter spec of one operation, and call_endpoint to execute it. The pattern comes from mcp-core, the shared catalog runtime used across NightSquawk MCP servers.
list_endpoints List/filter all 379 endpoints by category, read-vs-mutating, or search term
describe_endpoint Full spec for one endpoint: method, path, params, body fields, mutating flag
call_endpoint Execute an endpoint; mutating calls need per-call authorization and are backed up firstAPI coverage
379 operations covered: 186 read-only, 193 mutating.
Category | Operations |
reports | 27 |
clients | 14 |
invoices | 12 |
quotes | 12 |
bank_integrations | 11 |
payments | 11 |
purchase_orders | 11 |
recurring_invoices | 11 |
users | 11 |
companies | 10 |
tasks | 10 |
bank_transactions | 9 |
credits | 9 |
expenses | 9 |
group_settings | 9 |
products | 9 |
projects | 9 |
recurring_expenses | 9 |
recurring_quotes | 9 |
vendors | 9 |
bank_transaction_rules | 8 |
company_gateways | 8 |
designs | 8 |
expense_categories | 8 |
payment_terms | 8 |
subscriptions | 8 |
tags | 8 |
task_status | 8 |
tokens | 8 |
webhooks | 8 |
client_gateway_tokens | 7 |
locations | 7 |
task_schedulers | 7 |
tax_rates | 7 |
auth | 6 |
activities | 4 |
charts | 4 |
imports | 3 |
migration | 3 |
postmark | 3 |
ping | 2 |
preview | 2 |
system_logs | 2 |
templates | 2 |
update | 2 |
claim_license | 1 |
company_ledger | 1 |
company_user | 1 |
connected_account | 1 |
documents | 1 |
emails | 1 |
export | 1 |
health_check | 1 |
logout | 1 |
one_time_token | 1 |
refresh | 1 |
scheduler | 1 |
search | 1 |
statics | 1 |
support | 1 |
webcron | 1 |
yodlee | 1 |
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
POST |
|
|
Contributing
Contributions and issues are welcome. Please open an issue first before submitting a PR.
License
AGPL-3.0: free for personal and open-source use. Organizations that cannot comply with the AGPL can purchase a commercial license, and hosted/managed versions are available. See COMMERCIAL.md or contact hello@nightsquawk.tech.
Copyright
For copyright concerns or takedown requests, contact hello@nightsquawk.tech.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -license-quality-maintenanceEnables AI assistants to interact with the Finizi B4B platform through 15 comprehensive tools for managing business entities, invoices, vendors, and products. Features secure JWT authentication, automatic retries, and full business-to-business workflow integration through natural language commands.Last updated
- Alicense-qualityAmaintenanceEnables AI assistants to interact with QuickFile UK accounting software, providing access to invoicing, client management, purchases, banking, and financial reporting through 40+ tools covering the complete QuickFile API.Last updated4MIT
- AlicenseAqualityCmaintenanceEnables AI to dynamically discover and invoke any Cin7 Core API endpoint using three generic tools (list, describe, invoke) plus a bug-report tool, covering the entire API surface without predefined endpoints.Last updated4MIT
- Flicense-qualityBmaintenanceProvides 29 tools for Claude to query and update FreshBooks directly, including invoices, clients, estimates, expenses, payments, timesheets, and reports.Last updated
Related MCP Connectors
Universal AI API Orchestrator — 1,554 tools, 96 services. One install.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NightSquawk/invoiceninja-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server