Investec OpenAPI 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., "@Investec OpenAPI MCP Servershow me my account balances"
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.
šµ Investec OpenAPI MCP Server
A premium, production-ready Model Context Protocol (MCP) server that wraps the official Investec OpenAPI. It enables AI coding assistants, developer agents (such as Claude Desktop, Cursor, or custom MCP clients), and automation scripts to interact directly and securely with your Investec personal, business, corporate, and programmable card accounts.
āāāāāāā āāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāā
āāāāāāāā āāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāā āāāāāā āāāāāāāāā āāāāāāāā āāā āāāāāā āāā
āāāāāāāāāāāāāāāāā āāāāāāāāāā āāāāāāāā āāā āāāāāā āāā
āāāāāā āāāāāā āāāāāāā āāāāāāāāāāāāāāāā āāā āāāāāāāāāāāāāāāā
āāāāāā āāāāā āāāāā āāāāāāāāāāāāāāāā āāā āāāāāāāā āāāāāāā
OPENAPI MCP SERVERš Key Architecture Highlights
š Secure In-Memory Token Management: Automatically performs the OAuth2 Client Credentials flow, safely caches tokens, and auto-refreshes them proactively before expiration. No tokens or secrets are ever written to disk or printed in terminal logs.
š Zero-Config Sandbox Mode: Connects out-of-the-box using the official Investec public Sandbox credentials. You can test account balances, payments, statements, and transaction listings instantly without registering for an developer account first.
š ļø Robust Typings: Exposes strict TypeScript type definitions for all API models, including complex payloads like batch payments (
paymultiple) and programmable card code compilation.š Stdio Transport Protocol: Implements JSON-RPC 2.0 over standard I/O (stdio) compliant with the official Model Context Protocol (MCP) specifications.
Related MCP server: paystack-mcp-server
š Repository Structure
investec-mcp-server/
āāā .github/workflows/ci.yml # Automated CI validation pipeline
āāā dist/ # Compiled JavaScript build outputs
āāā examples/ # Standalone SDK demo code
ā āāā pb-demo.ts # Demo of InvestecClient standalone usage
āāā src/ # TypeScript source code
ā āāā index.ts # MCP server declaration and tools router
ā āāā investec-client.ts # Core HTTP client & token manager
ā āāā types.ts # Strict TypeScript API schemas
āāā .env.example # Configuration settings template
āāā CONTRIBUTING.md # Open-source contribution guide
āāā LICENSE # Open source MIT License
āāā package.json # Build dependencies and commands
āāā tsconfig.json # TypeScript compilation rulesāļø Installation & Setup
1. Build from Source
Ensure you have Node.js (v18.0.0 or higher) installed on your system.
# Clone the repository
git clone https://github.com/Investec-Developer-Community/investec-mcp-server.git
cd investec-mcp-server
# Install package dependencies
npm install
# Compile TypeScript to JavaScript
npm run build2. Verify Connectivity (Sandbox Mode)
Run the sandbox integration test suite to verify that the server connects to the Investec developer sandbox API, fetches mock accounts, and reads balance sheets:
npm run test-sandboxš§ Environment Configuration
By default, the server runs in sandbox mode. To connect to your real live banking data, create a .env file in the root of the project (or copy .env.example to .env):
# 'production' to access live data, or 'sandbox' for mock accounts
INVESTEC_ENVIRONMENT=production
# Your Investec Developer credentials (obtained from Investec Online)
INVESTEC_CLIENT_ID=your_client_id
INVESTEC_CLIENT_SECRET=your_client_secret
INVESTEC_API_KEY=your_api_key
# Optional: Required for Advisor or Intermediary API scopes
INVESTEC_INTERMEDIARY_ID=your_intermediary_idKeep your credentials secure! Never commit your .env file to public version control. The included .gitignore is pre-configured to block .env uploads.
š¬ Claude Desktop Integration
To link the MCP server to your local Claude Desktop application, edit your claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add the server specification under mcpServers:
{
"mcpServers": {
"investec-banking": {
"command": "node",
"args": [
"C:/path/to/investec-mcp-server/dist/index.js"
]
}
}
}Note: Make sure to replace C:/path/to/investec-mcp-server with the absolute path to your local project directory.
š ļø Standalone SDK Usage
You can also import and use the underlying InvestecClient class as a standalone SDK in your own custom Node.js projects, independent of the MCP protocol:
import { InvestecClient } from "./src/investec-client";
async function main() {
// Uses .env variables or falls back to public Sandbox defaults
const client = new InvestecClient({ environment: "sandbox" });
// List Accounts
const response = await client.pbListAccounts();
const accounts = response.data.accounts;
console.log(`Found ${accounts.length} accounts.`);
}
main();For a complete code demonstration, see examples/pb-demo.ts.
š§° Exposed Tools Reference
The server registers the following MCP tools:
š³ Private Banking (PB)
Tool Name | Parameters | Description |
| None | List linked accounts ( cheque, savings, profiles ). |
|
| Get available, current, and currency balance detail. |
|
| Fetch filtered transaction ledger feed. |
|
| List outstanding pending transactions (e.g. card swipes). |
| None | List online profiles associated with user identity. |
|
| List accounts associated with specific profile. |
| None | Fetch registered payment beneficiaries. |
|
| Make batch payments to list of beneficiaries. |
|
| Transfer funds between own accounts. |
|
| Retrieve list of statements and tax certificates. |
|
| Fetch download link for specific statement PDF. |
š» Programmable Cards
Tool Name | Parameters | Description |
| None | List credit and debit cards linked to account. |
|
| Issue virtual cards dynamically. |
|
| Get draft/working card JS scripts. |
|
| Upload new code draft for programmable cards. |
|
| Publish and activate code for card swipe authorization. |
|
| Simulate card swipe swipe to test custom script logic. |
|
| Fetch execution history logs of script. |
|
| Retrieve script environment secrets. |
|
| Update script key-value environment secrets. |
|
| Turn programmable features on or off. |
š¢ Corporate & Institutional Banking (CIB)
Tool Name | Parameters | Description |
| None | List corporate accounts. |
|
| Get corporate transaction ledger with pagination. |
| None | List company entities under profile. |
|
| Query current shipment and order status data. |
š License
This project is open-source and released under the MIT License. Feel free to fork, distribute, and integrate this project in commercial and private setups. For official API support, consult the Investec Developer Portal.
Available Tools
37 toolsinvestec_card_countriesB
Get reference list of supported countries for card transactions.
Inputs: no named parameters.
investec_card_create_virtual_cardB
Create a virtual card for a specific account number.
Inputs: embossName (required), accountNumber (required), embossName2.
investec_card_currenciesB
Get reference list of supported currencies for card transactions.
Inputs: no named parameters.
investec_card_execute_codeA
Simulate a transaction authorization request against a card's code to test the code logic.
Inputs: cardKey (required), authorizationModel (required).
investec_card_get_cardB
Retrieve details of a specific card by its card key.
Inputs: cardKey (required).
investec_card_get_codeB
Retrieve the draft/working JavaScript code uploaded to a programmable card.
Inputs: cardKey (required).
investec_card_get_env_varsB
Retrieve environment variables (secrets/constants) configured for a card's code.
Inputs: cardKey (required).
investec_card_get_execution_historyB
Retrieve the logs and execution history of transaction approvals running on the card's programmable code.
Inputs: cardKey (required).
investec_card_get_published_codeB
Retrieve the currently active/published JavaScript code running on the programmable card.
Inputs: cardKey (required).
investec_card_list_cardsA
List all debit and credit cards on the account, including card status, programmable features, and details.
Inputs: no named parameters.
investec_card_merchantsA
Get reference list of merchant categories (MCCs).
Inputs: no named parameters.
investec_card_publish_codeA
Publish the draft code block for a card to make it active for transactions.
Inputs: cardKey (required).
investec_card_toggle_programmableB
Toggle the programmable banking feature on/off for a specific card.
Inputs: cardKey (required).
investec_card_update_codeB
Upload a draft JavaScript code block for a programmable card.
Inputs: code (required), cardKey (required).
investec_card_update_env_varsB
Save environment variables (key-value strings) for a card's programmable code.
Inputs: cardKey (required), variables (required).
investec_cib_get_account_transactionsC
Retrieve corporate transaction history for a CIB account.
Inputs: accountId (required), page, toDate, fromDate.
investec_cib_get_orders_shipments_reportB
Get current orders and shipment status report for a corporate company.
Inputs: companyName (required).
investec_cib_list_accountsA
List all Corporate Banking (CIB) accounts and balances.
Inputs: no named parameters.
investec_cib_list_companiesA
List all companies associated with the CIB corporate profile.
Inputs: no named parameters.
investec_ifi_forex_get_allowances_balanceB
Get foreign exchange allowances balance for a specific account.
Inputs: accountNo (required).
investec_ifi_forex_list_bop_reportsA
List Balance of Payments (BOP) reports for foreign exchange reporting.
Inputs: no named parameters.
investec_ifi_get_client_dashboardB
Query and view the client dashboard summary by keyword (client details, holdings).
Inputs: searchKeyword (required).
investec_ifi_list_accountsA
List accounts linked to the active Intermediary profile.
Inputs: no named parameters.
investec_pb_get_account_balanceC
Retrieve detailed balance information for a specific Private Banking account.
Inputs: accountId (required).
investec_pb_get_account_transactionsB
Retrieve transaction history for a specific Private Banking account. Supports date filtering and including pending transactions.
Inputs: accountId (required), toDate, fromDate, includePending, +1 more.
investec_pb_get_authorisation_setup_detailsA
Get authorization setup details for a profile and account (critical for understanding who needs to approve a batch payment).
Inputs: accountId (required), profileId (required).
investec_pb_get_documentB
Retrieve a specific document or statement file (returns metadata and document link).
Inputs: accountId (required), documentDate (required), documentType (required).
investec_pb_get_documentsA
List available PDF documents (such as statements and tax certificates) for an account. Supports optional fromDate and toDate filters.
Inputs: accountId (required), toDate, fromDate.
investec_pb_get_pending_transactionsB
Retrieve pending/unposted transactions for a specific Private Banking account.
Inputs: accountId (required).
investec_pb_list_accountsA
List all Private Banking (PB) accounts linked to the user profile, including account balances and details.
Inputs: no named parameters.
investec_pb_list_beneficiariesA
List all global beneficiaries defined on the user's online banking profile.
Inputs: no named parameters.
investec_pb_list_beneficiary_categoriesB
List categories used to organize beneficiaries.
Inputs: no named parameters.
investec_pb_list_profile_account_beneficiariesB
List beneficiaries linked to a specific account under a profile.
Inputs: accountId (required), profileId (required).
investec_pb_list_profile_accountsA
List all bank accounts associated with a specific Online Banking profile.
Inputs: profileId (required).
investec_pb_list_profilesA
List all Investec Online Banking profiles linked to the user.
Inputs: no named parameters.
investec_pb_pay_multipleA
Initiate batch payments to one or more beneficiaries. Note: Beneficiaries must be pre-registered and paid at least once via online banking.
Inputs: accountId (required), paymentList (required).
investec_pb_transfer_multipleA
Initiate transfers between own accounts (inter-account transfers).
Inputs: accountId (required), paymentList (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 37 tools
Tools are organized by clear domain prefixes (card, cib, ifi, pb) and each tool targets a specific action on a specific entity. No two tools have overlapping purposes; even similar actions (e.g., list_accounts) are for different domains or contexts.
All tool names follow a strict pattern: 'investec_{domain}_{action}_{detail}' using snake_case. The consistent prefix and verb_noun structure makes the surface predictable and easy to navigate.
37 tools is on the higher side, but the server covers multiple distinct banking domains (cards, corporate, intermediary, private banking), each with a reasonable set of operations. The count is justified given the breadth of functionality.
Each domain includes essential CRUD-like operations, queries, and management actions (e.g., card lifecycle, account details, transactions, beneficiaries). Minor gaps exist (e.g., updating beneficiaries, creating accounts) but these are common omissions in banking APIs.
Maintenance
Related MCP Connectors
Connect AI agents to bank accounts, transactions, balances, and investments.
Connect your Inter account to AI via Brazil's Open Finance: balances, statements, cards, investments
Connect your Necton account to AI via Brazil's Open Finance: balances, statements, cards, investment
Financial intelligence for AI: manage balances, transactions, payments, and more
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access financial data from 20,000+ banks across 40+ countries, allowing users to query account balances, transactions, and spending patterns through natural language.4MIT

paystack-mcp-serverofficial
AlicenseAqualityDmaintenanceEnables AI assistants to interact with the full range of Paystack APIs, allowing operations like transaction management, customer creation, and payments through natural language.2152 npm56MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform Nigerian banking operations including account management, payments, and identity verification through the Mono Open Banking API.59MIT
- AlicenseNot gradedqualityCmaintenanceBridges AI assistants with the Revolut Business API to enable banking operations such as listing accounts, checking balances, viewing transactions, managing counterparties, and initiating transfers through natural language.74 npm37MIT