Slack ↔ WxO MCP Gateway

io.github.markusvankempen由 GitHub 帳號 markusvankempen 發布v1.0.3更新於 Oct 24, 2026

Lifts WxO Slack limits: every-message wake-up, multi-channel MCP. https://markusvankempen.github.io/

概覽

AI 產生的概覽

一個本機閘道,將 Slack 頻道連接到 watsonx Orchestrate 代理,並向 MCP 用戶端提供 Slack、WxO 與維運工具。

可以做什麼
管理頻道與代理的綁定並檢視目前設定表(list_bindings、upsert_binding)。讀取 Slack 頻道、近期訊息、討論串回覆與訊息脈絡,並張貼討論串回覆或輸入狀態。列出 watsonx Orchestrate 代理並呼叫綁定的代理執行。執行一次輪詢、檢視閘道狀態、讀取近期日誌並執行 Slack/WxO 診斷。
適用情境
當你希望把多個 Slack 頻道的訊息路由到不同的 watsonx Orchestrate 代理並在原討論串回覆,或希望 IDE 與代理工具組透過同一主機以 MCP 存取 Slack 和 WxO 操作時使用。
執行需求
透過 npx 在本機執行(README 要求 Node 18+ 與 Python 3.10+)。需要 SLACK_BOT_TOKEN、WXO_API_KEY 和 WXO_INSTANCE_URL,Events 模式可選 SLACK_SIGNING_SECRET,WXO_AGENT_ID 可設預設代理。Slack 機器人需 channels:read、groups:read 和 reactions:write 權限。GATEWAY_TRANSPORT 選擇 stdio 或 streamable-http。
安裝前請注意
需要 Slack 機器人權杖與簽章密鑰以及 watsonx Orchestrate API 金鑰,應放在環境變數或 .env 檔案中。它會讀取 Slack 訊息並張貼回覆,也能啟動 WxO 代理執行,因此會寫入 Slack 並消耗 WxO 用量。僅當設定 GATEWAY_ADMIN_USER 和 GATEWAY_ADMIN_PASSWORD 時管理介面與 API 才受保護;/mcp 與 /slack/events 維持公開。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Slack ↔ WxO MCP Gateway,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Slack ↔ WxO MCP Gateway

Author: Markus van Kempen
Email: [email protected] · [email protected]
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

mermaid
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 --> Bind

Why this approach (WxO limits → lift)

WxO / Slack limitTagGateway lift
byo_slack ≈ @mention / DM onlyevery-messagePoller / Events wake agents on every human message
Hard to run many channels → many agentsmulti-channel multi-agentOne bindings table + admin UI
Thread follow-ups easy to dropthread-followupsReads thread replies + context
Noisy finals (done, etc.) in Slackgateway-thread no-done-noiseGateway posts answers; filters noise
Agents need remote tools with real DNSmcp-toolkit streamable-httpHosted /mcp for Orchestrate toolkits
Ops stuck cloning pollersops-self-serveMCP tools + diagnostics + logs
Slack ops only inside Slack/WxO UIide-paritySame 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).


npm / MCP identity

npm@markusvankempen/slack-wxo-mcp-gateway
MCP nameio.github.markusvankempen/slack-wxo-mcp-gateway
Topicsmcp · mcp-server · slack · watsonx · watsonx-orchestrate · ibm · wxo · byo-slack · multi-channel · code-engine · streamable-http · cursor · agentic-ai

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):

mermaid
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"]
ModeCommandUse
A Local HTTP./scripts/run.sh --mode httpUI + /mcp + poller on laptop
B Podman/Docker./scripts/run.sh --mode podmanSame app in a container
C Code Engine./scripts/run.sh --mode ceAlways-on HTTPS
D IDE MCP./scripts/run.sh --mode ideCursor / VS Code stdio snippets (+ --exec)
Ngrok demo./scripts/run.sh --mode ngrokA + tunnel + WxO toolkit
bash
./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 Engine

Deep 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.

GuideFocus
docs/frameworks/Index + checklist
docs/frameworks/langgraph.mdLangGraph / LangChain
docs/frameworks/llamaindex.mdLlamaIndex
docs/frameworks/openai-agents.mdOpenAI Agents SDK

Install (npm / npx) — not from this repo

bash
# Hosted HTTP + admin UI (default)npx -y @markusvankempen/slack-wxo-mcp-gateway
# IDE / stdio MCPnpx -y @markusvankempen/slack-wxo-mcp-gateway --stdio

Requires Node 18+ and Python 3.10+. Env template: .env.example. Guides: local-ngrok · code-engine.


Mental model

Multi-channel routing:

mermaid
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):

mermaid
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)

FieldMeaning
slack_channel_ide.g. C0BHWEZ7NLC
wxo.agent_idTarget Orchestrate agent
modepoll | events | both
reply_modegateway_thread = gateway posts Slack thread after Runs API; agent_tools = only start agent
poll_sec / lookback_secPoller timing

Secrets: use ${ENV_VAR} (loaded from .env).


Endpoints

PathRole
/Admin UI
/mcpMCP streamable HTTP
/slack/eventsSlack Event Subscriptions
/healthLiveness
/api/logsLog ring buffer
/api/toolsMCP tool catalog
/api/diagnosticsSlack + WxO checks
/api/pollOne poll cycle
/api/configMasked JSON / raw YAML

Admin dashboard auth

bash
GATEWAY_ADMIN_USER=adminGATEWAY_ADMIN_PASSWORD=choose-a-strong-password

Protects / and /api/*. Public: /health, /mcp, /slack/events.

IBM Code Engine

bash
./deploy_code_engine.sh./test_code_engine.sh

Register the toolkit:

bash
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:

AgentRole
agent.yaml → slack_gateway_test_agentFull-toolkit smoke
agents/slack_gateway_ops_agent.yamlDay-2 ops / routing
agents/slack_gateway_answer_agent.yamlChannel answers (gateway_thread)

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:

json
{  "mcpServers": {    "slack-wxo-gateway": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://YOUR-HOST/mcp"]    }  }}

Package identity:


License

Apache-2.0 — © Markus van Kempen
https://markusvankempen.github.io/ · https://github.com/markusvankempen

來源:README.md,提交 a6ed8ab

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.3最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分