Skip to main content
Glama
dht-net

household-account-book

by dht-net

Headless-система персонального учёта для ИИ-агентов

Headless-система персонального учёта, предназначенная специально для использования ИИ-агентами. В ней нет графического интерфейса для человека; вместо этого все взаимодействия выполняются через REST API или stdio-интерфейс сервера Model Context Protocol (MCP).

Архитектура системы

  • Язык: Python 3.12+

  • База данных: SQLite (один файл, локальное хранилище)

  • API-сервер: FastAPI (с автоматической документацией OpenAPI по адресу /docs)

  • MCP-сервер: Python mcp SDK, предоставляющий инструменты через 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 httpx

2. Запуск 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_server

4. Запуск модульных тестов

Чтобы выполнить набор тестов, запустите:

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 --build

2. Проверка работоспособности сервиса

Убедитесь, что сервис работает и находится в здоровом состоянии:

# 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/accounts

3. Запись расхода (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/1

8. Удаление перевода

Удаление перевода отменяет его влияние на остатки обоих счетов:

curl -X DELETE http://localhost:8900/transfers/1

9. Удаление счёта

Удаление счёта отклоняется (400), пока на него ссылаются транзакции или переводы. Сначала удалите их, затем удалите счёт:

curl -X DELETE http://localhost:8900/accounts/1
F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    C
    maintenance
    Double-entry accounting service for personal finance with MCP tools, enabling AI agents to manage accounts, transactions, budgets, and analytics via PostgreSQL.
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
  • F
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that gives AI agents structured access to a Beancount personal finance ledger.
    1
  • A
    license
    Not graded
    quality
    A
    maintenance
    Double-entry accounting ledger MCP server for autonomous agents that enables creating accounts, posting journal entries, and generating financial reports.
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

View all MCP Connectors

Latest Blog Posts

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/dht-net/household-account-book'

If you have feedback or need assistance with the MCP directory API, please join our Discord server