household-account-book
Headless-система персонального учёта для ИИ-агентов
Headless-система персонального учёта, предназначенная специально для использования ИИ-агентами. В ней нет графического интерфейса для человека; вместо этого все взаимодействия выполняются через REST API или stdio-интерфейс сервера Model Context Protocol (MCP).
Архитектура системы
Язык: Python 3.12+
База данных: SQLite (один файл, локальное хранилище)
API-сервер: FastAPI (с автоматической документацией OpenAPI по адресу
/docs)MCP-сервер: Python
mcpSDK, предоставляющий инструменты через stdio-транспортРазвёртывание: Docker и Docker Compose
Related MCP server: accounting-mcp-server
Структура папок
AI/
├── app/
│ ├── __init__.py
│ ├── db.py # SQLAlchemy SQLite connection & tables setup
│ ├── models.py # Pydantic schemas for data validation
│ ├── crud.py # Database operations (CRUD, reports, config)
│ ├── main.py # FastAPI API endpoints
│ └── mcp_server.py # MCP (Model Context Protocol) server configuration
├── tests/
│ ├── __init__.py
│ └── test_core.py # Complete Pytest unit tests suite
├── Dockerfile # Multi-stage optimized Docker file
├── docker-compose.yml # Docker compose configuration (Port 8900, volume mount)
├── .dockerignore
├── pyproject.toml # Poetry/Pip project dependencies
├── SCHEMA.md # Database schema reference for AI models
└── README.md # This manualНачало работы (локальная установка)
1. Установка зависимостей
Убедитесь, что установлен Python 3.12+. Клонируйте репозиторий и выполните:
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install required packages
pip install fastapi uvicorn sqlalchemy pydantic mcp
# Install development packages for tests
pip install pytest httpx2. Запуск REST API-сервера
Запустите сервер FastAPI на порту 8900:
uvicorn app.main:app --host 0.0.0.0 --port 8900 --reloadВы можете просмотреть интерактивную документацию API по адресу: http://localhost:8900/docs
3. Запуск MCP-сервера
Запустите MCP-сервер локально через стандартный ввод/вывод (stdio):
python -m app.mcp_server4. Запуск модульных тестов
Чтобы выполнить набор тестов, запустите:
pytestРазвёртывание (настройка Docker)
Вы можете собрать и развернуть приложение на удалённом или локальном хосте с помощью Docker и Docker Compose (протестировано на Ubuntu 24.04 LTS с Docker 29.x).
1. Запуск контейнера
Запустите контейнер в фоновом режиме (detached mode). База данных SQLite будет постоянно храниться внутри именованного тома accounting-data по пути /data/accounting.db в контейнере.
docker compose up -d --build2. Проверка работоспособности сервиса
Убедитесь, что сервис работает и находится в здоровом состоянии:
# Verify REST API
curl http://localhost:8900/health
# Show container status & health status
docker psПодключение ИИ-агентов (настройка MCP)
Чтобы позволить LLM-клиентам (например, Claude Desktop) напрямую взаимодействовать с вашей системой учёта, добавьте сервер в файл конфигурации вашего клиента.
Для локального запуска (native)
Добавьте это в файл конфигурации Claude Desktop (обычно он находится по пути %APPDATA%\Claude\claude_desktop_config.json в Windows или ~/Library/Application Support/Claude/claude_desktop_config.json в macOS):
{
"mcpServers": {
"personal-accounting": {
"command": "/path/to/your/venv/bin/python",
"args": ["-m", "app.mcp_server"],
"cwd": "/path/to/your/project/directory",
"env": {
"DATABASE_URL": "sqlite:////path/to/your/project/directory/accounting.db"
}
}
}
}Для развёртывания в Docker
Если сервер учёта работает внутри Docker-контейнера, настройте Claude Desktop на выполнение команд внутри активного контейнера:
{
"mcpServers": {
"personal-accounting-docker": {
"command": "docker",
"args": [
"exec",
"-i",
"accounting-api",
"python",
"-m",
"app.mcp_server"
]
}
}
}Примеры использования API (команды curl)
1. Создание нового счёта
curl -X POST http://localhost:8900/accounts \
-H "Content-Type: application/json" \
-d '{"name": "Wallet Cash", "type": "cash", "balance": 5000}'curl -X POST http://localhost:8900/accounts \
-H "Content-Type: application/json" \
-d '{"name": "Savings Bank", "type": "bank", "balance": 150000}'2. Список всех счетов
curl -X GET http://localhost:8900/accounts3. Запись расхода (ID 1 означает Wallet Cash)
curl -X POST http://localhost:8900/transactions \
-H "Content-Type: application/json" \
-d '{
"date": "2026-08-02",
"amount": 850,
"type": "expense",
"category": "Food",
"description": "Lunch at restaurant",
"account_id": 1,
"tags": ["lunch", "outing"]
}'4. Запись перевода (переместить 2000 иен со счёта Savings Bank на счёт Wallet Cash)
Предположим, ID счёта Savings Bank равен 2, а ID счёта Wallet Cash равен 1.
curl -X POST http://localhost:8900/transfers \
-H "Content-Type: application/json" \
-d '{
"date": "2026-08-02",
"amount": 2000,
"from_account_id": 2,
"to_account_id": 1,
"description": "ATM withdrawal to wallet"
}'5. Получение сводных отчётов
Получите ежемесячный отчёт о ваших доходах, расходах и разбивке по категориям/счетам:
curl -X GET "http://localhost:8900/report?frequency=monthly"6. Обновление транзакции (исправление ошибок)
Частичное обновление — изменяются только те поля, которые вы указали. Остатки на счетах пересчитываются автоматически:
# Change the amount of transaction ID 1 from 850 to 950
curl -X PUT http://localhost:8900/transactions/1 \
-H "Content-Type: application/json" \
-d '{"amount": 950}'7. Удаление транзакции (отмена ошибки)
Удаление транзакции отменяет её влияние на остаток счёта (доход вычитается обратно, расход прибавляется обратно):
curl -X DELETE http://localhost:8900/transactions/18. Удаление перевода
Удаление перевода отменяет его влияние на остатки обоих счетов:
curl -X DELETE http://localhost:8900/transfers/19. Удаление счёта
Удаление счёта отклоняется (400), пока на него ссылаются транзакции или переводы. Сначала удалите их, затем удалите счёт:
curl -X DELETE http://localhost:8900/accounts/1This server cannot be deployed
Maintenance
Related MCP Connectors
Headless API-first double-entry accounting & bookkeeping engine. 84 MCP tools over HTTP.
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
Personal finance ledger for AI agents — query spending, track bills, forecast cash flow.
- ManiloOAuthapp.manilo
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceDouble-entry accounting service for personal finance with MCP tools, enabling AI agents to manage accounts, transactions, budgets, and analytics via PostgreSQL.-
- -licenseNot gradedqualityNot gradedmaintenanceA personal accounting MCP server that enables AI assistants to record and query financial transactions through natural language, supporting income/expense tracking, balance inquiry, and monthly summaries.-
- AlicenseNot gradedqualityBmaintenanceDouble-entry accounting ledger MCP server for autonomous agents that enables creating accounts, posting journal entries, and generating financial reports.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for Firecent, a personal finance app, enabling AI agents to read and manage financial data through REST API, including accounts, records, categories, and queries.-