1. Conduid
  2. Agents
  3. Xiaoman
MCP server · Agents

Xiaoman

Xiaoman (小满) — a conversation-first, local-first personal finance AI agent · FastAPI + LangGraph + React · data 100% local · MIT

44Fair

Scored 5 hours ago · breakdown

About Xiaoman

Xiaoman is an MCP server published by badhope in the Agents category: xiaoman (小满) — a conversation-first, local-first personal finance AI agent · FastAPI + LangGraph + React · data 100% local · MIT.

The repository has 77 stars and 8 forks, with the last commit 4 hours ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/badhope/xiaoman

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Xiaoman

Powered by Claude · Grounded in docs

I know everything about Xiaoman. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 3 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.

1 check has not been run yet.

Releases

v2.0.0v2.0.0 · 10 Oct 2026[2.0.0] — 2026-10-09 Added devkit-doctor.py — CLI health check tool covering skills/scaffolds/mcp/hooks/env tests/test_devkit_doctor.py — self-contained integration tests scaffolds/scaffold-runner.py — flat-scaffold execution engine…

README

Xiaoman

A conversation-first personal finance assistant. One sentence to record an expense, check quotes, manage positions, run a health check, or get your morning report.

License Python FastAPI React LangGraph

简体中文 English
README.zh.md README.md (current)

Xiaoman is one of the 24 solar terms — the moment when grain is nearly, but not yet, full. Personal finance works the same way: save a little every day and let life fill up at its own pace.

What it is

A finance assistant that runs on your own machine, with conversation as the core interaction:

You say Xiaoman does
"coffee 28, taxi 32" Records two entries in one sentence
"salary 1w credited" Records income 10000 (supports 万/w/k and Chinese numerals)
"check CATL, add to watchlist if good" Quote → add to watchlist → visible on Market
"buy 100 shares of 600519" Opens a position at the current price (asks for cost when quotes are unavailable)
"sell half of 600519" Half-position sell, never an accidental full liquidation
"remember I pay rent 5000 next month" Stored in long-term memory, auto-referenced in answers
"generate today's morning report" Generated and archived

The other tabs (Overview / Holdings / Market / Ledger) are views of the conversation results, not duplicate form entries.

Core features

  • 100% local data: everything lives in a local SQLite database. Optional passphrase-protected encrypted backups (PBKDF2 + Fernet); the passphrase is never stored.
  • Never fabricates numbers: amounts, P&L and risk metrics are computed by a deterministic engine; the model only classifies and writes prose. At runtime the model only sees read-only tools.
  • Model-agnostic: unified access via LiteLLM — DeepSeek / Doubao / Qwen / Claude / OpenAI / Gemini, with automatic failover. Fully usable without any model configured.
  • Multi-agent orchestration: a LangGraph graph (supervisor pipeline), plus a "finance department mode" that splits one request into tickets, runs departments in parallel, and summarizes for approval.
  • MCP protocol: all finance tools are exposed as a standard MCP Server via fastmcp — Claude Code / Cursor can query your local data directly.
  • Long-term memory: mem0 handles preference extraction and updates across sessions.
  • 3-level quote fallback: Eastmoney → Sina → local snapshot, clearly labeled when offline.
  • PWA: installable on desktop and mobile.

Screenshots

Chat hub Overview
Chat hub Overview

More in docs/screenshots/ and docs/demo/.

Quick start

Requirements: Python 3.10+, Node.js 18+.

One-click (recommended)

scripts/dev.sh        # macOS / Linux — backend 8788 + frontend 5198
start.bat             # Windows

Manual

# Backend (run inside backend/)
cd backend
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env   # optional: fill LLM_* to enable a model
.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8788

# Frontend dev mode (/api proxied to 8788)
cd frontend
npm install && npm run dev    # http://127.0.0.1:5198

# Or production mode: build once, served by the backend on one port
cd frontend && npm run build  # then open http://127.0.0.1:8788

Docker

docker compose up -d --build   # single container, port 8787, volume xiaoman-data

A fresh database starts empty with chat-style onboarding; everything works without an AI key.

Tech stack

