MCP server for IBM Concert — workflow health monitoring, incident diagnosis, auto-remediation, CVE triage, and Slack alerting
Project description
IBM Concert MCP Server
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
piporuv- 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 theoc rollout restartremediation 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20f347f0a87a87344ef0e4a4e038ff408505796e0bf1292f7dca804ae20e6f13
|
|
| MD5 |
750445b5071845c3bc19ece3b638d253
|
|
| BLAKE2b-256 |
9a2496db962da84f3b5887940590c3ce155450e400fdee6d770be17204d95d17
|
File details
Details for the file ibm_concert_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ibm_concert_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 45.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea22e992f16d23b98a10604beeb9750a73953b4578fe1138d496978cd7529e73
|
|
| MD5 |
efc915ebc15a6c4288a98ff6c1273be3
|
|
| BLAKE2b-256 |
9a1a24804874b807eaab9abe3e68ba908201299230f5a0fc20e2117116e98920
|