Slack ↔ WxO MCP Gateway
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., "@Slack ↔ WxO MCP Gatewaylist current Slack channel bindings"
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.
Slack ↔ WxO MCP Gateway
Author: Markus van Kempen
Email: mvankempen@ca.ibm.com · markus.van.kempen@gmail.com
Web: https://markusvankempen.github.io/ · GitHub
npm: @markusvankempen/slack-wxo-mcp-gateway · MCP: io.github.markusvankempen/slack-wxo-mcp-gateway
This GitHub repo is documentation + registry metadata. It does not include the runnable application source.
Install / run via npm:npx -y @markusvankempen/slack-wxo-mcp-gateway· Site: https://markusvankempen.github.io/
Pitch: MCP gateway that lifts watsonx Orchestrate Slack limitations — every-message wake-up, multi-channel→multi-agent routing, clean in-thread replies, and a streamable-http toolkit for WxO + Cursor / VS Code / Bob / Antigravity — without replacing your agents.
tags: wxo-limitations · byo-slack · every-message · multi-channel · multi-agent · thread-followups · gateway-thread · no-done-noise · mcp-toolkit · streamable-http · poller · code-engine · ngrok · agentic-ai
One config site: map many Slack channels → many WxO agents.
Poller (and optional Slack Events) wake agents.
Same host exposes an MCP toolkit (/mcp) for WxO / Cursor / other clients.
Deep dive: Why this MCP — lifting WxO limits
Architecture at a glance
flowchart LR
subgraph Slack
C1["#support"]
C2["#orders"]
C3["#ops"]
end
subgraph Gateway["Slack ↔ WxO MCP Gateway"]
Bind["config.yaml bindings"]
Poll["Poller / Events"]
MCP["/mcp streamable-http"]
UI["Admin UI /"]
end
subgraph WxO["watsonx Orchestrate"]
A1["Agent A"]
A2["Agent B"]
A3["Agent C"]
end
subgraph Clients["MCP clients"]
IDE["Cursor / VS Code / Bob / …"]
TK["WxO toolkits"]
end
C1 & C2 & C3 --> Poll
Poll --> Bind
Bind --> A1 & A2 & A3
A1 & A2 & A3 -.->|gateway_thread reply| Poll
IDE & TK --> MCP
UI --> BindWhy this approach (WxO limits → lift)
WxO / Slack limit | Tag | Gateway lift |
|
| Poller / Events wake agents on every human message |
Hard to run many channels → many agents |
| One bindings table + admin UI |
Thread follow-ups easy to drop |
| Reads thread replies + context |
Noisy finals ( |
| Gateway posts answers; filters noise |
Agents need remote tools with real DNS |
| Hosted |
Ops stuck cloning pollers |
| MCP tools + diagnostics + logs |
Slack ops only inside Slack/WxO UI |
| Same tools in Cursor, VS Code, Bob, Antigravity, Claude |
WxO stays the brain (LLMs, skills, flows). This gateway is the Slack + routing + MCP edge.
Bring-your-own agent frameworks: docs/frameworks/ (LangGraph, LlamaIndex, OpenAI Agents).
Related MCP server: slack-mpm
npm / MCP identity
npm |
|
MCP name |
|
Topics |
|
Full keyword list lives in package.json for npm discoverability.
Publish & run modes (A–D)
One package / one image — pick a mode (see docs/PUBLISH-MODES.md):
flowchart TB
PKG["npm @markusvankempen/slack-wxo-mcp-gateway<br/>+ optional container image"]
PKG --> A["A Local HTTP<br/>:3100 UI + /mcp + poller"]
PKG --> B["B Podman / Docker<br/>:8080"]
PKG --> C["C Code Engine<br/>HTTPS always-on"]
PKG --> D["D IDE stdio<br/>Cursor / VS Code / Bob"]
A --> N["ngrok demo tunnel"]
A & B & C --> R["Remote /mcp clients"]
D --> L["Local MCP session"]Mode | Command | Use |
A Local HTTP |
| UI + |
B Podman/Docker |
| Same app in a container |
C Code Engine |
| Always-on HTTPS |
D IDE MCP |
| Cursor / VS Code stdio snippets (+ |
Ngrok demo |
| A + tunnel + WxO toolkit |
./scripts/run.sh --mode ide # print Cursor + VS Code mcp.json
./scripts/run.sh --mode http # local host :3100
./scripts/run.sh --mode podman # container :8080
./scripts/run.sh --mode ce # IBM Code EngineDeep guides: docs/local-ngrok/ · docs/code-engine/ · docs/ide/
Index: docs/README.md · Setup: SETUP.md
Copy-paste IDE JSON: examples/mcp/
Agent frameworks (LangGraph · LlamaIndex · OpenAI Agents)
Connect frameworks to this MCP — do not embed them in the gateway.
Guide | Focus |
Index + checklist | |
LangGraph / LangChain | |
LlamaIndex | |
OpenAI Agents SDK |
Install (npm / npx) — not from this repo
# Hosted HTTP + admin UI (default)
npx -y @markusvankempen/slack-wxo-mcp-gateway
# IDE / stdio MCP
npx -y @markusvankempen/slack-wxo-mcp-gateway --stdioRequires Node 18+ and Python 3.10+. Env template: .env.example. Guides: local-ngrok · code-engine.
Mental model
Multi-channel routing:
flowchart LR
S1["#support"] --> G["Gateway bindings"]
S2["#orders"] --> G
S3["#ops"] --> G
G --> WA["WxO agent A"]
G --> WB["WxO agent B"]
G --> WC["WxO agent C"]Message path (reply_mode: gateway_thread):
sequenceDiagram
participant U as Slack user
participant Ch as Channel / thread
participant GW as Gateway poller
participant Wx as WxO Runs API
participant Bot as Slack bot reply
U->>Ch: Human message
GW->>Ch: Read new messages / replies
GW->>Wx: Start bound agent run
Wx-->>GW: Agent answer text
GW->>Bot: chat.postMessage in thread
Bot-->>Ch: Clean reply (no done noise)Same host also serves MCP at /mcp and the admin UI at /.
Config (config.yaml)
Field | Meaning |
| e.g. |
| Target Orchestrate agent |
|
|
|
|
| Poller timing |
Secrets: use ${ENV_VAR} (loaded from .env).
Endpoints
Path | Role |
| Admin UI |
| MCP streamable HTTP |
| Slack Event Subscriptions |
| Liveness |
| Log ring buffer |
| MCP tool catalog |
| Slack + WxO checks |
| One poll cycle |
| Masked JSON / raw YAML |
Admin dashboard auth
GATEWAY_ADMIN_USER=admin
GATEWAY_ADMIN_PASSWORD=choose-a-strong-passwordProtects / and /api/*. Public: /health, /mcp, /slack/events.
IBM Code Engine
./deploy_code_engine.sh
./test_code_engine.shRegister the toolkit:
orchestrate toolkits add -k mcp -n slack_wxo_gateway \
--url "https://YOUR-HOST/mcp" \
--transport streamable_http \
--tools "*"MCP tools (14)
Config: list_bindings, upsert_binding
Slack: list_slack_channels, list_recent_messages, list_thread_replies, get_message_context, post_thread_reply, set_typing_indicator
WxO: list_wxo_agents, invoke_wxo_agent
Ops: poll_once, get_gateway_status, get_recent_logs, run_diagnostics_tool
Bot scopes: channels:read, groups:read, reactions:write (reinstall Slack app after adding).
Agents:
Agent | Role |
| Full-toolkit smoke |
Day-2 ops / routing | |
Channel answers ( |
Setup (Slack + WxO): SETUP.md — also live in admin UI → Setup
Use cases + test plan: USE_CASES.md
Publish (npm / GitHub): PUBLISH.md
Reply modes
gateway_thread (default) — poller/Events → Runs API → gateway chat.postMessage in thread. Use the answer-only agent (no done).
agent_tools — gateway only starts the agent; agent uses its own Slack tools.
Cursor / VS Code / Bob / Antigravity / Claude
See docs/ide/ for each client. Quick remote bridge:
{
"mcpServers": {
"slack-wxo-gateway": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://YOUR-HOST/mcp"]
}
}
}Package identity:
MCP:
io.github.markusvankempen/slack-wxo-mcp-gateway
License
Apache-2.0 — © Markus van Kempen
https://markusvankempen.github.io/ · https://github.com/markusvankempen
This server cannot be deployed
Maintenance
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Related MCP Servers
FlicenseNot gradedqualityBmaintenanceSelf-hosted MCP gateway that connects Claude, ChatGPT, and other AI agents to 20+ enterprise tools (GitLab, Jira, Notion, Google Workspace, Slack, Grafana, …) with OAuth, audit logs, and zero data leaving your infrastructure-- FlicenseBqualityDmaintenanceMCP server for Slack workspace integration, exposing 40+ Slack operations as tools for Claude Desktop and providing a clean async Python API.641-
- FlicenseBqualityDmaintenanceMCP server for IBM Watson Orchestrate (WXO). Manage tools, agents, connections, flows, and execute tools from Cursor, VS Code Copilot, Claude Desktop, Antigravity, Windsurf, or the WxO Builder extension.35-
- FlicenseAqualityCmaintenanceMCP server for sending messages to Slack channels and replying in threads, with automatic channel name resolution and support for Claude Desktop and KADI agents.2-