Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Canhoto

БесплатноНе проверен

Local-first personal finance engine for statement parsing, safe agent workflows, and monthly PDF summaries.

GitHubEmbed

Описание

Local-first personal finance engine for statement parsing, safe agent workflows, and monthly PDF summaries.

README

Canhoto keeps your bank and card statement data on your computer. It helps you parse statements, categorize spending, review uncertain items, and export a monthly PDF.

Using an AI agent? Connect canhoto-mcp. It gives the agent a safe, bounded workflow for parsing statements, reviewing and categorizing expenses, viewing monthly totals, and exporting reports. It never gives the agent SQL access or a full ledger dump. Use the CLI for the same workflow by hand.

Package canhoto
CLI canhoto
MCP canhoto-mcp
Data ~/.canhoto or $CANHOTO_DATA_DIR

Install

Install a release:

uv tool install canhoto

Or run this repository locally:

uv sync
uv run canhoto --help

Create the local data directory:

canhoto init
canhoto doctor

How it works

flowchart TD
  A[Statement PDF or text] --> B[Parser]
  B --> C[Ingest]
  C --> D[(Local SQLite ledger)]
  D --> E[Run category rules]
  E --> F[Review uncertain items]
  F --> G[Apply categories or save merchant memory]
  G --> H[Monthly breakdown]
  H --> I[Summary PDF]

Parsers only extract statement rows. Canhoto core handles categories, merchant memory, reports, and exports.

Create a parser

Canhoto does not ship bank-specific parsers. Create one for your statement:

canhoto parsers scaffold --id my_bank_card --type card --institution my_bank

Edit ~/.canhoto/parsers/my_bank_card.py, then test and enable it:

canhoto parsers test --id my_bank_card --file ~/statements/sample.pdf
canhoto parsers enable --id my_bank_card

A parser must successfully extract transactions before it can be enabled. See examples/parsers/ for a small example.

Process a month

# Ingest statements.
canhoto ingest ~/statements/*.pdf

# Apply category rules and remembered merchant categories.
canhoto categorize rules --month 2026-06

# Review anything still uncertain.
canhoto review --month 2026-06 --json

# See income, expenses, and category totals.
canhoto breakdown --month 2026-06

# Create a local PDF report.
canhoto export pdf 2026-06

To remember a category for later matching merchants:

canhoto categorize merchant --key CURSOR --category Subscriptions

The PDF is written to ~/.canhoto/exports/2026-06-summary.pdf by default. It shows totals by category and top normalized merchants within each category. It never contains a full transaction table or raw statement descriptions.

PDF profiles

Choose a built-in style:

canhoto export pdf 2026-06 --profile canhoto
canhoto export pdf 2026-06 --profile modern --output ~/Documents/2026-06.pdf
canhoto export pdf 2026-06 --profile minimal
  • canhoto - receipt-style report with a category chart.
  • modern - clean report with metric cards and a category chart.
  • minimal - text-only report without a chart.

MCP

The CLI and MCP server use the same service layer. For agent-assisted use, start the MCP server and follow this flow:

statement_preview -> parser_* -> ingest -> run_rules -> review_batch -> set_categories -> month_breakdown -> export_pdf

MCP only exposes domain tools. It does not provide SQL access or full ledger dumps. To let an agent write parsers, add this to ~/.canhoto/config.json:

{ "agent_view": { "allow_parser_writes": true } }

Example MCP host configuration:

mcp_servers:
  canhoto:
    command: canhoto-mcp

CLI commands

canhoto init | doctor
canhoto parsers scaffold|test|enable|list
canhoto ingest <files...>
canhoto categorize rules --month YYYY-MM
canhoto categorize apply --file patches.json
canhoto categorize merchant --key KEY --category CAT
canhoto review --month YYYY-MM [--cursor] [--limit]
canhoto breakdown --month YYYY-MM
canhoto export pdf YYYY-MM [--profile canhoto|modern|minimal] [--output PATH]

Develop

uv sync --extra dev
uv run pytest -q
uv run ruff check src/canhoto tests
uv run mypy -p canhoto

Or use justfile with Just.

Privacy

Your statements and database stay in the data directory. Do not commit statements, tokens, database files, or ~/.canhoto.

from github.com/luabagg/canhoto

Установка Canhoto

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/luabagg/canhoto

FAQ

Canhoto MCP бесплатный?

Да, Canhoto MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Canhoto?

Нет, Canhoto работает без API-ключей и переменных окружения.

Canhoto — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Canhoto в Claude Desktop, Claude Code или Cursor?

Открой Canhoto на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

wenb1n-dev/SmartDB_MCP

A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim

wenb1n-devавтор: wenb1n-dev

Postgres Server

This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools

madhurprashавтор: madhurprash

Postgres

Query your database in natural language

Anthropicавтор: Anthropic

PostgreSQL

Read-only database access with schema inspection.

modelcontextprotocolавтор: modelcontextprotocol

Redis

Interact with Redis key-value stores.

modelcontextprotocolавтор: modelcontextprotocol

SQLite

Database interaction and business intelligence capabilities.

modelcontextprotocolавтор: modelcontextprotocol

mxcp

Open-source framework for building enterprise-grade MCP servers using just YAML, SQL, and Python, with built-in auth, monitoring, ETL and policy enforcement.

raw-labsавтор: raw-labs

tadas-github/a2asearch-mcp

MCP server to search 4,800+ MCP servers, AI agents, CLI tools and agent skills. Install: npx -y a2asearch-mcp. Ask Claude: "Find MCP servers for database access

tadas-githubавтор: tadas-github

julien040/anyquery

Query more than 40 apps with one binary using SQL. It can also connect to your PostgreSQL, MySQL, or SQLite compatible database. Local-first and private by desi

julien040автор: julien040

drakonkat/wizzy-mcp-tmdb

A MCP server for The Movie Database API that enables AI assistants to search and retrieve movie, TV show, and person information.

drakonkatавтор: drakonkat

Compare Canhoto with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории data