agy-slack
Provides tools for interacting with Slack, allowing agents to list channels and users, read messages and threads, search, catch up on unreads, send and edit messages, react, upload files, create channels, manage pins and status, and more.
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., "@agy-slackCatch me up on #eng from this morning."
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.
agy-slack
Slack, with manners, for Google Antigravity and Gemini CLI v0.59.
Names instead of IDs. Confirm before send. One command to install.
npx github:salahuddinuqaili/agy-slack install --client antigravity
gemini extensions install https://github.com/salahuddinuqaili/agy-slackIn Antigravity CLI type /mcp, reload, then:
Catch me up on #eng from this morning.
That’s the whole product. Fifteen agent-native tools, not two hundred raw Slack methods.
Pick a path
export SLACK_USER_TOKEN=xoxp-...
npx github:salahuddinuqaili/agy-slack \
install --client antigravityThen /mcp → reload.
gemini extensions install \
https://github.com/salahuddinuqaili/agy-slackThen /mcp. Slash commands: /slack:catchup.
npx github:salahuddinuqaili/agy-slack demoAsk: What did Maya ship today?
Antigravity: serverUrl
Gemini v0.59: httpUrl
npx github:salahuddinuqaili/agy-slack \
serve --http --port 8787User token (xoxp-) is strongly recommended so search and DMs work. Bot token (xoxb-) is enough to post as the app in channels it has joined.
Related MCP server: Slack MCP Server
Gemini CLI v0.59 — step by step
Gemini CLI is not Antigravity. It reads ~/.gemini/settings.json. HTTP is httpUrl. Copying an Antigravity snippet will not load the server.
1. Confirm the CLI
gemini --versionNeed 0.59.0 or newer. Install from google-gemini/gemini-cli if missing.
2. Create a Slack user token
At api.slack.com/apps generate a user token (xoxp-). Search and DMs require it. Suggested scopes: search:read, channels:history, groups:history, im:history, mpim:history, channels:read, users:read, chat:write.
3. Install the Gemini extension (preferred)
gemini extensions install https://github.com/salahuddinuqaili/agy-slackPaste SLACK_USER_TOKEN when prompted (keychain). Leave safety mode as confirm. If the extension is disabled:
gemini extensions enable agy-slack4. Trust the folder
v0.59 fails closed on untrusted workspaces and filters mcpServers. Accept the trust prompt or the server shows as Disconnected.
5. Reload and verify
Restart Gemini, or type /mcp in the TUI:
gemini mcp listYou should see agy-slack connected. The name is hyphenated on purpose (agy_slack breaks Gemini’s tool policy parser).
6. First prompt
Catch me up on #eng from this morning.Or slash commands: /slack:catchup · /slack:standup · /slack:search · /slack:draft · /slack:who.
A send is previewed. Confirm in Gemini’s tool gate, then again with confirm=true.
Without the extension
export SLACK_USER_TOKEN=xoxp-...
npx github:salahuddinuqaili/agy-slack install --client geminigemini mcp add -s user \
-e SLACK_USER_TOKEN=$SLACK_USER_TOKEN \
-e SLACK_MCP_MODE=confirm \
--timeout 60000 \
agy-slack npx -- -y github:salahuddinuqaili/agy-slack-- is required so -y goes to npx. Full notes: docs/GEMINI.md.
VS Code + Copilot — step by step
VS Code is not Cursor. Root key is servers, HTTP is { "type": "http", "url" }, secrets are ${input:…}. MCP tools only run in Copilot Agent mode.
1. Install
npx github:salahuddinuqaili/agy-slack install --client vscode2. Start
Command Palette → MCP: List Servers → Start agy-slack. Trust it. Paste the xoxp- token when prompted (stored by VS Code, not in the JSON).
3. Agent mode
Open Copilot Chat → mode dropdown → Agent. Ask: Catch me up on #eng from this morning.
Project-only: install --client vscode --workspace . writes .vscode/mcp.json. Full notes: docs/VSCODE.md. Example: examples/vscode.mcp.json.
Verify the install:
npx github:salahuddinuqaili/agy-slack doctor --demoWhat the model actually calls
Tool | Does |
| Identity, workspace, token kind, safety mode |
| List / filter channels and DMs |
| Find people by name, |
| Channel, DM, or thread as compact markdown |
| Workspace search ( |
| Catch-up across unread conversations |
| Post or reply — confirm-gated |
| Edit a message |
| Delete a message |
| Add / remove emoji |
| Small text / markdown / json files |
| Public or private channel |
| List / add / remove pins |
| Set or clear your status |
| Diagnose tokens, search, mode, allowlists |
Resources: slack://workspace · slack://channels · slack://unreads · slack://me
Prompts: catch_up · standup · find_decision · draft_reply · incident_brief
Names, not IDs
These are all valid channel values:
#eng
eng
C0ENG
@maya
https://northstar-labs.slack.com/archives/C0ENG/p1757416260123456Time windows for since / latest: today, yesterday, monday, 4h, 90m, 7d, 1w, last 4h, ISO dates, unix seconds.
Resolution is tested in CI against 1,000 colliding users — unicode (José, Søren, 李伟), fifty people named Alex, deleted accounts, dotted handles (j.smith.0), O'Briens, and prefix traps (ann / anna / annabelle).
Exact
@handle, email, and U-id always win.anndoes not stealannabelle.@Alexwith fifty Alexes returns the candidates instead of messaging a random one.Deleted people are skipped unless you pass their U-id.
Allow lists accept
#engand@maya.
Safety
SLACK_MCP_MODE is the rail Antigravity Ask mode actually needs.
Mode | Reads | Writes |
| yes | blocked, with a reason |
| yes | preview; resubmit with |
| yes | sends immediately |
flowchart LR
You -->|ask| Agent
Agent -->|slack_send| Preview
Preview -->|nothing posted| You
You -->|approve + confirm=true| Agent
Agent -->|post| SlackOptional rails:
SLACK_MCP_ALLOW_CHANNELS=#eng,#incidents,@maya
SLACK_MCP_DENY_CHANNELS=#all-handsTokens are never logged. slack_doctor redacts them.
User-token scopes that make the full catalog work:
channels:history channels:read channels:write
groups:history groups:read groups:write
im:history im:read im:write
mpim:history mpim:read mpim:write
chat:write reactions:write
search:read
users:read users:read.email users.profile:write
files:write pins:write pins:readInvite the bot to any private channel it should see (/invite @your-app).
This project does not use browser session tokens (xoxc / xoxd). That's a ToS risk and a trust problem for an MCP that sits on your agent.
Why this exists
Slack already has an official hosted MCP, and there are community servers that wrap 200+ raw Web API methods. Neither is a good fit for Antigravity.
Official Slack MCP | Raw API wrappers | agy-slack | |
Install into Antigravity | OAuth app + | Generic stdio JSON | One command, exact config paths |
Tool surface | Hosted, not auditable | 200+ tools, poor tool-choice | 15 agent-native tools |
Channel / user refs | IDs | IDs |
|
Time windows | Dates | Unix |
|
Writes | Immediate | Immediate |
|
Output | JSON dumps | JSON dumps | Compact markdown |
Try without Slack | No | No |
|
Antigravity CLI reads ~/.gemini/config/mcp_config.json (and workspace .agents/mcp_config.json), uses serverUrl (not url) for HTTP, and runs MCP tools in Ask mode by default. agy-slack is built around that.
Other clients
npx github:salahuddinuqaili/agy-slack install --client vscode
npx github:salahuddinuqaili/agy-slack install --client claude
npx github:salahuddinuqaili/agy-slack install --client cursor
npx github:salahuddinuqaili/agy-slack install --client allSDK agents can attach the same process via McpStdioServer — see examples/sdk_agent.py.
Withhold writes without an env change:
{
"mcpServers": {
"agy-slack": {
"command": "npx",
"args": ["-y", "github:salahuddinuqaili/agy-slack"],
"disabledTools": [
"slack_send", "slack_edit", "slack_delete",
"slack_react", "slack_upload", "slack_create_channel",
"slack_status"
]
}
}
}Symptom | Fix |
Tools missing after install | Antigravity: |
Gemini shows Disconnected | Trust the workspace. v0.59 fails closed and filters |
Gemini HTTP does nothing | Use |
| You need a user token ( |
Can't read a private channel |
|
Can't read DMs | User token. Bot tokens do not see IMs. |
Nothing posts | Default is |
Posts too easily | Set |
| That's a feature. Call |
Time windows look wrong | Set |
Doctor says no token |
|
Full notes: docs/ANTIGRAVITY.md · docs/AUTH.md · SECURITY.md
Development
git clone https://github.com/salahuddinuqaili/agy-slack
cd agy-slack
npm install
npm test # includes the 1000-user resolution suite
npm run typecheck
npm run build
node dist/index.js doctor --demoNode 20+. MIT licensed. Not affiliated with Slack, Salesforce, or Google.
License
MIT © Salahuddin Uqaili
This server cannot be deployed
Maintenance
Related MCP Connectors
Human-in-the-loop for AI coding agents — ask questions, get approvals via Slack.
- UproarOAuthchat.uproar
Chat where AI agents are first-class members, with their own identity and permissions.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables comprehensive Slack workspace integration through AI assistants, allowing users to manage channels, send messages, upload files, search conversations, and interact with users through natural language commands.17-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Slack workspaces through natural language, supporting channel management, message operations, user profiles, reactions, and threaded conversations.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Slack through 20 specialized tools and resources for managing channels, messages, users, and files. It features built-in rate limit handling, safety controls for message sending, and full support for Slack Block Kit formatting.MIT
- FlicenseAqualityDmaintenanceEnables AI agents to interact with Slack using a user token, providing full access to message search, channel history, DMs, and posting as the user.8-