Skip to main content

MCP server for IBM Concert — workflow health monitoring, incident diagnosis, auto-remediation, CVE triage, and Slack alerting

Project description

IBM Concert MCP Server

License: Apache 2.0

A Model Context Protocol (MCP) server that connects AI agents and assistants to IBM Concert — enabling autonomous workflow health monitoring, incident diagnosis, auto-remediation, CVE triage, and Slack alerting through natural language.

Overview

This repository contains two complementary MCP servers:

Server Module Purpose
concert-workflow-monitor src/ibm_concert_mcp/server.py Live workflow health checks, auto-remediation, CVE queries, Slack alerts, incident tracking
concert-knowledge src/ibm_concert_mcp/knowledge/server.py Semantic RAG search over IBM Concert documentation (Supabase + pgvector)

Available Tools

concert-workflow-monitor

Tool Description
list_monitored_workflows List all Concert workflows being monitored
check_workflow_health Run a live health check against one or all workflows
get_failing_workflows Return only workflows currently in ERROR/WARNING state with diagnosis
get_workflow_diagnosis Diagnose a workflow and auto-post an error alert to Slack
remediate_workflow Auto-fix a failing workflow (soft re-invoke or oc rollout restart)
get_concert_cve_summary Query Concert for top CVEs across your application inventory
trigger_package_remediation Invoke Concert's built-in package remediation workflow (raises GitHub PR + ServiceNow ticket)
upload_scan_to_concert Push an updated vulnerability/SBOM scan to Concert
send_slack_alert Post a notification to the configured Slack channel
get_incident_stats MTTR and incident statistics for the last N days
get_recent_incident_log Most recent incidents from the incident database
receive_webhook_event Process inbound Concert webhook events for zero-latency detection
record_recommendation_feedback Record 👍/👎 engineer feedback to improve future diagnoses
get_recommendation_learnings Show what the agent has learned from past feedback

concert-knowledge

Tool Description
search_concert_docs Semantic similarity search over all ingested Concert documentation
list_concert_sources List all documentation sources indexed in the knowledge base

Prerequisites

  • Python 3.10 or higher
  • pip or uv
  • Access to an IBM Concert instance
  • Slack Incoming Webhook URL (for alerting)
  • (Optional) Supabase project for incident tracking and knowledge RAG
  • (Optional) OpenShift CLI (oc) for the oc rollout restart remediation strategy

Installation

git clone https://github.com/ibm-ai-platform/ibm-concert-mcp.git
cd ibm-concert-mcp

# Workflow monitor
pip install -r requirements.txt

# Knowledge server (separate — heavier ML dependencies)
pip install -r requirements-knowledge.txt

Or with uv:

uv venv && source .venv/bin/activate
uv pip install -r requirements.txt

Configuration

Copy .env.example to .env and fill in your values:

cp .env.example .env

Required environment variables

Variable Description
CONCERT_API_KEY IBM Concert API key (base64-encoded user:token)
SLACK_WEBHOOK_URL Slack Incoming Webhook URL

Optional environment variables

Variable Default Description
CONCERT_BASE_URL TechZone gateway Concert Workflows gateway URL
CONCERT_REST_BASE_URL TechZone host Concert main host (for CVE/ingestion API)
CONCERT_INSTANCE_ID Concert instance UUID (for CVE API)
SUPABASE_URL Supabase project URL (incident DB + knowledge RAG)
SUPABASE_PUBLISHABLE_KEY Supabase anon/publishable key
OC_NAMESPACE concert-workflows OpenShift namespace for oc remediation
RUNBOOK_DIR ./runbooks Directory where auto-generated runbooks are written
RECOVERY_TIMEOUT_SECONDS 90 How long to wait for recovery after oc restart
ALERT_ON_WARNING false Also alert on HTTP 200 empty-body (warning) responses
AUTO_SLACK true Auto-post Slack alerts on diagnosis/resolution
VERIFY_TLS false Verify TLS certificates
MCP_TRANSPORT stdio stdio | sse | streamable-http
MCP_HOST 127.0.0.1 Host for SSE/HTTP transport
MCP_PORT 8000 Port for SSE/HTTP transport (workflow monitor)

For the knowledge server, also set:

Variable Description
SUPABASE_URL Supabase project URL
SUPABASE_PUBLISHABLE_KEY Supabase anon/publishable key

Usage

stdio transport (AI agent / IDE use)

