Skip to main content
Glama
PocketSmith MCP Server

PocketSmith MCP Server

by joeswann

PocketSmith MCP Server

An MCP (Model Context Protocol) server for the PocketSmith personal finance API. Enables Claude Desktop, Claude Code, and other MCP clients to manage accounts, transactions, budgets, categories, and financial analysis.

Features

  • Accounts & Institutions: Manage bank accounts and financial institutions

  • Transactions: Create, search, update, and categorize transactions

  • Budgets & Analysis: View budget summaries and trend analysis

  • Categories & Rules: Organize transactions with categories and auto-categorization rules

  • Events & Forecasting: Manage recurring events and clear forecast caches

  • Attachments: Attach files to transactions

Related MCP server: Lunch Money MCP Server

Installation

From Source

  1. Clone this repository

  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build

Configuration

Environment Variables

Variable

Required

Default

Description

POCKETSMITH_API_TOKEN

Yes

—

API token from your PocketSmith account

POCKETSMITH_USER_ID

No

—

User ID (auto-detected from token if omitted)

POCKETSMITH_API_BASE_URL

No

https://api.pocketsmith.com/v2

Custom API endpoint

Create a .env file or set these in your shell environment.

To generate an API token: PocketSmith Settings > Security > Manage Developer Keys.

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "pocketsmith": {
      "command": "node",
      "args": ["/path/to/pocketsmith-mcp/build/index.js"],
      "env": {
        "POCKETSMITH_API_TOKEN": "your-api-token"
      }
    }
  }
}

Usage with Claude Code

claude mcp add pocketsmith -- node /path/to/pocketsmith-mcp/build/index.js

Available Tools

Users

get_me, get_user, update_user

Institutions

list_institutions, create_institution, get_institution, update_institution, delete_institution

Accounts

list_accounts, create_account, get_account, update_account, delete_account, reorder_accounts, list_institution_accounts

Transaction Accounts

list_transaction_accounts, get_transaction_account, update_transaction_account

Transactions

list_transactions, list_account_transactions, list_category_transactions, list_transaction_account_transactions, create_transaction, get_transaction, update_transaction, delete_transaction

Categories

list_categories, create_category, get_category, update_category, delete_category

Category Rules

list_category_rules, create_category_rule

Budgets & Analysis

list_budget, get_budget_summary, get_trend_analysis, delete_forecast_cache

Events

list_events, list_scenario_events, create_event, get_event, update_event, delete_event

Attachments

list_attachments, list_transaction_attachments, create_attachment, assign_attachment, unassign_attachment, get_attachment, update_attachment, delete_attachment

Reference

list_currencies, get_currency, list_time_zones, list_labels, list_saved_searches

Development

  • npm run dev — Watch mode with TypeScript compilation

  • npm run build — Build the project

  • npm start — Start the built server

License

MIT

Available Tools

56 tools
assign_attachmentA

Assign an existing attachment to a transaction

Inputs: attachment_id (required), transaction_id (required).

create_accountC

Create a new account

Inputs: type (required), title (required), currency_code (required), institution_id (required).

create_attachmentB

Create a new attachment (upload)

Inputs: title (required), file_data (required), file_name (required).

create_categoryB

Create a new category

Inputs: title (required), colour, is_bill, roll_up, +3 more.

create_category_ruleA

Create a category rule that auto-categorises transactions by payee match

Inputs: category_id (required), payee_matches (required).

create_eventC

Create a new event in a scenario

Inputs: date (required), amount (required), category_id (required), repeat_type (required), +3 more.

create_institutionC

Create a new institution

Inputs: title (required), currency_code (required).

create_transactionB

Create a new transaction in a transaction account

Inputs: date (required), payee (required), amount (required), transaction_account_id (required), +7 more.

delete_accountC

Delete a PocketSmith account

Inputs: id (required).

delete_attachmentC

Delete a PocketSmith attachment

Inputs: id (required).

delete_categoryB

Delete a PocketSmith category

Inputs: id (required).

delete_eventC

Delete a PocketSmith event

Inputs: id (required), behaviour (required).

delete_forecast_cacheA

Clear the forecast cache to force recalculation

Inputs: no named parameters.

delete_institutionB

Delete a PocketSmith institution. Optionally merge accounts into another institution.

Inputs: id (required), merge_into_id.

delete_transactionC

Delete a PocketSmith transaction

Inputs: id (required).

get_accountA

Get a PocketSmith account by ID, including transaction accounts and scenarios

Inputs: id (required).

get_attachmentA

Get a PocketSmith attachment by ID

Inputs: id (required).

get_budget_summaryB

Get a budget summary for the authenticated user

Inputs: no named parameters.

get_categoryA

Get a PocketSmith category by ID, including children

Inputs: id (required).

get_currencyA

Get details for a specific currency by code

Inputs: id (required).

get_eventB

Get a PocketSmith event by ID

Inputs: id (required).

get_institutionA

Get a PocketSmith institution by ID

Inputs: id (required).

get_meA

Get the currently authenticated PocketSmith user

Inputs: no named parameters.

