Storno CLI
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., "@Storno CLIShow me my latest 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.
Storno CLI — MCP Server
A Model Context Protocol (MCP) server that exposes the entire Storno.ro e-invoicing API as AI-callable tools. Enables Claude Code, Cursor, Windsurf, and any MCP-compatible AI assistant to manage invoices, clients, companies, ANAF e-Factura, and more.
Features
237 tools covering all Storno.ro API endpoints
Full invoice lifecycle: create, issue, submit to ANAF, email, download PDF/XML
Proforma invoices, recurring invoices, delivery notes, credit notes
Client & product catalog, payment tracking, VAT rates
ANAF e-Factura integration (sync, token management, message retrieval)
Multi-company support with company switching
Automatic JWT token refresh
Webhooks, API keys, team member management
Exchange rates (BNR), reports, exports
Related MCP server: fiken-mcp
Quick Start
Hosted Server (recommended)
Storno hosts a public MCP server at https://mcp.storno.ro/mcp with OAuth authentication — no API keys or tokens to manage.
Visit mcp.storno.ro for setup instructions and a one-click "Add to Claude" button.
Claude (claude.ai):
Copy the URL:
https://mcp.storno.ro/mcpClick "Add" and paste the URL
Authorize via OAuth
Claude Code:
claude mcp add storno --transport http https://mcp.storno.ro/mcpCursor / Windsurf:
{
"mcpServers": {
"storno": {
"url": "https://mcp.storno.ro/mcp"
}
}
}Claude Desktop:
{
"mcpServers": {
"storno": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.storno.ro/mcp"]
}
}
}Self-hosted / Token-based Setup
If you prefer to use a JWT token directly (e.g. for self-hosted Storno instances):
1. Install
npm install -g storno-cliOr use directly with npx — no install needed.
2. Configure for Claude Code
Add to your project's .claude/settings.json or global ~/.claude/settings.json:
{
"mcpServers": {
"storno": {
"command": "npx",
"args": ["-y", "storno-cli"],
"env": {
"STORNO_TOKEN": "your-jwt-token",
"STORNO_COMPANY_ID": "your-company-uuid"
}
}
}
}3. Configure for Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"storno": {
"command": "npx",
"args": ["-y", "storno-cli"],
"env": {
"STORNO_TOKEN": "your-jwt-token",
"STORNO_COMPANY_ID": "your-company-uuid"
}
}
}
}4. Configure for Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"storno": {
"command": "npx",
"args": ["-y", "storno-cli"],
"env": {
"STORNO_TOKEN": "your-jwt-token",
"STORNO_COMPANY_ID": "your-company-uuid"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| No |
| API base URL |
| No* | — | JWT access token |
| No | — | JWT refresh token (for auto-renewal) |
| No* | — | Default company UUID |
| No | — | Email for auto-login (if no token) |
| No | — | Password for auto-login (if no token) |
| No | — | If set, starts Streamable HTTP transport on this port |
| No |
| HTTP bind address (used with |
* You can authenticate at runtime using the auth_login tool instead.
Authentication
Three ways to authenticate:
Option A: Pre-configured token (recommended for production)
Set STORNO_TOKEN in your MCP server environment config.
Option B: Auto-login on startup
Set STORNO_EMAIL and STORNO_PASSWORD. The server will automatically log in when it starts and keep the token refreshed.
Option C: Interactive login via AI
Ask the AI: "Log me in to Storno with email user@example.com and password mypassword"
The AI will call the auth_login tool, which stores the token in memory for the session.
Multi-Company Support
All company-scoped tools require a company context. Three ways to provide it:
Environment variable: Set
STORNO_COMPANY_IDin your MCP configSelect command: Ask the AI to call
companies_selectwith a company UUIDPer-request override: Every company-scoped tool accepts an optional
companyIdparameter
Example AI conversation:
You: List my companies
AI: [calls companies_list] You have 2 companies:
- ABC SRL (uuid: 550e8400...)
- XYZ SRL (uuid: 661f9500...)
You: Switch to XYZ SRL
AI: [calls companies_select with uuid] Done, now using XYZ SRL
You: Show me recent invoices
AI: [calls invoices_list — automatically uses XYZ SRL context]Tool Reference
See TOOLS.md for the complete reference of all 237 tools with descriptions and parameters.
Tool Categories
Category | Tools | Description |
| 7 | Login, register, refresh tokens, profile management |
| 8 | Company CRUD + context switching + ANAF settings |
| 32 | Full invoice lifecycle (create → issue → submit → email → PDF/XML) |
| 10 | Client management (synced from e-Factura) |
| 2 | Product catalog |
| 3 | Payment recording and tracking |
| 12 | Proforma lifecycle (create → send → accept/reject → convert) |
| 10 | Recurring invoice schedules |
| 18 | Delivery note lifecycle + status management |
| 13 | Fiscal receipts (bonuri fiscale) + conversion to invoices |
| 4 | VAT rate CRUD |
| 4 | Bank account CRUD |
| 5 | Invoice number series management |
| 8 | Supplier management |
| 2 | BNR exchange rates + currency conversion |
| 4 | Email template CRUD |
| 8 | ANAF token management + e-Factura sync + validation |
| 2 | e-Factura message retrieval |
| 6 | Multi-country e-invoicing (EU-wide) |
| 1 | Dashboard statistics |
| 1 | Invoice defaults (currencies, units, VAT rates) |
| 3 | Organization team members |
| 4 | Team invitations |
| 6 | Notification management + preferences |
| 10 | Webhook CRUD + testing + delivery logs |
| 5 | API token management |
| 7 | VAT reports + financial reports |
| 1 | Export file downloads |
| 8 | CSV/XLSX/XML import for clients, products, invoices |
| 8 | Bank reconciliation (borderou) |
| 6 | Backup creation + restore |
| 3 | System administration (requires admin role) |
| 4 | License key management |
| 4 | PDF invoice template customization |
| 5 | File storage configuration |
| 3 | Export to accounting formats |
| 2 | Company registry lookups |
| 1 | CPV code lookup |
| 1 | NC code lookup |
| 2 | System health + version info |
Common AI Workflows
Create and send an invoice
You: Create an invoice for client Acme SRL, 10 hours web development at 100 RON/hour, due in 30 days
AI: [calls clients_list to find Acme SRL]
[calls invoices_create with clientId, lines, dates]
[calls invoices_issue to mark as issued]
[calls invoices_email to send to client]
Invoice FAC-2024-042 created, issued, and emailed to contact@acme.roCheck ANAF sync status
You: What's the ANAF sync status for my company?
AI: [calls anaf_status]
Last sync: 2 hours ago, 156 invoices synced, token valid until March 16Generate a monthly report
You: Show me all invoices from January 2024
AI: [calls invoices_list with from=2024-01-01, to=2024-01-31]
Found 23 invoices, total: 45,230 RON
- 18 issued, 3 paid, 2 overdueHTTP Transport
By default, storno-cli uses stdio transport for local MCP clients. Set STORNO_HTTP_PORT to enable Streamable HTTP transport for remote access.
# Start HTTP server on port 3000
STORNO_TOKEN=your-token STORNO_COMPANY_ID=your-company-uuid \
STORNO_HTTP_PORT=3000 node dist/index.js
# Bind to all interfaces (for production behind a reverse proxy)
STORNO_HTTP_PORT=3000 STORNO_HTTP_HOST=0.0.0.0 node dist/index.jsThe server exposes a single /mcp endpoint supporting POST, GET, and DELETE per the MCP Streamable HTTP spec. Each client connection creates an isolated stateful session.
Initialize a session:
curl -X POST http://127.0.0.1:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# Response includes mcp-session-id headerCall a tool:
curl -X POST http://127.0.0.1:3000/mcp \
-H "Content-Type: application/json" \
-H "mcp-session-id: <session-id>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"system_health","arguments":{}}}'Development
npm run dev # Watch mode (recompile on changes)
npm run build # Production build
npm run start # Start MCP server (stdio)Architecture
storno-cli/
├── src/
│ ├── index.ts # Entry point — dispatches to stdio or HTTP transport
│ ├── server.ts # McpServer factory (creates server + registers all tools)
│ ├── http-server.ts # Streamable HTTP transport with session management
│ ├── config.ts # Environment configuration
│ ├── client.ts # HTTP client with JWT auth + auto-refresh
│ ├── tools/ # 40 tool domain files (237 tools total)
│ │ ├── auth.ts
│ │ ├── invoices.ts # Largest: 32 tools for full invoice lifecycle
│ │ ├── companies.ts
│ │ └── ... # 37 more domain files
│ └── utils/
│ ├── errors.ts # AI-readable error formatting
│ └── pagination.ts # Pagination helpers
├── dist/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
├── README.md # This file
└── TOOLS.md # Complete tool referenceRequirements
Node.js >= 20.0.0
npm
License
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
- Alicense-qualityDmaintenanceEnables integration with Fatture in Cloud to manage Italian electronic invoices through natural conversation, including creating, sending, and tracking invoices and financial data.18MIT
- AlicenseCqualityAmaintenanceEnables AI assistants to manage invoices, contacts, purchases, journal entries, and other accounting operations via the Fiken API.100141MIT
- Alicense-qualityDmaintenanceEnables AI assistants to interact with the SuperFaktura invoicing system for managing invoices, clients, and expenses via natural language.1Apache 2.0
- Alicense-qualityBmaintenanceEnables AI agents to issue Romania e-Factura electronic invoices (factura electronica) into the national ANAF/SPV system by building UBL 2.1 CIUS-RO XML and uploading it under the merchant's own ANAF access token.MIT
Related MCP Connectors
Romania e-Factura invoices for AI agents: build UBL 2.1 CIUS-RO, upload to ANAF/SPV, query.
Chilean DTE/SII invoicing — issue invoices, reconcile payments and manage clients with AI agents.
Chile DTE for AI agents - boleta/factura electronica via OpenFactura or LibreDTE. Stateless BYO.
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/stornoro/storno-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server