sin4ch/mono-mcp
If you are the rightful owner of mono-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Mono Banking MCP Server is a comprehensive Model Context Protocol server designed for Nigerian banking operations, utilizing the Mono Open Banking API.
Mono Banking MCP Server
A comprehensive Model Context Protocol (MCP) server for Nigerian banking operations using the Mono Open Banking API. Features integrated webhook support for real-time banking events and seamless deployment on FastMCP Cloud.
Table of Contents
- Key Features
- Architecture
- Technologies Used
- Project Structure
- Webhook Integration
- Quick Start
- Usage
- Available Banking Tools
- Contributing
Key Features
- Complete Banking Operations - Account management, payments, BVN verification
- Real-time Webhooks - Integrated webhook endpoints for live banking events
- AI Assistant Ready - Seamless integration with Claude, ChatGPT, and other AI assistants
- Cloud Deployment - Ready for FastMCP Cloud with automatic scaling
- Enterprise Security - HMAC signature verification and secure API handling
- Event Monitoring - Built-in webhook event storage and debugging tools
Architecture
sequenceDiagram
participant User as š¤ User
participant AI as š¤ AI Assistant<br/>(Claude/ChatGPT)
participant MCP as ā” MCP Server<br/>(FastMCP + Webhooks)
participant Client as š Mono Client<br/>(httpx)
participant API as š¦ Mono API<br/>(Nigerian Banks)
participant Webhook as š” Webhook Events
User->>AI: "Check my account balance"
AI->>MCP: list_tools()
MCP-->>AI: 12 banking tools + webhook monitoring
AI->>MCP: get_account_balance(account_id)
MCP->>Client: get_account_balance(account_id)
Client->>API: GET /accounts/{id}/balance
API-->>Client: {"balance": 50000, "currency": "NGN"}
Client-->>MCP: Account balance data
MCP-->>AI: {"success": true, "balance": "ā¦500.00"}
AI-->>User: "Your account balance is ā¦500.00"
Note over Webhook,MCP: Real-time Events
API->>MCP: POST /mono/webhook (account.updated)
MCP->>MCP: Verify HMAC signature
MCP->>MCP: Store event in database
Technologies Used
- Python 3.12+ - Modern Python with async/await support
- FastMCP 2.12+ - Simplified MCP server with custom route support
- Starlette - ASGI framework for webhook endpoints
- httpx - Modern async HTTP client for API communication
- SQLAlchemy - Database ORM for webhook event storage
- Mono Open Banking API v2 - Nigerian banking infrastructure
- python-dotenv - Environment variable management
- uv - Fast Python package manager (recommended)
Project Structure
mono-banking-mcp/
āāā mono_banking_mcp/ # Main package
ā āāā server.py # FastMCP server with 12 tools + webhook endpoints
ā āāā mono_client.py # Mono API client with async httpx
ā āāā database.py # SQLAlchemy database for webhook events storage
āāā tests/ # Comprehensive test suite with webhook integration tests
ā āāā conftest.py # Test configuration and fixtures
ā āāā test_mono_banking.py # Unit and integration tests
āāā pyproject.toml # Modern Python project configuration (uv-based)
āāā uv.lock # Dependency lock file with FastMCP 2.12+
āāā pytest.ini # Test configuration and markers
āāā Makefile # Development workflow automation with webhook commands
āāā README.md # This comprehensive documentation
āāā .env.example # Environment variables template
Webhook Integration
Real-time Event Processing
The server includes integrated webhook support for real-time banking events:
graph LR
A[Mono API] -->|POST /mono/webhook| B[FastMCP Server]
B -->|HMAC Verify| C[Signature Check]
C -->|ā
Valid| D[Store Event]
C -->|ā Invalid| E[Reject]
D --> F[SQLite Database]
F --> G[get_webhook_events Tool]
G --> H[AI Assistant]
Key Integration Points
/mono/webhook
- Webhook endpoint for real-time Mono events/health
- Health check endpoint for monitoring
Supported Webhook Events
account.connected
- New account linkedaccount.updated
- Account information changedaccount.unlinked
- Account disconnectedjob.completed
- Data sync completedjob.failed
- Data sync failed
Security Features
- HMAC-SHA256 Signature Verification - Ensures webhook authenticity
- Environment-based Secrets - Secure credential management
- Request Validation - Malformed request rejection
- Event Storage - Audit trail for all webhook events
Quick Start
Ready to use immediately! Connect your AI assistant to:
https://mono-banking-mcp.fastmcp.app/mcp
Available Endpoints
- MCP Server:
https://mono-banking-mcp.fastmcp.app/mcp
- Webhook Endpoint:
https://mono-banking-mcp.fastmcp.app/mono/webhook
- Health Check:
https://mono-banking-mcp.fastmcp.app/health
Usage
Claude Desktop Integration
Add to your Claude Desktop configuration (~/.config/claude-desktop/config.json
):
{
"mcpServers": {
"mono-banking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-fetch", "https://mono-banking-mcp.fastmcp.app/mcp"]
}
}
}
Usage Examples
Once connected to an AI assistant (Claude, Gemini, etc.), you can use natural language commands:
Account Management
- "List all my linked bank accounts"
- "Show me the balance for account abc123"
- "Get detailed information for my GTBank account"
- "Show me the last 20 transactions for account xyz789"
Payment Operations
- "Verify the account name for 0123456789 at GTBank (code 058)"
- "Initiate a payment of ā¦5000 to account 1234567890 at Access Bank for John Doe"
- "Check the status of payment reference PAY_ABC123"
Banking Information
- "Show me all supported Nigerian banks and their codes"
- "Look up BVN 12345678901 for identity verification"
- "Help a new customer link their bank account"
Complete Workflow Example
- "Show me all Nigerian banks" - Get bank codes
- "Verify account 1234567890 at Access Bank" - Confirm recipient
- "Initiate payment of ā¦10000 to verified account for rent payment" - Start payment
- "Check payment status for the reference you just gave me" - Verify completion
Available Banking Tools
The server provides these comprehensive banking tools (12 total):
Core Banking Operations
Tool | Description | Parameters |
---|---|---|
list_linked_accounts | List all linked bank accounts | None |
get_account_balance | Get current account balance | account_id |
get_account_info | Get basic account information | account_id |
get_account_details | Get comprehensive account details including BVN | account_id |
get_transaction_history | Retrieve transaction records with pagination | account_id , limit , page |
verify_account_name | Verify recipient account details before payments | account_number , bank_code |
initiate_payment | Start a payment via Mono DirectPay | amount , recipient_account_number , recipient_bank_code , customer info |
verify_payment | Check payment status using reference | reference |
get_nigerian_banks | List all supported Nigerian banks with codes | None |
lookup_bvn | Perform BVN identity verification | bvn , scope |
initiate_account_linking | Start account linking process for new customers | customer_name , customer_email |
Contributing
Contributions to the Mono Banking MCP Server are welcome! For questions or help getting started, please open an issue.
Development Workflow
Quick Start for Contributors:
# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/mono-banking-mcp.git
cd mono-banking-mcp
# Set up development environment
uv sync
uv pip install -e .
# Verify installation with webhook support
python -c "from mono_banking_mcp.server import mcp; print('ā
Package installed successfully')"
# Run comprehensive tests
make test-all
# Create feature branch and start developing
git checkout -b feature/your-feature-name
# Test your changes
make test-webhook # Test webhook functionality
make tools # Verify all 12 tools are working