Open Banking MCP Server
# Open Banking MCP Server
A Model Context Protocol (MCP) server for Open Banking integration with TrueLayer API.
## 🚀 Quick Start
### 1. Setup Credentials
Copy your real credentials to `mcp.local.json` (kept out of version control) **or** export them as environment variables before running the server. The committed `mcp.json` intentionally keeps placeholder values so no secrets are stored in the repo:
```json
{
"mcpServers": {
"openbanking-mcp": {
"command": "py",
"args": ["server.py"],
"cwd": "C:\\1 Projects\\Cursor Projects\\GPT Experimentation\\OPEN BANKING MCP BUISNESS\\openbankingMCP",
"env": {
"TRUELAYER_CLIENT_ID": "your-real-client-id",
"TRUELAYER_CLIENT_SECRET": "your-real-client-secret"
}
}
}
}
```
Alternatively, set the variables directly in your shell or process manager (example shown for POSIX shells):
```bash
export TRUELAYER_CLIENT_ID="your-real-client-id"
export TRUELAYER_CLIENT_SECRET="your-real-client-secret"
```
### 2. Install Dependencies
```bash
# No additional dependencies required - uses Python standard library
```
### 3. Test the Server
```bash
# Test minimal server
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | py minimal_mcp.py
# Test full server
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | py server.py
```
### 4. Configure Cursor
Use `mcp.local.json` for your local Cursor configuration (contains real credentials).
## 🛠️ Available Tools
- **`get_accounts`**: List all bank accounts
- **`get_transactions`**: Get transaction history for a specific account and date range
## 🔒 Security
- Real credentials are stored in `mcp.local.json` (gitignored)
- Placeholder credentials in `mcp.json` for version control
- Never commit real API keys or secrets
## 🐞 Debugging
If MCP tools don't appear in Cursor:
1. Check Cursor Developer Console (`Ctrl+Shift+I`)
2. Look for startup messages: `🚀 OpenBanking MCP server starting...`
3. Verify Python path and working directory in MCP config
4. Test server manually outside Cursor firstTDQS
Scored across 9 tools
exchange_code and complete_code_exchange overlap almost entirely (one is a legacy alias), and get_accounts/list_accounts plus get_transactions/list_transactions have similar names but differ in real vs. dummy behavior, creating confusion. An agent could easily select the wrong tool without careful description inspection.
The pattern is mostly verb_noun, but the use of both get_ and list_ prefixes for closely related actions, along with exchange_code versus complete_code_exchange, shows inconsistent verb choice. The 'legacy alias' note further muddies the name convention.
With 9 tools, the server is well-scoped for Open Banking operations covering auth, accounts, transactions, consents, and export. Each tool has a place, and the count is neither too small nor excessive.
The surface covers the core lifecycle: OAuth authorization, code exchange, account listing, transaction retrieval, CSV export, and consent listing. Notable gaps include consent revocation and token refresh, which are minor but would round out the workflow.