Add the following to your MCP client configuration (e.g. ~/.bob/settings/mcp_settings.json, Claude Desktop claude_desktop_config.json, or VS Code mcp.json):

{
  "mcpServers": {
    "concert-workflow-monitor": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ibm-ai-platform/ibm-concert-mcp",
        "concert-workflow-monitor"
      ],
      "env": {
        "CONCERT_API_KEY": "<your-concert-api-key>",
        "SLACK_WEBHOOK_URL": "<your-slack-webhook-url>",
        "MCP_TRANSPORT": "stdio"
      }
    },
    "concert-knowledge": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ibm-ai-platform/ibm-concert-mcp[knowledge]",
        "python",
        "-m",
        "ibm_concert_mcp.knowledge.server"
      ],
      "env": {
        "SUPABASE_URL": "<your-supabase-url>",
        "SUPABASE_PUBLISHABLE_KEY": "<your-supabase-key>",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

SSE / HTTP transport (shared/remote deployment)

Run the server centrally so colleagues can point their MCP clients at a URL — no local Python install required:

export CONCERT_API_KEY=<your-key>
export SLACK_WEBHOOK_URL=<your-webhook>
export MCP_TRANSPORT=sse
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
python -m ibm_concert_mcp.server

Colleagues add this to their MCP client config:

{
  "mcpServers": {
    "concert-workflow-monitor": {
      "type": "sse",
      "url": "http://<your-server>:8000/sse"
    }
  }
}

A /health HTTP endpoint is also available at http://<host>:<port>/health for dashboard integration.

Typical incident-response loop

Once connected to an AI agent (e.g. IBM Bob, Claude), you can drive the full loop with natural language:

"Check if any Concert workflows are failing"
→ get_failing_workflows()

"Diagnose the akshay-test-fail workflow"
→ get_workflow_diagnosis("akshay-test-fail")

"Try to fix it automatically"
→ remediate_workflow("akshay-test-fail", strategy="auto")

"Post the result to Slack"
→ send_slack_alert(...)

CVE remediation loop

"Show me the top Priority 1 CVEs"
→ get_concert_cve_summary(priority="1")

"Trigger package remediation for my-app, assign to jsmith"
→ trigger_package_remediation(application_name="my-app", git_repo="...", github_assignee="jsmith")

"Upload the updated SBOM"
→ upload_scan_to_concert(scan_type="package_sbom", ...)

Learning loop

The server accumulates 👍/👎 feedback from engineers to improve future diagnoses:

"The recommendation didn't help — what actually fixed it was restarting the gateway pod"
→ record_recommendation_feedback("akshay-test-fail", vote="down", actual_fix="restart gateway pod")

"What has the agent learned so far?"
→ get_recommendation_learnings()

Registering Concert workflows to monitor

Edit the WORKFLOWS list near the top of src/ibm_concert_mcp/server.py:

WORKFLOWS = [
    # (adapter_name, environment, workflow_name, display_name)
    ("my-adapter", "prod", "my-workflow", "My Workflow Display Name"),
]

Architecture

AI Agent (Bob / Claude / etc.)
        │
        │  MCP (stdio or SSE)
        ▼
concert-workflow-monitor ──► IBM Concert Workflows API
        │                ──► OpenShift (oc rollout restart)
        │                ──► Slack (Incoming Webhook)
        │                ──► Supabase (incident DB)
        │
concert-knowledge ──────────► Supabase pgvector (Concert docs RAG)

License

Apache License 2.0 — see LICENSE.

Contributing

Pull requests welcome. See CONTRIBUTING.md for guidelines.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ibm_concert_mcp-0.1.0.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ibm_concert_mcp-0.1.0-py3-none-any.whl (45.3 kB view details)

Uploaded Python 3

File details

Details for the file ibm_concert_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: ibm_concert_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for ibm_concert_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 20f347f0a87a87344ef0e4a4e038ff408505796e0bf1292f7dca804ae20e6f13
MD5 750445b5071845c3bc19ece3b638d253
BLAKE2b-256 9a2496db962da84f3b5887940590c3ce155450e400fdee6d770be17204d95d17

See more details on using hashes here.

File details

Details for the file ibm_concert_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ibm_concert_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea22e992f16d23b98a10604beeb9750a73953b4578fe1138d496978cd7529e73
MD5 efc915ebc15a6c4288a98ff6c1273be3
BLAKE2b-256 9a1a24804874b807eaab9abe3e68ba908201299230f5a0fc20e2117116e98920

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page