plaid-mcp-server

plaid-mcp-server

A self-hosted MCP server that lets Claude query your bank accounts, balances, and transactions through Plaid.

Category
Visit Server

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

  1. Create a Plaid account at dashboard.plaid.com
  2. Request Production access in the dashboard (Plaid will review your application — this can take a few days)
  3. Once approved, save your client_id and Production secret from Team Settings → Keys

2. Google OAuth

  1. console.cloud.google.com → create a project
  2. APIs & Services → OAuth consent screen → set up an "External" app, add yourself as a test user
  3. APIs & Services → Credentials → Create credentials → OAuth client ID
  4. Application type: Web application
  5. Authorized redirect URIs: https://yourdomain.com/auth/google/callback (use your real domain from step 4 below)
  6. Save the Client ID and Client secret

3. Server

This guide assumes AWS EC2:

  1. Launch a t3.micro Ubuntu 24.04 instance
  2. Security group: inbound TCP 22 (SSH from your IP), 80, 443
  3. Allocate an Elastic IP and associate it with the instance
  4. SSH in: ssh -i your-key.pem ubuntu@<elastic-ip>

4. Domain

Free option using DuckDNS:

  1. Sign in with Google/GitHub/Reddit
  2. Reserve a subdomain (e.g. plaid-yourname)
  3. Set the IP to your Elastic IP
  4. 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

  1. Claude.ai → Settings → Connectors → Add custom connector
  2. URL: https://yourdomain.com/mcp
  3. Click Connect
  4. Sign in with the Google account matching ALLOWED_EMAIL
  5. First time only: a Plaid Link popup will appear — connect your bank
  6. 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured