Skip to main content
Glama
sophtron-mcp

sophtron-mcp

by 312-dev

sophtron-mcp

A Claude Desktop MCP server for querying bank accounts, credit cards, and transactions via Sophtron's financial data API.

Patched for Claude — forked from sophtron/chagpt-mcp which was built exclusively for ChatGPT. This version replaces the OpenAI-specific transport, auth, and widget code with a standard stdio MCP server that works with Claude Desktop, Claude Code, and any MCP-compatible client.

Free alternative to requiring a paid budgeting app (Monarch Money, YNAB, etc.) as middleware. Sophtron provides free API access for individual use, connecting directly to 12,000+ financial institutions via their data aggregation layer.

Setup

1. Get Sophtron credentials

Sign up at sophtron.com and get your User ID and Access Key.

2. Install

git clone https://github.com/312-dev/sophtron-mcp.git
cd sophtron-mcp
npm install
npm run build

3. Configure credentials

cp .env.example .env
# Edit .env with your Sophtron User ID and Access Key

4. Add to Claude Desktop

Add this to your ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sophtron": {
      "command": "node",
      "args": ["/path/to/sophtron-mcp/dist/index.js"],
      "env": {
        "SOPHTRON_USER_ID": "your-user-id",
        "SOPHTRON_ACCESS_KEY": "your-access-key"
      }
    }
  }
}

Or for Claude Code, add to ~/.claude.json under mcpServers:

{
  "sophtron": {
    "type": "stdio",
    "command": "node",
    "args": ["/path/to/sophtron-mcp/dist/index.js"],
    "env": {
      "SOPHTRON_USER_ID": "your-user-id",
      "SOPHTRON_ACCESS_KEY": "your-access-key"
    }
  }
}

5. Connect your bank

Bank connections are managed through Sophtron's infrastructure. To link your accounts:

  1. Use the Sophtron widget through their ChatGPT integration or web portal to connect your bank

  2. Once connected, this MCP server can query all your account data from Claude

Related MCP server: simplefin

Available tools

Tool

Description

setup_customer

Create or find a Sophtron customer profile (run first)

get_customer

Look up a customer by name

list_connections

List all linked bank connections

save_connection

Manually save a connection reference

list_accounts

List all accounts across all connections

get_account

Get details for a specific account

get_member_accounts

List accounts for a specific bank connection

get_transactions

Get transactions for an account (defaults to last 90 days)

get_identity

Get profile/identity info for a connection

search_institutions

Search for banks by name

How it works

This server communicates with Sophtron's REST API using HMAC-SHA256 signed requests. Your credentials never leave your machine — they're used locally to sign API calls.

Data is cached locally in ~/.sophtron-mcp/:

  • customer.json — your Sophtron customer ID

  • connections.json — saved bank connection references

What changed from the original

The upstream repo is built for ChatGPT with:

  • OpenAI-specific widget rendering (window.openai.setWidgetState)

  • OAuth2 JWT authentication flow

  • Express HTTP transport only

  • In-memory connection storage

  • structuredContent and openai/* metadata

This fork replaces all of that with:

  • Standard MCP stdio transport (works with any MCP client)

  • Direct HMAC API authentication (no OAuth needed)

  • Disk-based persistence

  • Clean tool definitions without vendor lock-in

License

MIT

Available Tools

10 tools
answer_mfaAnswer MFA ChallengeB

Submit an MFA response (security question answer, verification code, captcha, etc.)

Inputs: type (required), jobId (required), value (required).

connect_bankConnect Bank AccountA

Launch an interactive wizard to connect a new bank or credit card account. Renders a guided UI for searching institutions, entering credentials, and handling MFA verification.

Inputs: no named parameters.

create_connectionCreate Bank ConnectionA

Create a new bank connection with login credentials. Returns a job ID for polling.

Inputs: password (required), username (required), institutionId (required), pin.

get_connection_accountsGet Connection AccountsA

List accounts for a specific bank connection

Inputs: userInstitutionId (required).

get_transactionsGet TransactionsA
Read-only

Get transactions for a bank account. Defaults to last 90 days.

Inputs: accountId (required), endDate, startDate.

list_accountsList AccountsB
Read-only

List all accounts for a bank connection. Provide the UserInstitution ID.

Inputs: userInstitutionId (required).

list_connectionsList Bank ConnectionsA
Read-only

List all linked bank connections (UserInstitutions) for this account.

Inputs: no named parameters.

poll_jobPoll Job StatusA

Check the status of a bank connection job. Used during the connection flow.

Inputs: jobId (required).

refresh_accountRefresh AccountA

Trigger a fresh data pull from the bank for a specific account. Returns a job ID to poll.

Inputs: accountId (required).

search_institutionsSearch InstitutionsB

Search for banks and financial institutions by name

Inputs: query (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 10 tools

    Disambiguation2/5

    There is substantial overlap between get_connection_accounts and list_accounts, which both describe listing accounts for a bank connection with the same UserInstitution ID parameter. connect_bank and create_connection also overlap as alternative ways to create a connection, though the wizard vs. credential distinction helps somewhat.

    Naming Consistency4/5

    Tool names consistently use snake_case verb_noun patterns, which is predictable. However, there is a minor inconsistency in using both get_ and list_ verbs for what is essentially the same account-listing operation.

    Tool Count4/5

    Ten tools is a reasonable size for a bank connection and transaction MCP server. The count feels slightly inflated by the duplicate account-listing functionality, but overall the scope is well-contained.

    Completeness3/5

    The surface covers the core connection lifecycle: search, create, MFA, poll, list, transactions, and refresh. However, there is no way to disconnect/delete a bank connection or update credentials, which are significant lifecycle operations for this domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Comprehensive Monarch Money integration with read and write support for accounts, transactions, budgets, cashflow, credit history, and more. Secure browser-based auth with tokens stored in the OS keychain. Installs in one click via .mcpb for Claude Desktop.
      25
      280 PyPI
      13
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Exposes SimpleFIN bank data (accounts and transactions) as tools for Claude Code, enabling users to connect to bank accounts, list balances, and fetch transactions.
      4
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Connects Claude Desktop to Yodlee financial data, enabling account management, transaction queries, spending summaries, and audio narrations.
      1
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Enables Claude to query Empower/Personal Capital financial accounts, net worth, transactions, and asset allocation via natural language.
      5
      -