Skip to content
Conduit

mcp server

sextante

Personal-finance and FIRE calculators for the Spanish tax system, with an aggregated portfolio and a remote MCP server. MIT.

Fedeparg/sextantecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 29, 2026

Sextante

Personal-finance and FIRE calculators built around the Spanish tax system, plus an aggregated portfolio that your own AI assistant can read and write over MCP.

sextante.fpardo.net (Spanish) · English

License: MIT CI Next.js 16 React 19 NestJS 12 PostgreSQL TypeScript MCP

Project status

Sextante is live at sextante.fpardo.net. The full source code is released under the MIT licence, so anyone can study it and reuse it.

[!WARNING] Not financial advice. Sextante computes and explains; it never recommends. Every result is an estimate: check anything that matters with a professional and with the AEAT.

What it does

🧮 27 calculatorsCompound interest, FIRE with a Monte Carlo simulator over real market history, mortgages, deposits, dividends, DCA, inflation, budget... All run in the browser, need no account and keep every input in the URL.
🇪🇸 Spanish tax engineIRPF by the AEAT dual-scale method with the regional scale of each common-regime community, Social Security, payroll withholding, self-employed, wealth tax, gift tax and capital gains (FIFO).
📈 Aggregated portfolioPositions and lots across brokers, prices and FX, P&L, reconstructed history, Trade Republic import and progress towards a FIRE goal.
🧾 Tax-return reportSavings-base figures per tax year in euros at the ECB rate, the two-month rule, dividends and interest, double-taxation credit and the box of the Spanish return (modelo 100) for each figure.
🤖 Remote MCP server23 tools over Streamable HTTP with OAuth 2.1: the portfolio, the tax report and saved scenarios, plus two generic tools that run every calculator with the same @sextante/core code as the web.
📚 WikiArticles and one explainer per calculator, in Markdown, bilingual (es/en).

Screenshots

Architecture

A pnpm workspace with three packages that deploy as one stack:

PathWhat
/ (root)Next.js frontend (App Router) and BFF: rewrites() proxy /api/* and the OAuth routes to the API, so the browser only ever talks to one origin
apps/apiNestJS + Drizzle + PostgreSQL. Single source of truth for data and identity
packages/core@sextante/core: pure logic shared by both (calculators, projection engine, tax engine, FX, portfolio breakdown and goal)
flowchart LR
  B[Browser] --> W
  M[MCP client] --> W
  subgraph W[Next.js · BFF]
    UI[Calculators · Wiki · Portfolio UI]
  end
  W -- "/api/* · OAuth" --> A[NestJS API]
  A --> DB[(PostgreSQL)]
  UI -. imports .-> C[["@sextante/core"]]
  A -. imports .-> C

The calculators and the wiki work with the frontend alone; the API is needed for sign-in, the portfolio and MCP.

Running it locally

Requirements: Node 24 (see .nvmrc; 22.13 is the minimum), pnpm and Docker (for the API stack and the backend tests).

pnpm install
cp .env.example .env                     # frontend
pnpm dev                                 # http://localhost:3000

# Optional, for sign-in / portfolio / MCP:
cp apps/api/.env.example apps/api/.env
docker compose up -d --build             # postgres + one-shot migrate + api (:3001)

Day-to-day commands (each package is checked on its own; CI runs all of them):

Frontend (root)Backend
pnpm typecheck · pnpm lintpnpm --filter @sextante/api typecheck · lint
pnpm test · pnpm test <path>pnpm --filter @sextante/api test (needs Docker)
pnpm buildpnpm --filter @sextante/api build

Backend details (modules, migrations, tests): apps/api/README.md. Self-hosting with Docker Compose, secrets, encrypted backups and analytics: docs/DEPLOY.md. What was built and what was decided not to build: ROADMAP.md.

License

MIT © 2026 Federico Pardo García.

↑↓ navigate openesc close