Skip to main content
Glama
alexfu

mcp-ynab

by alexfu
README.md
# mcp-ynab

FastMCP server that exposes the [YNAB API](https://api.ynab.com/) via MCP using YNAB's published OpenAPI spec.

## Requirements

- Python 3.12+
- A YNAB personal access token
- `uv` (recommended) or `pip`

## Configuration

Environment variables:

- `YNAB_TOKEN` (required): your YNAB API token
- `TRANSPORT` (optional): `http` (default) or `stdio`

## Run Locally

Using `uv`:

```bash
uv sync
export YNAB_TOKEN="your_token_here"
export TRANSPORT="http"   # optional, defaults to http
uv run python main.py
```

HTTP mode starts the server on `0.0.0.0:8080`.

## Docker

Use the prebuilt image from GHCR:

```bash
docker pull ghcr.io/alexfu/mcp-ynab:latest
```

Run prebuilt image in HTTP mode:

```bash
docker run --rm -p 8080:8080 \
  -e YNAB_TOKEN="your_token_here" \
  -e TRANSPORT="http" \
  ghcr.io/alexfu/mcp-ynab:latest
```

Run prebuilt image in stdio mode:

```bash
docker run --rm \
  -e YNAB_TOKEN="your_token_here" \
  -e TRANSPORT="stdio" \
  ghcr.io/alexfu/mcp-ynab:latest
```

## Notes

- The server fetches YNAB's OpenAPI spec at startup from `https://api.ynab.com/papi/open_api_spec.yaml`.
- Startup will fail if `YNAB_TOKEN` is missing, `TRANSPORT` is invalid, or the spec request fails.

TDQS

C2.8/5.0

Scored across 44 tools

Disambiguation5/5

Each tool targets a distinct resource and action. Get, create, update, and delete operations are clearly separated per entity, and even similar tools like getCategoryById vs getMonthCategoryById are differentiated by their descriptions (month-specific vs current month). No two tools appear to do the same thing.

Naming Consistency4/5

All tools follow a verb_noun camelCase pattern (getPlans, createAccount, updateTransaction). Minor deviations exist such as getPlanMonth vs getPlanMonths and some singular/plural inconsistencies, but the pattern is recognizable and predictable.

Tool Count2/5

With 44 tools, this is far beyond the typical MCP server scope and feels bloated. While the domain (YNAB budgeting) is complex, the number of tools is excessive and would likely overwhelm an agent, making selection harder.

Completeness3/5

The tool surface covers transactions and categories thoroughly with full CRUD, but gaps exist: accounts lack update/delete, plans have no create/update, payee locations are read-only, and money movements have no write operations. These missing operations could hinder common budgeting workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues