Slack ↔ WxO MCP Gateway
Click on "Install 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: mcpgate
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceA general-purpose MCP gateway that exposes your local CLI skills to any AI assistant.Last updated171MIT

mcpgateofficial
Flicense-qualityAmaintenanceSelf-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 infrastructureLast updated- AlicenseAqualityBmaintenanceOne local gateway for all your MCP servers — shared by every AI coding tool (Claude, Cursor, VS Code, Codex). Set up each server once; keys stay in the OS keychain; lazy discovery keeps agent context small. Local-first, open source.Last updated4231106MIT
- Flicense-qualityBmaintenanceMCP server for Slack workspace integration, exposing 40+ Slack operations as tools for Claude Desktop and providing a clean async Python API.Last updated1
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/markusvankempen/slack-wxo-mcp-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server