MCP RAN POC
An MCP server for querying databases and managing Kubernetes clusters.
MCP RAN POC
⚠️ WARNING: THIS IS A PROOF OF CONCEPT (POC) - NOT FOR PRODUCTION USE ⚠️
This repository contains MCP (Model Context Protocol) servers and an ADK agent for database querying and Kubernetes cluster management:
- TALM MCP Server - TALM (Topology Aware Lifecycle Manager) interface for Red Hat ACM
- PostgreSQL MCP Server - Natural language SQL query interface for PostgreSQL databases
- ADK Agent - Google ADK agent providing unified web-based natural language interface to both MCP servers
Architecture Overview
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Web Browser │ │ Claude Desktop │ │ Other MCP │
│ + ADK Agent │ │ Client │ │ Clients │
│ :8000 │ │ │ │ │
└─────────┬───────────┘ └─────────┬───────────┘ └─────────┬───────────┘
│ │ │
└──────────────┬───────────┴────────────┬─────────────┘
│ │
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────────────┐
│ PostgreSQL MCP │ │ TALM MCP Server │
│ Server :3000 │ │ :3001 │
└─────────┬───────────────┘ └─────────┬───────────────────────┘
│ │
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────────────┐
│ PostgreSQL Database │ │ Kubernetes Clusters │
└─────────────────────────┘ └─────────────────────────────────┘
Deployment Options
Local Development
# Install dependencies
uv sync
# Run PostgreSQL MCP server (port 3000)
uv run python servers/ocloud-pg.py --transport streamable-http --port 3000
# Run TALM MCP server (port 3001)
uv run python servers/talm.py --transport streamable-http --port 3001
# Run ADK web interface (connects to both servers)
cd clients && adk web
OpenShift Container Platform (OCP) Deployment
Prerequisites
- OpenShift CLI (
oc) installed and logged in - Docker/Podman for building images
- Access to a container registry (quay.io)
Quick Deploy
# 1. Setup environment variables
cp .env.example .env
# Edit .env with your PostgreSQL and OpenAI credentials
# 2. Build and push container image
make dev-build-push
# 3. Deploy to OpenShift
make deploy
# 4. Get application URL
oc get route mcp-app-route -n mcp-poc -o jsonpath='{.spec.host}'
Available Make Commands
make build- Build Docker imagemake push- Push image to registrymake dev-build-push- Build and push with dev tagmake deploy- Deploy to OpenShift using kustomizemake undeploy- Remove deployment from OpenShift
Environment Configuration
Create .env file with required variables:
# Multi-Database Configuration
# Alarms Database
ALARMS_DB_HOST=your-postgres-host
ALARMS_DB_PORT=5432
ALARMS_DB_NAME=alarms
ALARMS_DB_USER=alarms
ALARMS_DB_PASSWORD=your-password
# Resources Database
RESOURCES_DB_HOST=your-postgres-host
RESOURCES_DB_PORT=5432
RESOURCES_DB_NAME=resources
RESOURCES_DB_USER=resources
RESOURCES_DB_PASSWORD=your-password
# Clusters Database
CLUSTERS_DB_HOST=your-postgres-host
CLUSTERS_DB_PORT=5432
CLUSTERS_DB_NAME=clusters
CLUSTERS_DB_USER=clusters
CLUSTERS_DB_PASSWORD=your-password
# OpenAI API Configuration
OPENAI_API_KEY=your-openai-api-key-here
OPENAI_MODEL=openai/gpt-4.1
# MCP Server URLs (automatically configured in deployment)
POSTGRES_MCP_URL=http://localhost:3000/mcp
TALM_MCP_URL=http://localhost:3001/mcp
Deployment Architecture
- Single Pod Deployment: Three containers run in the same pod:
- PostgreSQL MCP server (port 3000)
- TALM MCP server (port 3001)
- ADK web interface (port 8000)
- Shared Networking: ADK client connects to both MCP servers via localhost
- External Access: Only the web interface (port 8000) is exposed via OpenShift Route
- Security: TLS termination at the edge, automatic HTTPS redirect
- RBAC: Uses dedicated ServiceAccount with admin ClusterRole for TALM operations
Local Client Options
Option 1: Google ADK Web Interface (Recommended)
cd clients && adk web
Access at http://localhost:8000 for unified natural language interface to both:
- PostgreSQL database querying and analysis
- Kubernetes cluster management via TALM
Option 2: Claude Desktop Client
Configure MCP servers in Claude Desktop config:
Configure Claude Desktop Client
Add these configurations to your Claude Desktop config:
TALM Server Configuration
{
"mcpServers": {
"talm": {
"command": "uv",
"args": [
"run",
"python", "servers/talm.py"
],
"cwd": "/path/to/mcp-ran-poc",
"env": {
"KUBECONFIG": "/path/to/your/kubeconfig.yaml"
}
}
}
}
PostgreSQL Server Configuration
{
"mcpServers": {
"postgres": {
"command": "uv",
"args": [
"run",
"python", "servers/ocloud-pg.py"
],
"cwd": "/path/to/mcp-ran-poc",
"env": {
"ALARMS_DB_HOST": "your-postgres-host",
"ALARMS_DB_PORT": "5432",
"ALARMS_DB_NAME": "alarms",
"ALARMS_DB_USER": "alarms",
"ALARMS_DB_PASSWORD": "your-password",
"RESOURCES_DB_HOST": "your-postgres-host",
"RESOURCES_DB_PORT": "5432",
"RESOURCES_DB_NAME": "resources",
"RESOURCES_DB_USER": "resources",
"RESOURCES_DB_PASSWORD": "your-password",
"CLUSTERS_DB_HOST": "your-postgres-host",
"CLUSTERS_DB_PORT": "5432",
"CLUSTERS_DB_NAME": "clusters",
"CLUSTERS_DB_USER": "clusters",
"CLUSTERS_DB_PASSWORD": "your-password"
}
}
}
}
Working Configuration Example
This format has been tested and works:
{
"mcpServers": {
"talm": {
"command": "/path/to/uv",
"args": [
"run",
"--directory", "/path/to/mcp-ran-poc/servers",
"python", "talm.py"
],
"env": {
"KUBECONFIG": "/path/to/your/kubeconfig.yaml"
}
},
"postgres": {
"command": "/path/to/uv",
"args": [
"run",
"--directory", "/path/to/mcp-ran-poc/servers",
"python", "ocloud-pg.py"
],
"env": {
"ALARMS_DB_HOST": "your-postgres-host",
"ALARMS_DB_PORT": "5432",
"ALARMS_DB_NAME": "alarms",
"ALARMS_DB_USER": "alarms",
"ALARMS_DB_PASSWORD": "your-password",
"RESOURCES_DB_HOST": "your-postgres-host",
"RESOURCES_DB_PORT": "5432",
"RESOURCES_DB_NAME": "resources",
"RESOURCES_DB_USER": "resources",
"RESOURCES_DB_PASSWORD": "your-password",
"CLUSTERS_DB_HOST": "your-postgres-host",
"CLUSTERS_DB_PORT": "5432",
"CLUSTERS_DB_NAME": "clusters",
"CLUSTERS_DB_USER": "clusters",
"CLUSTERS_DB_PASSWORD": "your-password"
}
}
}
}
Replace:
/path/to/mcp-ran-pocwith this repository's absolute path/path/to/your/kubeconfig.yamlwith your cluster's kubeconfig fileyour-postgres-hostwith your PostgreSQL server hostnameyour-passwordwith your actual database passwords for each database
Server Features
TALM Server
- Resources: Access to managed clusters, policies, and cluster status
- Tools: Cluster remediation, health checks, and CGU management
- Prompts: Guided workflows for cluster lifecycle operations
PostgreSQL Server
- Tools:
execute_query(database, query)- Execute read-only SQL queries safely - Security: Only SELECT and WITH queries allowed
- Response: JSON format with query results, metadata, and executed SQL
ADK Agent
- Unified Natural Language Interface: Handles both database and cluster operations
- Database Operations: Convert questions to SQL queries automatically
- Cluster Operations: Manage Kubernetes clusters via TALM commands
- Query Explanation: Shows SQL reasoning before execution
- Result Analysis: Provides insights and analysis of both database and cluster data
- Schema Exploration: Helps understand database structure and cluster topology
- Web Interface: User-friendly browser-based interaction at
http://localhost:8000 - Dual MCP Integration: Seamlessly connects to both PostgreSQL and TALM MCP servers
相關伺服器
Domainkits.com MCP
Domain intelligence tools - NS reverse lookup, newly registered domain search and more
MantraChain
Interact with the MantraChain (Cosmos SDK) blockchain.
MySQL MCP Tools
A server providing tools for querying and managing a MySQL database.
LanceDB
A vector database server for storing, searching, and managing vector embeddings.
Apache AGE MCP
MCP server for Apache AGE graph databases on PostgreSQL. **21 MCP tools** — the most comprehensive Apache AGE MCP server (graph CRUD, Cypher queries, batch transactions, semantic search, Graph RAG, vis.js visualization, export/import) - **F#/.NET** — the only non-Python Apache AGE MCP server, installs as a single dotnet tool - **Production-grade** — BenchmarkDotNet-verified performance (cached queries in 62 ns, Cypher in 1 ms) - **Open source** — MIT license, published on [NuGet](https://www.nuget.org/packages/AgeMcp) - **Documentation** — full docs site at neftedollar.com/age-mcp
Kusto MCP Server
An MCP server for Azure Data Explorer (Kusto) that enables AI assistants to interact with Kusto databases.
Dataset Viewer
Interact with the Hugging Face Dataset Viewer API to browse, filter, and get statistics for datasets.
Clearbook
MCP server for discovering UK regulated professional services — conveyancers, mortgage brokers, and financial advisers from SRA, FCA, and Companies House registers.
BigQuery Analysis
Execute and validate SQL queries against Google BigQuery. It safely runs SELECT queries under 1TB and returns results in JSON format.
MySQL Server
A server for performing MySQL database operations.