GoldenGate 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., "@GoldenGate MCP Servershow me the last 10 transactions for account 123456"
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.
GoldenGate MCP Server
A production-grade Model Context Protocol server that exposes real-time banking data — replicated via Oracle GoldenGate CDC — as structured tools for AI agents and LLM clients.
The core banking system is treated as a black box. The server connects only to the downstream Oracle replica and optionally to Kafka topics, never to the source transactional system.
Tool Catalog
Read tools (read tier)
Tool | Description |
| Fetch any entity (customer, account, transaction, alert) by type and ID |
| Paginated transaction history for an account (up to 365-day range) |
| Recent CDC change events from Kafka, with automatic Oracle fallback |
| GL balance for a given account, currency, and value date |
| Query the alert queue by type and/or status |
Score tools (score tier)
Tool | Description |
| LLM risk score (0–100) for any event — 180 ms hard timeout, never blocks |
| Fetch an alert and classify it as genuine or false positive |
| Draft a SAR / CTR / compliance summary — always includes human-review gate |
Write tools (write tier)
Tool | Description |
| Flag, block, or unblock an entity via the configured write-back endpoint |
| Post a GL correction, hold release, or workflow approval/rejection |
Note: Write tools (
flag_entity,post_adjustment) requireWRITEBACK_BASE_URLto be configured. They are always registered but return a configuration error if called without it.
Related MCP server: Meridian Bank MCP Server
Architecture
AI Agent / LLM Client
│ MCP protocol (stdio or HTTP)
▼
┌─────────────────────────────────────────┐
│ GoldenGate MCP Server │
│ │
│ read_tools.py score_tools.py │
│ write_tools.py │
│ │ │ │
│ OracleClient AnthropicClient │
│ KafkaConsumer WritebackClient │
│ SchemaMapper CircuitBreaker │
│ AuditLog │
└─────────────────────────────────────────┘
│ │
▼ ▼
Oracle GoldenGate Kafka Topics
replica (read-only) (CDC events)Key invariants:
Schema mapping via
schema_map.yaml— zero hardcoded column/table names in codeAll SQL in
db/queries.py— zero inline SQL in tool logicPydantic validation on every input before any DB or HTTP call
Every tool call produces an immutable SHA-256-hashed audit log entry
Every error message includes a suggested next step for the agent
Prompt injection protection: user-controlled fields are always in separate structured content blocks, never interpolated into system prompts
Quick Start
1. Clone and install
git clone https://github.com/your-org/goldengate-mcp.git
cd goldengate-mcp
pip install -e ".[dev]"Note:
python-oracledbmay not be on your corporate PyPI mirror. Install it separately:pip install python-oracledb
2. Configure
Copy the example env file and fill in your values:
cp .env.example .envMinimum required for read tools (real replica):
ORACLE_DSN=your-host:1521/ORCL
ORACLE_USER=mcp_reader
ORACLE_PASSWORD=your-passwordLocal testing without Oracle: leave ORACLE_PASSWORD empty (or omit it). The server starts and MCP tools still register; read/score tools that hit the database will error until you configure a working Oracle connection.
3. Run
# Streamable HTTP on http://127.0.0.1:8000/mcp (default when using Python directly — MCP Inspector)
python -m src.server
# stdio transport (Claude Desktop compatible) — requires fastmcp CLI on PATH
fastmcp run src/server.py
# Same HTTP as `python -m src.server` but via CLI (optional)
fastmcp run src/server.py --transport streamable-http --host 127.0.0.1 --port 8000Direct python -m src.server uses Streamable HTTP bound to 127.0.0.1:8000. Connect the MCP Inspector to http://127.0.0.1:8000/mcp (transport: Streamable HTTP).
4. Docker
docker build -t goldengate-mcp .
docker run --env-file .env goldengate-mcpConfiguration Reference
All settings are loaded from environment variables (or .env file).
Variable | Default | Description |
|
| Oracle connection string |
|
| Oracle username |
| (empty) | Non-empty = open replica pool at startup; empty = skip Oracle (local MCP testing) |
|
| Minimum pool connections |
|
| Maximum pool connections |
|
| Retries on transient Oracle errors ( |
| (optional) | Required for score tools |
| (optional) | Comma-separated brokers; leave empty to disable Kafka |
|
| Kafka consumer group ID |
| (optional) | REST endpoint for write tools; leave empty to disable |
| (optional) | Bearer token for write-back endpoint |
|
| HTTP timeout for write-back calls |
|
| Max writes per minute before circuit trips |
|
| Circuit breaker window duration |
|
| Comma-separated roles for read tier |
|
| Comma-separated roles for score tier |
|
| Comma-separated roles for write tier |
|
| Reject calls with no auth context |
|
|
|
|
| Path for file-mode audit log |
|
| Path to schema mapping YAML |
Schema Mapping
Physical Oracle table and column names live only in src/schema/schema_map.yaml. The server exposes logical names to agents.
Example — adding a new entity requires only a YAML edit:
entities:
my_entity:
table: BANKING.MY_TABLE
columns:
id: MY_PK_COL
status: STATUS_CODE
amount: TXN_AMOUNTget_entity("my_entity", "123") works immediately — no code changes needed.
RBAC
Tools enforce role-based access via the MCP context metadata. Set the caller's role when configuring your MCP client:
{
"mcpServers": {
"goldengate": {
"command": "fastmcp",
"args": ["run", "/path/to/src/server.py"],
"env": {
"ORACLE_DSN": "host:1521/ORCL",
"ORACLE_PASSWORD": "secret"
}
}
}
}Tier | Roles (default) | Tools |
|
| All read tools |
|
| All score tools |
|
| All write tools |
Roles are configured via RBAC_*_ROLES env vars — no code changes needed to add roles.
Worked Example
Fraud triage loop — five tool calls to go from raw event to SAR draft:
1. get_realtime_events(topic="banking.transactions", lookback_minutes=5)
→ list of recent CDC events from Kafka (or Oracle fallback)
2. score_event(event=<event>, scoring_context={"account_type": "retail"})
→ { score: 87, decision: "review", reasoning: "...", confidence: 0.91 }
3. classify_alert(alert_id="A001", alert_type="fraud")
→ { is_false_positive: false, recommended_action: "escalate_to_compliance" }
4. flag_entity(entity_type="transaction", entity_id="T001",
action="flag", reason="score 87/100, AML pattern match")
→ { status: "flagged", reference: "REF-2024-001" }
5. generate_report_draft(report_type="SAR", subject_id="C001",
evidence_ids=["A001", "T001"])
→ { draft_narrative: "...", HUMAN_REVIEW_REQUIRED: true }Development
# Run tests (no Oracle, Kafka, or Anthropic account needed)
pytest
# Run with coverage
pytest --cov=src --cov-report=term-missing
# Lint
ruff check src testsAll 140 tests run against in-memory mocks — zero external dependencies required for development.
Supported Entities
Logical name | Oracle table | Used by |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for building and testing AI agents with multi-model experimentation and insights.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that lets AI models interact with Oracle Fusion Cloud HCM across its entire REST surface. It uses generic, schema-aware tools to dynamically discover licensed modules and resources without per-endpoint code.6Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA production-grade MCP server for a fictional digital bank, exposing tools for an AI copilot to service customers across the full risk spectrum from read-only lookups to money movement and destructive admin actions, with OAuth 2.1 security and a realistic dataset.13 npm1-
- FlicenseAqualityBmaintenanceMCP server exposing a fictional payment domain as tools, resources, and prompts, enabling reasoning over transactions, payment hubs, services, and system health.8-
- AlicenseNot gradedqualityBmaintenanceMCP server that exposes banking data (connections, accounts, balances, transactions) and agent skills, allowing AI agents to query and refresh financial data via stdio.44 npm6Apache 2.0