send_slack_messageLABSCO SUMMARY
Deliberately one-directional, which is why it is simple.
An incoming webhook can post and nothing else — it cannot read the channel, list members or see history — so the credential you hand over is narrowly scoped by construction. That makes this the right size for build notifications and status pings, and the wrong tool for anything conversational. The per-call URL override is the small piece of flexibility worth knowing about: one server can reach several channels if you pass the target explicitly.
What it is
A small MCP server that sends messages to Slack through an incoming webhook. There is no Slack app to install and no OAuth scope to negotiate — the webhook URL is the whole credential, and it is bound to one channel.
What you get
send_slack_messageposts to the configured channel, taking themessagetext- An optional
formatoftextormarkdown, defaulting tomarkdown - An optional
webhook_urlon the call itself, to override the default and post somewhere else - Webhook URLs are validated against Slack's format before use, and errors are returned without exposing the URL
Requirements
Deno installed on the machine, and an incoming webhook created in your Slack workspace for the channel you want to post to. Set SLACK_WEBHOOK_URL in the client config and launch src/index.ts with deno run --allow-net --allow-env --allow-read, or compile a standalone binary first with deno task build and point the config at that instead.
Setup effort
Build from source — git clone https://github.com/masseater/slack-webhook-mcp.git
USE CASES
Announcing that a deploy finished
Have the assistant post the result to the team channel at the end of the run.
Flagging a failure while you are still debugging
Send the error line to Slack without switching windows.
Posting to a second channel occasionally
Pass a different webhook URL on the call instead of running another server.
1 tool
Listed in project docs. Your client may show a different list.
BEFORE YOU INSTALL
What to know first
Tools you get
1 tool named in the project's documentation.
Requires
- Deno
- A Slack incoming webhook for the channel; its URL goes in SLACK_WEBHOOK_URL
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/masseater/slack-webhook-mcp.git
cd slack-webhook-mcp
cp .env.example .envMCP Clients
Claude Desktop — Deno
{
"mcpServers": {
"slack-webhook": {
"command": "deno",
"args": [
"run",
"--allow-net",
"--allow-env",
"--allow-read",
"<YOUR_PATH_TO_SLACK_WEBHOOK_MCP>/src/index.ts"
],
"env": {
"SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
}
}
}<YOUR_PATH_TO_SLACK_WEBHOOK_MCP> is the full path of your clone, and the URL is the incoming webhook you created in Slack.
Claude Desktop — compiled binary
deno task build{
"mcpServers": {
"slack-webhook": {
"command": "<YOUR_PATH_TO_SLACK_WEBHOOK_MCP>/slack-webhook-server",
"env": {
"SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
}
}
}Run deno task build inside the clone first — it compiles the server to a standalone slack-webhook-server executable. <YOUR_PATH_TO_SLACK_WEBHOOK_MCP> is the full path of your clone, and the URL is your incoming webhook.