Layer Tech
Frontend React 19 + Vite + Tailwind 4 · ECharts · TanStack Table · PWA
Backend FastAPI + LangGraph multi-agent orchestration + deterministic engine
Data SQLite (aiosqlite + WAL) · encrypted backups (PBKDF2 + Fernet)
AI LiteLLM unified access · mem0 long-term memory · fastmcp
Quotes Eastmoney → Sina → local snapshot, 3-level fallback

Architecture

flowchart LR
    FE[React frontend, 5 tabs] --> API[FastAPI REST + SSE + static hosting]
    API --> G[LangGraph orchestration, supervisor pipeline]
    API --> D[Finance department mode, parallel tickets]
    G --> T[Tool layer, 17 deterministic tools]
    D --> T
    T --> K[Deterministic engine, single source of truth]
    T --> DB[(Local SQLite)]
    T --> Q[3-level quote fallback]
    G --> L[LiteLLM model access]
    G --> M[mem0 long-term memory]

Principle: the framework orchestrates; the engine computes. The model only appears at classification and finalization; any failure degrades to the deterministic path. Full architecture with diagrams: docs/architecture.md.

Repository layout

backend/app/
  main.py            FastAPI entry: REST + SSE + auth + static hosting
  db/                Data layer (domain modules): ledger / portfolio / budgets /
                     debts / goals / memory / history / audit / backup / users ...
  routes/            Routes: budgets / settings / goals / market / import ...
  agents/            Multi-agent config: supervisor / bookkeeping / portfolio
  agent_graph.py     LangGraph graph: supervisor + specialized nodes + routes
  department.py      Finance department mode: tickets → parallel → summary
  analysis.py        Deterministic engine: positions / cashflow / debt / risk
  tools.py           Agent tool layer: 17 function-calling tools
  quotes.py          Quotes: Eastmoney → Sina → snapshot fallback + cache
  nlparse.py         One-sentence bookkeeping: rule engine + AI fallback
  llm.py             LiteLLM unified model access
  mem.py             mem0 long-term memory wrapper
  mcp_server.py      MCP Server exposing finance tools
  backup.py          Local encrypted backup, passphrase never stored
frontend/src/
  App.tsx            5-tab layout (top bar on desktop / bottom bar on mobile)
  components/        ChatView / Dashboard / HoldingsView / MarketView ...
  lib/               api / store / i18n (zh+en) / charts / format
docs/                Deploy / config / workflow / architecture / planning

Docs

Doc Contents
Quick start Up and running in 5 minutes
Deployment Local / Docker / external access / backup migration (中文)
Configuration Env vars + settings + AI endpoint cheat-sheet (中文)
Workflows Every conversation pattern (中文)
Architecture Mermaid diagrams + department mode + data reliability
Development guide Code map + add-tool/setting tutorials + release flow (中文)
Roadmap v3 direction → detailed plan
Planning archive Reviews / differentiation / research docs
Changelog Full version history

Tests

# Backend: 486 tests (engine / quote fallback / agent loop / LangGraph / API / backup / MCP ...)
cd backend && .venv/bin/python -m pytest tests -q
cd backend && .venv/bin/python -m ruff check app tests

# Frontend: tsc + build + 86 unit tests + 15 Playwright e2e specs
cd frontend && npm run build
cd frontend && npm run test:e2e

CI covers backend ruff + pytest and frontend tsc + build.

Data & privacy

  • All personal data lives in local SQLite; quotes use public Eastmoney/Sina endpoints; model calls go only to the endpoint you configured.
  • Encrypted backups recommended; plaintext export shows a strong warning. No telemetry, no tracking, no third-party analytics.
  • Auth: when API_TOKEN is set, all /api/* require Bearer or ?token=; without a token, only localhost and the ALLOWED_HOSTS allowlist are accepted.

Disclaimer

Everything this software outputs (health checks, reports, AI answers, suggestions) is for reference only and does not constitute investment advice. Markets carry risk.

Contributing

Topics: personal-finance finance-assistant ai-agent langgraph fastapi react sqlite local-first mcp pwa

README fetched from the repository 3 hours ago. The original is authoritative.

Questions

About Xiaoman

How do I install Xiaoman?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Xiaoman safe to use with an AI agent?

Its trust score is 44 out of 100 (fair). It passes 5 of the 5 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Xiaoman still maintained?

Yes — the latest release is v2.0.0 (10 Oct 2026), and the last commit was 4 hours ago. The repository has 77 stars.