
An MCP Server for the OBP API
概览
MCP Server for the Open Bank Project API - enables AI assistants to interact with 600+ OBP API endpoints via tag-based routing and glossary access. Top to bottom: users reach OBP through the OBP-Portal / API Explorer II frontend, which talks to Opey; Opey and external MCP clients (Claude Code, Claude Desktop, IDE agents) call OBP-MCP over MCP/HTTP; OBP-MCP makes the authenticated HTTPS calls to OBP-API, which in turn reaches core banking systems via its southbound connectors. OBP-OIDC issues and validates the tokens used at each hop. The numbered orange flow shows how user consent is obtained when a tool call requires a Consent-JWT: OBP-MCP returns consent_required, Opey surfaces it to the frontend as an SSE event, the frontend creates an implicit consent on OBP-API, and the tool call is retried with the Consent-JWT header.
README
以下为原文 README 节选,完整内容请查看原文。
OBP-MCP
MCP Server for the Open Bank Project API - enables AI assistants to interact with 600+ OBP API endpoints via tag-based routing and glossary access.
Architecture
Top to bottom: users reach OBP through the OBP-Portal / API Explorer II frontend, which talks to Opey; Opey and external MCP clients (Claude Code, Claude Desktop, IDE agents) call OBP-MCP over MCP/HTTP; OBP-MCP makes the authenticated HTTPS calls to OBP-API, which in turn reaches core banking systems via its southbound connectors. OBP-OIDC issues and validates the tokens used at each hop. The numbered orange flow shows how user consent is obtained when a tool call requires a Consent-JWT: OBP-MCP returns consent_required, Opey surfaces it to the frontend as an SSE event, the frontend creates an implicit consent on OBP-API, and the tool call is retried with the Consent-JWT header.
Opey also makes some direct (non-MCP) HTTP calls to OBP-API for its own infrastructure — session validation, admin operations, checkpoint persistence and health probes — covered by a separate detail diagram.
The editable masters live in Lucidchart: architecture overview · Opey direct-HTTP detail. To update the image: edit the Lucid doc, export the page as PNG, upload it to a GitHub issue comment, and replace the github.com/user-attachments/assets/... URL here (and in the Opey README and the OBP-API glossary, which embed the same image).
Quick Start
Install uv
MacOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Setup
- Create
.envfile:
OBP_BASE_URL=https://apisandbox.openbankproject.com
OBP_VERSION_TO_CALL=v7.0.0
API_VERSION_OF_INTEREST=v7.0.0
FASTMCP_HOST=127.0.0.1
FASTMCP_PORT=9100
- Generate indexes:
uv run python scripts/generate_endpoint_index.py
uv run python scripts/generate_glossary_index.py
- Run server:
uv sync
./run_server.sh
Server starts at http://0.0.0.0:9100
Authentication
Two separate settings control auth. Don’t mix them up — both can involve OAuth:
| Setting | Controls | Values |
|---|---|---|
AUTH_PROVIDER (with ENABLE_OAUTH) |
How a client connects to this MCP server | bearer-only, obp-oidc, keycloak, or off |
OBP_AUTHORIZATION_VIA |
How this server’s calls to OBP-API are authorized | consent (Consent mode) or oauth (OAuth mode) |
- Consent mode — every call to OBP-API carries a
Consent-JWTsupplied by the client with the tool call. AnyAuthorizationheader from the client is dropped. Without a Consent-JWT, calls to non-public endpoints returnconsent_required. Use this for Opey.
安装
npx -y mcp-remote http://127.0.0.1:9100/mcp配置
"mcpServers": {
"obp-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:9100/mcp"
],
"env": {}
}
}