bokio-mcp
Enables interaction with the Bokio accounting API for managing journal entries, invoices, customers, items, and more, with read-only mode by default for safety.
README
bokio-mcp
Model Context Protocol server for the Bokio accounting API.
- Auth: private self-serve Bearer token (single company). No OAuth.
- Scope: journal entries, invoices, customers, items, uploads, chart of accounts, fiscal years, SIE export.
- Safety: all write operations are blocked unless
BOKIO_ALLOW_WRITES=1.
Built for driving a Swedish AB's books alongside a YNAB budget. Read-only by default so it is safe to point at live accounting data.
Prerequisites
- A Bokio private API token: Bokio → Inställningar → API Tokens (free up to 5,000 requests/month).
- Your company id — copy it from the Bokio browser URL (
.../companies/<companyId>/...). - Node.js ≥ 22.13 and pnpm (
corepack enable).
Install & build (local)
git clone https://github.com/diblaze/bokio-mcp.git ~/git/bokio-mcp
cd ~/git/bokio-mcp
pnpm install
pnpm run build # → dist/
pnpm test # mocked unit tests
pnpm run smoke # MCP handshake, asserts tools register
pnpm run lint # biome check (lint + format)
Configure in Claude Code
Add to ~/.claude.json under mcpServers (or use claude mcp add):
{
"mcpServers": {
"bokio": {
"command": "node",
"args": ["/home/denis/git/bokio-mcp/dist/index.js"],
"env": {
"BOKIO_TOKEN": "${BOKIO_TOKEN}",
"BOKIO_COMPANY_ID": "your_company_id",
"BOKIO_ALLOW_WRITES": ""
}
}
}
}
Leave BOKIO_ALLOW_WRITES empty for read-only. Set it to 1 only when you intend to mutate the books.
Do not hardcode the token in a committed file. Use
${BOKIO_TOKEN}env expansion, matching how the YNAB MCP token is handled.
Environment
| Var | Required | Purpose |
|---|---|---|
BOKIO_TOKEN |
yes (at call time) | Private Bearer token |
BOKIO_COMPANY_ID |
default company | Omit a tool's companyId to use this |
BOKIO_ALLOW_WRITES |
no | 1/true/yes/on enables writes; otherwise blocked |
BOKIO_DOWNLOAD_DIR |
no | Confines SIE/upload downloads to this dir (rejects path traversal) |
BOKIO_BASE_URL |
no | Defaults to https://api.bokio.se/v1 |
Tools
Meta: bokio_company_info, bokio_list_fiscal_years, bokio_get_fiscal_year, bokio_chart_of_accounts, bokio_get_account, bokio_download_sie
Journal: bokio_list_journal_entries (from/to/query), bokio_get_journal_entry, bokio_create_journal_entry (write), bokio_reverse_journal_entry (write)
Invoices: bokio_list_invoices, bokio_get_invoice, bokio_create_invoice (write), bokio_update_invoice (write), bokio_delete_invoice (write), bokio_publish_invoice (write), bokio_record_invoice (write), bokio_create_invoice_payment (write)
Customers: bokio_list_customers, bokio_get_customer, bokio_create_customer (write), bokio_update_customer (write)
Items: bokio_list_items, bokio_get_item, bokio_create_item (write), bokio_update_item (write)
Uploads: bokio_list_uploads, bokio_get_upload, bokio_upload_file (write), bokio_download_upload
Escape hatch: bokio_raw_get — GET any Bokio path (read-only).
Notes
- Journal entries are double-entry: debit total must equal credit total.
- SIE download is great for reconciling the AB ledger against an external budget.
[Preview]Bokio endpoints (supplier-invoices, suppliers, tag-groups) are not yet wrapped; reach them viabokio_raw_get.- API reference: https://docs.bokio.se · specs: https://github.com/bokio/bokio-api
Contributing
main is protected — external changes land via pull request.
- Fork, branch, commit.
- Ensure
pnpm exec biome ci,pnpm run typecheck,pnpm test,pnpm run build, andpnpm run smokeall pass (CI runs the same on Node 22). - Open a PR against
main. CI must be green and a maintainer (@diblaze, perCODEOWNERS) must approve before merge.
Toolchain: TypeScript + pnpm, Biome for lint/format, Vitest for tests.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.