Skip to Content
SimulatorsSlackMCP server

Simulators

MCP server

Harbor runs the unmodified korotovsky Slack MCP server 1.3.0 against the simulator, so an agent that talks to Slack through MCP works against a seeded workspace. Each of its four tools lands on a Web API call the simulator serves. The same calls by hand read the #help thread and post a reply:

curl -s -X POST "$RYSTIC_URL/_rystic/scenario" -d '{"name":"design_studio"}' -o /dev/null
curl -s "$RYSTIC_URL/api/conversations.list?types=public_channel&limit=3" -H 'Authorization: Bearer xoxb-local' | jq -c '[.channels[] | {id, name}]'
# -> [{"id":"CWDC0000001","name":"general"},{"id":"CWDC0000002","name":"random"},{"id":"CWDC0000003","name":"wins"}]
curl -s "$RYSTIC_URL/api/conversations.history?channel=CWDC0000004&limit=200" -H 'Authorization: Bearer xoxb-local' | jq -c '[.messages[] | select(.reply_count > 0)][0] | {ts, reply_count}'
# -> {"ts":"1772034935.000074","reply_count":2}
curl -s "$RYSTIC_URL/api/conversations.replies?channel=CWDC0000004&ts=1772034935.000074" -H 'Authorization: Bearer xoxb-local' | jq -c '[.messages[] | .user]'
# -> ["UWDC0000017","UWDC0000012","UWDC0000017"]
curl -s -X POST "$RYSTIC_URL/api/chat.postMessage" -H 'Authorization: Bearer xoxb-local' -d channel=CWDC0000004 -d thread_ts=1772034935.000074 -d 'text=Looking into it' | jq -c '{ok, thread_ts: .message.thread_ts}'
# -> {"ok":true,"thread_ts":"1772034935.000074"}

Tools

ToolSupported use
channels_listFind public channels
conversations_historyRead channel history
conversations_repliesRead a thread
conversations_add_messagePost a reply and read it back

Use numeric limits for history and replies. The native server evaluates relative time strings against its own wall clock, so they are outside a static scenario’s contract. Hosted Slack MCP, OAuth, search, uploads, reactions, browser credentials and MCP resources are outside this tool contract.

What is qualified

The qualified integration is the Harbor image, which pins an earlier Slack build and its refund_desk scenario, neither of which is the current release; the Harbor guide names the exact versions, the task files, grading and reset between episodes. The measured platform is Linux amd64. The upstream server uses stdio, and a local Streamable HTTP gateway lets a client inside the sandbox connect to it.

The standalone slack-twin 0.0.20 archive also carries an mcp/ package for the same server, rebound to design_studio’s #help thread (CWDC0000004) on wdcontractors.slack.com. That rebinding has not been re-qualified, so treat the bundled package as unqualified until the Harbor guide names a newer Slack. Its README has the launch contract.

Starting the simulator alone does not configure an MCP connection. The website’s /mcp endpoint searches Rystic documentation; the sandbox’s /mcp endpoint serves Slack tools.

Last updated on