plaid-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@plaid-mcp-servershow my recent transactions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Plaid MCP Server
A self-hosted MCP server for securely querying personal financial data through Plaid.
Connect an MCP-compatible AI assistant to bank accounts, balances, transactions, merchants, and spending data while keeping Plaid credentials and access tokens on your own server.
Overview
Plaid MCP Server exposes personal financial data through the Model Context Protocol (MCP), allowing an AI assistant to answer questions about connected bank accounts and transaction history.
The server handles authentication, Plaid account linking, financial-data retrieval, and MCP tool execution behind a self-hosted API.
Example queries:
"What did I spend on food last month?"
"Show me my largest purchases this week."
"How much have I spent at Trader Joe's this year?"
"What are my current account balances?"Related MCP server: plaid-mcp
Available Tools
Tool | Description |
| List all linked bank accounts |
| Retrieve current and available balances and credit limits |
| Retrieve transaction history for a specified date range |
| Calculate spending totals grouped by category |
| Filter transactions by Plaid Personal Finance Category |
| List merchants ranked by total spend over a date range |
| Filter transactions by merchant name |
Architecture
┌──────────────────────┐
│ MCP Client / AI │
└──────────┬───────────┘
│ HTTPS + MCP
▼
┌──────────────────────┐
│ Caddy │
│ TLS / Reverse Proxy│
└──────────┬───────────┘
▼
┌──────────────────────┐
│ FastAPI │
│ MCP + OAuth Layer │
└───────┬───────┬──────┘
│ │
│ └──────────────► Google OAuth
│
▼
┌──────────────────────┐
│ Plaid │
│ Accounts / Txns / PFC│
└──────────────────────┘Authentication and Security
OAuth 2.1 + PKCE with Google as the identity provider
Email allowlist controls access to the server
Plaid access tokens remain on the self-hosted server
MCP clients receive a time-limited bearer token
Caddy terminates TLS and reverse-proxies traffic to FastAPI
HTTPS certificates are automatically provisioned through Let's Encrypt
Tech Stack
Backend: Python, FastAPI
Protocol: Model Context Protocol (MCP)
Financial data: Plaid API
Authentication: Google OAuth 2.1 + PKCE
Storage: SQLite
Infrastructure: AWS EC2, Caddy, systemd
Transport: HTTPS
Requirements
Before deploying, you'll need:
A Linux server with a public IP
A domain or subdomain pointing to the server
A Plaid developer account with Production access
A Google Cloud project with OAuth credentials
The setup below uses an AWS EC2 t3.micro instance and DuckDNS, but equivalent infrastructure should work as well.
Setup
1. Plaid
Create a Plaid developer account.
Request Production access through the Plaid dashboard.
Once approved, save your:
client_idProduction secret
2. Google OAuth
Create a Google Cloud project and configure an OAuth client.
Use the following redirect URI:
https://yourdomain.com/auth/google/callbackSave the generated:
Client ID
Client secret
3. Server
This example uses Ubuntu on AWS EC2.
Launch an Ubuntu 24.04 instance.
Allow inbound traffic on:
22for SSH80for HTTP443for HTTPS
Associate a stable public IP with the instance.
Connect over SSH.
ssh -i your-key.pem ubuntu@<server-ip>4. Domain
Point a domain or subdomain at your server's public IP.
For a free option, DuckDNS works well:
plaid-yourname.duckdns.orgThen use:
https://plaid-yourname.duckdns.org/auth/google/callbackas the Google OAuth redirect URI.
5. Install
Clone the repository:
git clone https://github.com/lukew0824/plaid-mcp-server.git
cd plaid-mcp-serverCreate your environment file:
cp .env.example .env
nano .envFill in the required values, then run:
./install.shThe installer:
Installs Python dependencies and Caddy
Creates a
systemdserviceConfigures the application to restart automatically
Configures Caddy as an HTTPS reverse proxy
6. Connect an MCP Client
For Claude.ai:
Open Settings → Connectors
Add a custom connector
Set the URL to:
https://yourdomain.com/mcpAuthenticate using the Google account configured in
ALLOWED_EMAILComplete Plaid Link the first time you connect a financial institution
Once connected, the financial tools will be available to the MCP client.
Configuration
Variable | Description |
| Plaid environment, typically |
| Plaid client ID |
| Plaid Production secret |
| Google OAuth client ID |
| Google OAuth client secret |
| Google account permitted to authenticate |
| Public HTTPS URL of the server |
| Database connection string; SQLite works by default |
Project Structure
plaid-mcp-server/
├── app.py
├── crypto_utils.py
├── database.py
├── plaid_client.py
├── tools.py
├── install.sh
├── requirements.txt
├── .env.example
└── README.mdLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
- Era ContextOAuthapp.era
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Related MCP Servers
- FlicenseBqualityDmaintenanceMCP server that bridges Claude to Monarch Money for personal-finance analysis and lightweight edits.18-
- FlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server enabling Claude to query bank accounts, balances, and transactions through Plaid with OAuth and TLS.-
- FlicenseBqualityDmaintenanceA personal MCP server that gives Claude native access to YNAB budget data.46-
- AlicenseNot gradedqualityAmaintenanceA local-first MCP server that connects SimpleFIN bank accounts to Claude, storing data in a local DuckDB file and providing a web dashboard.2MIT