Skip to main content

YNAB MCP integration for managing budgets and transactions

Project description

YNAB MCP Server

PyPI version License: MIT

A Model Context Protocol (MCP) server for seamless integration with You Need A Budget (YNAB). This server enables AI assistants to interact with your YNAB budgets, providing powerful automation and analysis capabilities.

📦 Quick Installation (Claude Desktop)

{
  "mcpServers": {
    "ynab-mcp": {
      "command": "uvx",
      "args": ["ynab-mcp-server"],
      "env": {
        "YNAB_PAT": "your_token_here"
      }
    }
  }
}

🌟 Features

  • 📊 Complete Budget Management

    • View and manage multiple budgets
    • Track account balances and transactions
    • Monitor category spending and goals
  • 💰 Transaction Control

    • List and search transactions
    • Update transaction details
    • Manage payees and categories
  • 📈 Financial Analysis

    • Get comprehensive financial overviews
    • Track spending patterns
    • Monitor budget progress

📋 Table of Contents

🚀 Installation & Usage

No installation needed when using uvx:

# Run directly (recommended)
uvx ynab-mcp-server

# Or with specific version
uvx ynab-mcp-server@0.1.1

For development:

# Clone and run from source
git clone https://github.com/yourusername/ynab-mcp-server.git
cd ynab-mcp-server
uv run ynab-mcp-server

🔧 Platform-Specific Setup

Claude Desktop

  1. Locate your configuration file:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. Add the YNAB MCP server configuration:

{
  "mcpServers": {
    "ynab-mcp": {
      "command": "uvx",
      "args": ["ynab-mcp-server"],
      "env": {
        "YNAB_PAT": "your_token_here"
      }
    }
  }
}

Goose

  1. Open Goose settings
  2. Navigate to the MCP Servers section
  3. Add a new server with:
    • Name: ynab-mcp
    • Command: uvx ynab-mcp-server
    • Environment Variables:
      • YNAB_PAT: your_token_here

Other Platforms

For other MCP-compatible platforms, configure using these parameters:

  • Server Name: ynab-mcp
  • Command: uvx
  • Arguments: ynab-mcp-server
  • Required Environment Variable: YNAB_PAT

⚙️ Configuration

  1. Get Your YNAB Token

  2. Set Up Environment

    Create a .env file in your working directory:

    YNAB_PAT="your_token_here"
    

    Or set the environment variable directly:

    export YNAB_PAT="your_token_here"
    

🛠️ Available Tools

Budget Management

Tool Description
list-budgets List all available YNAB budgets
list-accounts List all accounts for a given budget
list-categories List categories with budgeted amounts

Transaction Management

Tool Description
list-transactions List account transactions
list-monthly-transactions List transactions by month
update-transactions Update transaction details

Financial Overview

Tool Description
get-financial-overview Get current financial status
refresh-financial-overview Update overview with latest data

Budget Planning

Tool Description
move-budget-amount Transfer between categories
assign-budget-amount Set category budget

📝 Usage Examples

Basic Budget Overview

# List all budgets
result = await handle_call_tool("list-budgets", {})

# View current month's transactions
result = await handle_call_tool("list-monthly-transactions", {
    "month": "2024-03-01"
})

Category Management

# Move funds between categories
result = await handle_call_tool("move-budget-amount", {
    "month": "2024-03-01",
    "from_category_id": "11111111-2222-3333-4444-555555555555",  # Example: Dining Out
    "to_category_id": "66666666-7777-8888-9999-000000000000",    # Example: Groceries
    "amount": 5000  # $50.00 (amounts are in milliunits)
})

Transaction Updates

# Update transaction details
result = await handle_call_tool("update-transactions", {
    "transactions": [{
        "id": "12345678-90ab-cdef-ghij-klmnopqrstuv",  # Example UUID
        "category_id": "98765432-fedc-ba98-7654-321012345678",  # Example category UUID
        "memo": "Updated grocery shopping description"
    }]
})

🔨 Development

Local Setup

  1. Clone the repository:

    git clone https://github.com/yourusername/ynab-mcp-server.git
    cd ynab-mcp-server
    
  2. Install dependencies:

    uv sync
    
  3. Run the server:

    uv run ynab-mcp-server
    

Debugging

Use the MCP Inspector for debugging:

npx @modelcontextprotocol/inspector uvx ynab-mcp-server

For local development debugging:

cd path/to/ynab-mcp-server
npx @modelcontextprotocol/inspector uv run ynab-mcp-server

You can also view logs with:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Building and Publishing

# Build package
uv build

# Publish to PyPI
uv publish

👥 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your PR:

  • Follows the existing code style
  • Includes appropriate tests
  • Updates documentation as needed

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ynab_mcp_server-0.1.2.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ynab_mcp_server-0.1.2-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file ynab_mcp_server-0.1.2.tar.gz.

File metadata

  • Download URL: ynab_mcp_server-0.1.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ynab_mcp_server-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f4ff3e1284cbfc212780ef73e4f63b3d116c3f690ce39137b66c7df627fb2d4b
MD5 5a3965f6b23f7c3c9b17f4ed42264310
BLAKE2b-256 eaff4276fc95e148e0e7082035afcf409f89a8afe29fb83e88bb9b8322c3968e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ynab_mcp_server-0.1.2.tar.gz:

Publisher: python-publish.yml on Jtewen/ynab-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ynab_mcp_server-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ynab_mcp_server-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 31b1ccfd5c51da26518eca6017fe01a59e1b84fbe68ade79ef6c41b5f731b9c8
MD5 ba5bf38c54371ec74d9ec557e02a27f5
BLAKE2b-256 b82178e9cf3c0a4b0035880caa97bb6c56cdaf64934ec1edc69f6d8aa5d3517a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ynab_mcp_server-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on Jtewen/ynab-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page