get_transactionA

Get a single PocketSmith transaction by ID

Inputs: id (required).

get_transaction_accountA

Get a PocketSmith transaction account by ID

Inputs: id (required).

get_trend_analysisB

Get trend analysis for specific categories and scenarios over a date range

Inputs: period (required), end_date (required), interval (required), scenarios (required), +2 more.

get_userB

Get a PocketSmith user by ID

Inputs: id (required).

list_accountsB

List all accounts for the authenticated user

Inputs: no named parameters.

list_account_transactionsC

List transactions for a specific account

Inputs: account_id (required), page, type, search, +6 more.

list_attachmentsC

List attachments for the authenticated user

Inputs: page, per_page, unassigned.

list_budgetB

List budget analysis for all categories for the authenticated user

Inputs: roll_up.

list_categoriesA

List all categories for the authenticated user (returns tree structure)

Inputs: no named parameters.

list_category_rulesA

List all category rules for the authenticated user

Inputs: no named parameters.

list_category_transactionsB

List transactions for a specific category

Inputs: category_id (required), page, type, search, +6 more.

list_currenciesA

List all currencies supported by PocketSmith

Inputs: no named parameters.

list_eventsA

List events for the authenticated user within a date range

Inputs: end_date (required), start_date (required).

list_institution_accountsA

List all accounts for a specific institution

Inputs: institution_id (required).

list_institutionsA

List all institutions for the authenticated user

Inputs: no named parameters.

list_labelsA

List all labels used across the authenticated user's transactions

Inputs: no named parameters.

list_saved_searchesA

List all saved searches for the authenticated user

Inputs: no named parameters.

list_scenario_eventsA

List events for a specific scenario within a date range

Inputs: end_date (required), start_date (required), scenario_id (required).

list_time_zonesA

List all time zones supported by PocketSmith

Inputs: no named parameters.

list_transaction_accountsA

List all transaction accounts for the authenticated user

Inputs: no named parameters.

list_transaction_account_transactionsC

List transactions for a specific transaction account

Inputs: transaction_account_id (required), page, type, search, +6 more.

list_transaction_attachmentsA

List attachments for a specific transaction

Inputs: transaction_id (required).

list_transactionsC

List transactions for the authenticated user with optional filters

Inputs: page, type, search, end_date, +5 more.

reorder_accountsC

Update the display order of accounts

Inputs: account_ids (required).

unassign_attachmentA

Unassign an attachment from a transaction

Inputs: attachment_id (required), transaction_id (required).

update_accountC

Update a PocketSmith account

Inputs: id (required), type, title, is_net_worth, +1 more.

update_attachmentB

Update a PocketSmith attachment title

Inputs: id (required), title.

update_categoryC

Update a PocketSmith category

Inputs: id (required), title, colour, is_bill, +4 more.

update_eventC

Update a PocketSmith event

Inputs: id (required), behaviour (required), note, amount, +2 more.

update_institutionC

Update a PocketSmith institution

Inputs: id (required), title, currency_code.

update_transactionB

Update a PocketSmith transaction

Inputs: id (required), date, memo, note, +7 more.

update_transaction_accountA

Update a PocketSmith transaction account (e.g. change its institution or starting balance)

Inputs: id (required), institution_id, starting_balance, starting_balance_date.

update_userC

Update a PocketSmith user profile

Inputs: id (required), name, email, beta_user, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 56 tools

    Disambiguation3/5

    Tools are grouped by resource, but there are many similar list endpoints (e.g., list_accounts, list_institution_accounts, list_transaction_accounts, list_transaction_account_transactions) that could be confused, especially without reading descriptions carefully. The distinction between 'account' and 'transaction account' is not immediately obvious from names alone.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern (list_*, get_*, create_*, update_*, delete_*). Minor deviations exist (get_me, reorder_accounts, assign_attachment, unassign_attachment, delete_forecast_cache) but these are understandable and do not break the overall pattern.

    Tool Count1/5

    With 56 tools, this far exceeds the 'typical' range of 3-15 and falls into the extreme mismatch category. Even for a comprehensive API, the sheer number creates a heavy, unwieldy surface that is likely to overwhelm agents and users.

    Completeness4/5

    The tool set covers CRUD for most major resources (accounts, transactions, categories, institutions, events, attachments) and includes read-only access for budgets, trends, currencies, and time zones. However, there is no delete or update for category rules, no delete for saved searches, and no create/delete for labels, which are minor but notable gaps.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      An MCP server implementation that provides programmatic access to personal finance data through LunchMoney's API, enabling AI assistants to manage transactions, budgets, categories, and assets.
      59
      939 npm
      113
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      An MCP server providing full integration with the Lunch Money API to manage financial data including transactions, budgets, assets, and categories. It enables AI assistants to perform CRUD operations on financial records through a standardized HTTP interface.
      26
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      MCP server that bridges Claude to Monarch Money for personal-finance analysis and lightweight edits.
      18
      -
    • F
      license
      B
      quality
      D
      maintenance
      A personal MCP server that gives Claude native access to YNAB budget data.
      46
      -