plaid-mcp-server
A self-hosted MCP server that lets Claude query your bank accounts, balances, and transactions through Plaid.
README
plaid-mcp
A self-hosted MCP server that lets Claude query your bank accounts, balances, and transactions through Plaid.
Tools
| Tool | Description |
|---|---|
accounts |
All linked bank accounts |
balances |
Current/available balances and credit limits |
transactions |
Full transaction history for a date range |
total_spending |
Total spending broken down by category |
transactions_by_category |
Filter transactions by Plaid PFC category |
merchants |
All merchants for a date range, sorted by total spend |
transactions_by_merchant |
Filter transactions by merchant name |
How it works
- OAuth 2.1 + PKCE with Google as the identity provider
- Email allowlist is the security boundary
- Claude.ai gets a 30-day bearer token; your Plaid access token never leaves your server
- Caddy sits in front of FastAPI, terminating TLS on port 443 with auto-provisioned Let's Encrypt certs and reverse-proxying to
localhost:8080
Requirements
- A Linux server with a public IP (this guide uses an AWS EC2
t3.micro) - A domain name pointing at it (this guide uses a free DuckDNS subdomain)
- A Plaid developer account with production access
- A Google Cloud account for the OAuth client
Setup
1. Plaid
- Create a Plaid account at dashboard.plaid.com
- Request Production access in the dashboard (Plaid will review your application — this can take a few days)
- Once approved, save your
client_idandProductionsecret from Team Settings → Keys
2. Google OAuth
- console.cloud.google.com → create a project
- APIs & Services → OAuth consent screen → set up an "External" app, add yourself as a test user
- APIs & Services → Credentials → Create credentials → OAuth client ID
- Application type: Web application
- Authorized redirect URIs:
https://yourdomain.com/auth/google/callback(use your real domain from step 4 below) - Save the
Client IDandClient secret
3. Server
This guide assumes AWS EC2:
- Launch a
t3.microUbuntu 24.04 instance - Security group: inbound TCP 22 (SSH from your IP), 80, 443
- Allocate an Elastic IP and associate it with the instance
- SSH in:
ssh -i your-key.pem ubuntu@<elastic-ip>
4. Domain
Free option using DuckDNS:
- Sign in with Google/GitHub/Reddit
- Reserve a subdomain (e.g.
plaid-yourname) - Set the IP to your Elastic IP
- Your domain is now
plaid-yourname.duckdns.org
Go back to step 2.5 and set the redirect URI to https://plaid-yourname.duckdns.org/auth/google/callback.
5. Install
On the server:
git clone https://github.com/lukew0824/plaid-mcp.git
cd plaid-mcp
cp .env.example .env
nano .env # fill in everything
./install.sh
The script:
- Installs Python, Caddy, and dependencies
- Sets up and starts a systemd service (
plaid-mcp) that auto-restarts on failure and boot - Configures Caddy as a reverse proxy with auto-HTTPS via Let's Encrypt
6. Connect in Claude.ai
- Claude.ai → Settings → Connectors → Add custom connector
- URL:
https://yourdomain.com/mcp - Click Connect
- Sign in with the Google account matching
ALLOWED_EMAIL - First time only: a Plaid Link popup will appear — connect your bank
- Done. Try: "What did I spend on food last month?"
Configuration
The .env values:
| Key | Description |
|---|---|
PLAID_ENV |
production |
PLAID_CLIENT_ID |
From Plaid dashboard |
PLAID_PRODUCTION_SECRET |
From Plaid dashboard |
GOOGLE_CLIENT_ID |
From Google Cloud Console |
GOOGLE_CLIENT_SECRET |
From Google Cloud Console |
ALLOWED_EMAIL |
The single Google email allowed to authenticate |
BASE_URL |
Public HTTPS URL of this server (no trailing slash) |
DATABASE_URL |
sqlite:///./plaid_mcp.db (default works for self-hosting) |
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.