orcamento
Konversationsbudget – Core-Pipeline
System zur Erfassung von Ausgaben über natürliche Sprache, per Telegram,
unter Verwendung von Google Gemini (offizielle API, Modell über .env konfigurierbar,
standardmäßig gemini-3.6-flash) als Sprachmodell, orchestriert vom
Nanobot, mit Daten, die in Postgres gespeichert werden.
Dieses Dokument geht davon aus, dass Sie noch nie Docker verwendet haben und erklärt jeden Schritt, jeden Befehl und was Sie als Ergebnis von jedem erwarten können.
Inhaltsverzeichnis
Related MCP server: Expense Tracker MCP Server
1. Was Sie installiert haben müssen
Nur eine Sache auf Ihrem Rechner. Sie müssen Python, Postgres oder Nanobot nicht separat installieren – all das läuft in den Containern.
Docker Desktop (Windows/Mac) oder Docker Engine (Linux)
Windows oder Mac: Laden Sie Docker Desktop herunter und installieren Sie es unter https://www.docker.com/products/docker-desktop/ – öffnen Sie nach der Installation die Docker-Desktop-Anwendung und warten Sie, bis sie „Docker is running“ anzeigt (das Symbol wird grün/stabil in der Taskleiste).
Linux: Folgen Sie https://docs.docker.com/engine/install/ für Ihre Distribution und danach https://docs.docker.com/engine/install/linux-postinstall/, um
dockerohnesudoausführen zu können.
Überprüfen, ob alles korrekt ist
Öffnen Sie ein Terminal (PowerShell unter Windows, Terminal unter Mac/Linux) und führen Sie aus:
docker --version
docker compose versionSie sollten zwei Versionszeilen sehen, ohne Fehler.
2. Telegram-Bot-Token erhalten
Öffnen Sie Telegram (Handy oder Desktop) und suchen Sie in der Suche nach @BotFather. Es ist der offizielle Telegram-Bot zum Erstellen anderer Bots – stellen Sie sicher, dass er das verifizierte Abzeichen hat.
Senden Sie ihm:
/newbotEr fragt nach einem Namen für Ihren Bot. Er kann beliebig sein, z. B.:
Konversationsbudget.Danach fragt er nach einem Benutzernamen. Dieser muss in ganz Telegram eindeutig sein und muss auf „bot“ enden, z. B.:
budget_ihrname_bot.Wenn es klappt, antwortet BotFather mit einer Nachricht wie dieser:
Done! Congratulations on your new bot. You will find it at t.me/orcamento_seunome_bot. You can now add a description... Use this token to access the HTTP API: 7123456789:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Keep your token secure and store it safely...Kopieren Sie die gesamte Token-Zeile (das Format ist
Zahlen:Buchstaben_und_Zahlen). Sie fügen diese im nächsten Schritt in die.env-Datei ein.
Bewahren Sie dieses Token auf.
3. Gemini-API-Schlüssel erhalten
Der Nanobot verwendet die offizielle Google-Gemini-API als Sprachmodell.
Rufen Sie https://aistudio.google.com/api-keys auf und melden Sie sich mit Ihrem Google-Konto an.
Klicken Sie auf Create API key (Google erstellt automatisch ein Projekt).
Kopieren Sie den Schlüssel und fügen Sie ihn im nächsten Schritt in die
.env-Datei ein.
Zu den Kosten: Es wird keine Karte verlangt. Der Free-Tier deckt die Flash-/Flash-Lite-Modelle mit Limits für Anfragen pro Minute/Tag (~10 Anfragen/min und ~250–1.500 Anfragen/Tag je nach Modell) ab – ausreichend für dieses Projekt. Die Pro-Modelle sind kostenpflichtig. Offizielle Tabelle: https://ai.google.dev/gemini-api/docs/pricing
4. Die .env-Datei konfigurieren
Das Projekt enthält bereits eine Datei namens .env im Stammverzeichnis
(orcamento-conversacional/.env). Sie wird automatisch von Docker Compose gelesen –
Sie müssen nichts umbenennen.
Achtung: Dateien, die mit einem Punkt beginnen (.env), sind standardmäßig „versteckt“
im Windows-Explorer, im Mac-Finder und bei ls ohne Flags unter Linux/Mac. Verwenden Sie ls -la, um sie im Terminal zu sehen, oder öffnen Sie den Ordner im Texteditor.
Ersetzen Sie in der .env-Datei diese beiden Zeilen durch die tatsächlichen Werte:
TELEGRAM_TOKEN=coloque_seu_token_aqui ← token do BotFather (seção 2)
GEMINI_API_KEY=coloque_sua_chave_aqui ← chave do AI Studio (seção 3)Die Variable GEMINI_MODEL legt fest, welches Modell verwendet wird (Standard:
gemini-3.6-flash). Ändern Sie sie nur, wenn Sie ein anderes gültiges ID aus der offiziellen Liste verwenden möchten: https://ai.google.dev/gemini-api/docs/models
Die anderen Variablen (POSTGRES_PASSWORD, DATABASE_URL) haben bereits funktionierende Werte –
Sie müssen sie für Docker nicht ändern.
Speichern Sie die Datei.
5. Alles mit Docker starten
Öffnen Sie ein Terminal im Ordner orcamento-conversacional (dem mit
der Datei docker-compose.yml) und führen Sie aus:
docker compose up -d --buildWas dieser Befehl in Reihenfolge tut:
Schritt | Was passiert | Ungefähre Dauer |
1 | Lädt die Basis-Images (Postgres) aus dem Internet herunter | 1–3 Min (erstes Mal) |
2 | Baut ( | 2–4 Min (erstes Mal) |
3 | Startet Postgres und wendet | wenige Sekunden |
4 | Startet Nanobot und wartet, bis Postgres bereit ist | wenige Sekunden |
Es wird kein Modell auf Ihrem Rechner heruntergeladen oder ausgeführt: Gemini läuft in der Google-Cloud.
Das Flag -d („detached“) lässt alles im Hintergrund laufen. Wenn Sie später docker compose up -d (ohne --build) ausführen, startet es in Sekunden.
So erkennen Sie, ob alles geklappt hat
Führen Sie aus:
docker compose psSie sollten 2 Dienste sehen:
NAME IMAGE STATUS
orcamento_postgres postgres:16-alpine Up (healthy)
orcamento_nanobot ...nanobot UpÜberprüfen Sie auch die Nanobot-Logs – der MCP sollte verbunden erscheinen:
docker compose logs nanobotSuchen Sie nach Zeilen wie:
MCP: registered tool 'mcp_orcamento_registrar_despesa' from server 'orcamento'
MCP server 'orcamento': connected, 3 capabilities registered
✓ Health endpoint: http://127.0.0.1:18790/health
bot @seubot connectedWenn orcamento_nanobot als „Restarting“ erscheint oder aus der Liste verschwindet, sehen Sie den Abschnitt Häufige Probleme.
6. In Telegram testen
Suchen Sie in Telegram nach dem Benutzernamen des Bots, den Sie bei BotFather erstellt haben (z. B.
@budget_ihrname_bot) und öffnen Sie einen Chat mit ihm.Senden Sie
/start. Beim ersten Gespräch kann Nanobot einen Pairing-Code anfordern – er erscheint in den Logs (docker compose logs -f nanobot, Zeile „Generated pairing code ...“). Senden Sie diesen Code an den Bot.Senden Sie etwas wie:
Gastei 35 no almoço hojeNach einigen Sekunden sollte der Bot mit einer Bestätigung der Erfassung antworten, etwa:
Registrado: R$ 35,00 em alimentação (almoço).
Wenn der Bot nicht antwortet, sehen Sie den Abschnitt zu häufigen Problemen unten.
7. Befehle für den Alltag
Alle werden im Ordner orcamento-conversacional ausgeführt.
Logs von allem in Echtzeit anzeigen:
docker compose logs -f(Ctrl+C zum Beenden – das stoppt nur das Anzeigen der Logs, die Container laufen weiter.)
Nur die Nanobot-Logs anzeigen (am nützlichsten zum Debuggen von Gesprächen):
docker compose logs -f nanobotAlles stoppen (Daten bleiben erhalten):
docker compose downNach dem Stoppen wieder starten:
docker compose up -dNach dem Bearbeiten von SOUL.md, config.docker.json oder .env (kein Neubauen des Images nötig; Konfiguration und Prompts werden direkt in den Container gemountet):
docker compose up -d nanobot # recria o container aplicando o novo .envNach dem Bearbeiten von mcp_server/expense_tools.py oder db/connection.py (Neubauen erforderlich, da die MCP-venv im Image erstellt wird):
docker compose up -d --build nanobotAbsolut alles löschen, einschließlich der Datenbankdaten (nützlich, wenn etwas beschädigt ist und Sie von vorne beginnen möchten):
docker compose down -vIn die Datenbank gehen, um die erfassten Ausgaben manuell anzusehen:
docker exec -it orcamento_postgres psql -U orcamento -d orcamentoInnerhalb von psql probieren Sie:
SELECT * FROM despesas ORDER BY criado_em DESC LIMIT 10;Zum Verlassen von psql: \q und Enter eingeben.
Optionaler Abkürzung: Wenn Sie make installiert haben (Standard unter Mac/Linux), enthält das Projekt ein Makefile mit den häufigsten Befehlen: make up, make down, make logs, make restart, make ps.
8. Häufige Probleme und deren Lösung
Error: Environment variable 'GEMINI_API_KEY' referenced in config is not set
Die .env-Datei hat die Variable GEMINI_API_KEY nicht definiert. Öffnen Sie .env, stellen Sie sicher, dass die Zeile existiert (auch mit einem vorläufigen Wert) und führen Sie docker compose up -d nanobot erneut aus.
401, unauthorized oder invalid api key in den Nanobot-Logs
Die GEMINI_API_KEY ist falsch, widerrufen oder enthält ein zusätzliches Leerzeichen. Erstellen Sie einen neuen Schlüssel unter https://aistudio.google.com/api-keys und aktualisieren Sie .env.
429 oder Rate-Limit-/Quota-Fehler
Sie haben das Limit des Gemini-Free-Tiers erreicht (Anfragen pro Minute oder pro Tag). Optionen: einige Minuten warten, GEMINI_MODEL in .env auf ein Flash-Lite-Modell ändern (höhere Limits, z. B. gemini-3.1-flash-lite) und neu starten, oder Abrechnung in Ihrem Google-Cloud-Konto aktivieren.
model not found in den Logs
Der Wert von GEMINI_MODEL ist keine gültige ID der Gemini-API. Überprüfen Sie die offizielle Liste unter https://ai.google.dev/gemini-api/docs/models und korrigieren Sie .env.
Der Bot ruft die Tools nicht auf / sagt, er kann nicht erfassen
Führen Sie docker compose logs nanobot aus und suchen Sie nach:
MCP server 'orcamento': connected– wenn es nicht erscheint, gab es einen Fehler beim Starten des eingebetteten MCP-Servers; sehen Sie Fehler direkt über dieser Zeile;Max iterations (...) reached– bedeutet, dass das Modell in eine Schleife von Tool-Aufrufen geraten ist; das konfigurierbare Limit steht inagents.defaults.maxToolIterationsder Konfiguration.
Der Bot antwortet nicht in Telegram
Überprüfen Sie
docker compose logs -f nanobot, während Sie eine Nachricht senden – es sollte sofort eine Aktivität im Log erscheinen.Stellen Sie sicher, dass Sie das Pairing abgeschlossen haben (Abschnitt 6, Schritt 2).
docker compose version sagt „unknown flag“ oder existiert nicht
Sie haben das alte Docker Compose (v1, mit Bindestrich: docker-compose). Aktualisieren Sie Docker Desktop oder installieren Sie das Plugin docker-compose-plugin separat (Linux).
9. Was jede Projektdatei macht
orcamento-conversacional/
├── .env # SUAS credenciais (token do Telegram, chave
│ # do Gemini, senha do banco). Lido
│ # automaticamente pelo docker compose.
├── .env.example # Modelo de referência do .env, sem credenciais reais.
├── docker-compose.yml # Define os containers (postgres, nanobot) e
│ # a ordem de inicialização.
├── Makefile # Atalhos opcionais (make up, make logs, etc).
├── requirements.txt # Dependências Python do servidor MCP (mcp, psycopg2-binary).
│
├── db/
│ ├── schema.sql # Cria as tabelas usuarios, categorias, despesas.
│ │ # Aplicado automaticamente na 1ª subida do Postgres.
│ └── connection.py # Código Python que conecta no Postgres (pool de conexões)
│ # e resolve o usuário do Telegram para um id interno.
│
├── mcp_server/
│ ├── expense_tools.py # As "ferramentas" que o agente de IA usa:
│ │ # registrar_despesa, listar_despesas, resumo_por_categoria.
│ │ # Roda via stdio DENTRO do container do Nanobot.
│ └── Dockerfile # Imagem standalone opcional do MCP server (modo HTTP).
│
└── nanobot_config/
├── config.json # Config do Nanobot para rodar FORA do Docker
│ # (instalação local — ver seção 10). MCP via stdio
│ # relativo à raiz do projeto.
├── config.docker.json # Config do Nanobot para rodar DENTRO do Docker —
│ # é este que está ativo quando você usa `docker compose up`.
│ # MCP via stdio em /opt/mcpvenv (venv isolado).
├── Dockerfile # Como construir a imagem do Nanobot. Instala o
│ # nanobot + um venv isolado (/opt/mcpvenv) com as
│ # dependências do servidor MCP.
├── SOUL.md # As instruções que dizem ao agente COMO se comportar:
│ # como extrair valor/categoria/data de uma mensagem,
│ # quando pedir confirmação, o que ele NÃO deve fazer ainda.
├── AGENTS.md # Regras gerais de comportamento (idioma, uso de tools,
│ # tratamento de erro). Complementa o SOUL.md.
└── USER.md # Perfil do usuário — começa vazio, o Nanobot vai
preenchendo automaticamente com o tempo.Details zur aktuellen Architektur
Sprachmodell: Google Gemini über offizielle API (
providers.gemini). Das Modell wird durch die VariableGEMINI_MODELin.envgewählt (Standard:gemini-3.6-flash). Es läuft kein lokales Modell.MCP-Server: läuft als Unterprozess (stdio) im selben Nanobot-Container, unter Verwendung der isolierten venv
/opt/mcpvenv. Warum isoliert? Das Python-SDKmcp2.x, das von den Tools verwendet wird, kollidiert mit der Version (mcp>=1.26,<2), die der Nanobot selbst benötigt.Schutz vor Schleifen:
agents.defaults.maxToolIterations: 6begrenzt, wie viele aufeinanderfolgende Tool-Aufrufe der Agent in einem einzelnen Turn ausführen kann.
Warum gibt es zwei Nanobot-Konfigurationsdateien?
config.json (für lokale Ausführung außerhalb von Docker) verweist auf den MCP-Server über stdio relativ zum Projektstamm. config.docker.json (innerhalb von Docker verwendet) nutzt absolute Container-Pfade (/opt/mcp_server/...) und die venv /opt/mcpvenv/bin/python3.
10. Alternative: lokale Installation (ohne Docker)
Wenn Sie Postgres/Nanobot lieber direkt auf Ihrem Rechner statt in Containern ausführen möchten (mühsamer einzurichten, aber einfacher Zeile für Zeile zu debuggen):
10.1. Nur Postgres in Docker starten
docker compose up -d postgres(Das startet nur Postgres. Das schema.sql wird automatisch angewendet.)
10.2. Python-Abhängigkeiten des MCP-Servers installieren
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtExportieren Sie die Umgebungsvariablen im selben Terminal:
export DATABASE_URL=postgresql://orcamento:orcamento@localhost:5432/orcamento
export TELEGRAM_TOKEN=seu_token_aqui
export GEMINI_API_KEY=sua_chave_aqui
export GEMINI_MODEL=gemini-3.6-flash(Unter Windows PowerShell verwenden Sie $env:DATABASE_URL = "...", usw.)
10.3. Nanobot installieren und ausführen
pip install -U nanobot-aiKopieren Sie nanobot_config/config.json nach ~/.nanobot/config.json und nanobot_config/SOUL.md nach ~/.nanobot/workspace/SOUL.md (erstellen Sie den Ordner workspace, falls er nicht existiert).
Führen Sie vom Stammverzeichnis dieses Projekts aus (der Pfad zum MCP-Server in config.json ist relativ zu diesem Verzeichnis):
nanobot gateway --config nanobot_config/config.json --verboseOhne Telegram testen (nützlich zum Debuggen der Extraktion)
nanobot agent -c nanobot_config/config.json -m "Paguei 120 no mercado no cartão hoje"11. Nächste Schritte des Projekts
Testen Sie den End-to-End-Fluss mit echten Nachrichten und passen Sie die
SOUL.mdentsprechend den beobachteten Extraktionsfehlern an (informelle Sprache, Abkürzungen, mehrdeutige Werte).Fügen Sie das Tool für vollständige Berichte hinzu (Vergleich zwischen Zeiträumen, Entwicklung der Ausgaben).
Implementieren Sie die Empfehlungsebene: Konsolidieren Sie die Daten aus
resumo_por_categoriaund senden Sie sie über eine API an eine fortschrittliche LLM.Verknüpfen Sie die Ausgaben automatisch mit dem authentifizierten Telegram-Benutzer (heute wird die
telegram_idvom Modell beim Aufruf des Tools übergeben).
Hinweis zur Validierung
Die Pipeline wurde in realer Ausführung mit Docker validiert: Container starten, MCP über stdio mit den 3 registrierten Tools verbunden, und Einfügungen in Postgres über psql bestätigt. Die Syntax der docker-compose.yml und der Konfig-JSONs wird vor jedem Start überprüft.
Wenn etwas genau bei docker compose up hängen bleibt, beginnen Sie mit dem Abschnitt 8. Häufige Probleme.
This server cannot be installed
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
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage personal expenses through natural language conversations. Supports adding, searching, and analyzing transactions with automatic categorization and financial insights.3MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage personal expenses through natural conversation, supporting expense tracking, categorization, filtering, and financial summaries. Uses SQLite database to store expense records with full CRUD operations for comprehensive personal finance management.1
- FlicenseCqualityDmaintenanceEnables AI assistants to manage personal finances by storing, analyzing, and exporting expense data using a persistent PostgreSQL database. Supports adding/editing expenses, generating spending summaries, detecting top categories, and creating monthly reports.12
- FlicenseNot gradedqualityDmaintenanceEnables natural language management of personal expenses, including adding, listing, and summarizing expenses with local SQLite storage.
Related MCP Connectors
Personal finance by conversation: expenses, receipts, statement import, budgets, net worth.
Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
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/vinimeurer/orcamento-conversasional'
If you have feedback or need assistance with the MCP directory API, please join our Discord server