Slack MCP Server
Base URL: https://slack.com/api
| Category | Communication |
| Tools | 67 |
| Auth | OAuth2 |
API Info
- Contact: Slack developer relations — https://api.slack.com/support
Install
Quick Start (recommended)
OAUTH2_CLIENT_ID=YOUR_OAUTH2_CLIENT_ID \
OAUTH2_CLIENT_SECRET=YOUR_OAUTH2_CLIENT_SECRET \
OAUTH2_USER_SCOPES=YOUR_OAUTH2_USER_SCOPES \
OAUTH2_TLS_CERT_FILE=YOUR_OAUTH2_TLS_CERT_FILE \
OAUTH2_TLS_KEY_FILE=YOUR_OAUTH2_TLS_KEY_FILE \
uvx mcparmory-slack
With pip
pip install mcparmory-slack
OAUTH2_CLIENT_ID=YOUR_OAUTH2_CLIENT_ID \
OAUTH2_CLIENT_SECRET=YOUR_OAUTH2_CLIENT_SECRET \
OAUTH2_USER_SCOPES=YOUR_OAUTH2_USER_SCOPES \
OAUTH2_TLS_CERT_FILE=YOUR_OAUTH2_TLS_CERT_FILE \
OAUTH2_TLS_KEY_FILE=YOUR_OAUTH2_TLS_KEY_FILE \
mcparmory-slack
MCP Client Configuration
Add to your MCP client config (e.g. Claude Desktop, Cursor, Codex):
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["mcparmory-slack"],
"env": {
"OAUTH2_CLIENT_ID": "YOUR_OAUTH2_CLIENT_ID",
"OAUTH2_CLIENT_SECRET": "YOUR_OAUTH2_CLIENT_SECRET",
"OAUTH2_USER_SCOPES": "YOUR_OAUTH2_USER_SCOPES",
"OAUTH2_TLS_CERT_FILE": "YOUR_OAUTH2_TLS_CERT_FILE",
"OAUTH2_TLS_KEY_FILE": "YOUR_OAUTH2_TLS_KEY_FILE"
}
}
}
}
Set OAUTH2_SCOPES to a comma-separated list of scopes your app requires (e.g. OAUTH2_SCOPES=scope_a,scope_b). Some OAuth2 providers may also use additional scope env vars such as OAUTH2_USER_SCOPES; open .env to see all generated scope buckets and descriptions.
Credentials
Set the following environment variables (via MCP client env config, shell export, or .env file):
OAUTH2_CLIENT_ID— OAuth2 client IDOAUTH2_CLIENT_SECRET— OAuth2 client secretOAUTH2_USER_SCOPES— OAuth2 scopes foruser_scope(comma-separated)OAUTH2_TLS_CERT_FILE— OAuth2 localhost TLS certificate pathOAUTH2_TLS_KEY_FILE— OAuth2 localhost TLS private key path
Do not commit credentials to version control.
OAuth2
Add this redirect URI to your OAuth provider's allowed redirect URIs:
https://localhost:9400/callback
If you change OAUTH2_CALLBACK_PORT in .env, update the redirect URI to match.
If this server was generated for HTTPS localhost callbacks, also configure:
OAUTH2_TLS_CERT_FILE— localhost TLS certificate pathOAUTH2_TLS_KEY_FILE— localhost TLS private key path
On first use, a browser window opens automatically for OAuth authorization. Grant access when prompted — tokens are saved to tokens/oauth2_tokens.json and refreshed automatically.
Re-authorization: Delete tokens/oauth2_tokens.json and restart the server.
Run Locally
First, configure your credentials in .env (see Credentials above).
pip install -r requirements.txt
python server.py
Connect MCP Client
Edit .mcp.json and replace <SERVER_DIR> with the absolute path to this directory, then add to your MCP client configuration.
Example (if server is at /home/user/mcp-servers/slack):
{
"mcpServers": {
"slack": {
"command": "python",
"args": ["/home/user/mcp-servers/slack/server.py"]
}
}
}
Docker
Pre-built image (recommended)
docker run -p 8000:8000 -p 9400:9400 -v ./tokens:/app/tokens \
-e OAUTH2_CLIENT_ID=YOUR_OAUTH2_CLIENT_ID \
-e OAUTH2_CLIENT_SECRET=YOUR_OAUTH2_CLIENT_SECRET \
-e OAUTH2_USER_SCOPES=YOUR_OAUTH2_USER_SCOPES \
-e OAUTH2_TLS_CERT_FILE=YOUR_OAUTH2_TLS_CERT_FILE \
-e OAUTH2_TLS_KEY_FILE=YOUR_OAUTH2_TLS_KEY_FILE \
ghcr.io/mcparmory/slack:latest
Build from source
First, configure your credentials in .env (see Credentials above).
docker build -t slack .
mkdir -p tokens
docker run -p 8000:8000 -p 9400:9400 -v ./tokens:/app/tokens --env-file .env slack
Before running, make sure ports 8000, 9400 are free. If you changed the callback port in .env, update the -p port mapping and your OAuth provider's redirect URI to match.
On first run, the server prints an authorization URL — check docker logs for the URL. Open it in your browser to complete OAuth consent. Tokens are persisted to ./tokens/ via the volume mount so re-authorization is not needed on subsequent runs.
MCP client config (Docker)
For Docker, use SSE transport in your MCP client config:
{
"mcpServers": {
"slack": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Files
.env- Credentials and server configuration.mcp.json- MCP client config templateDockerfile- Container buildLICENSE- MIT license for this generated coderequirements.txt- Python dependenciesREADME.md- This fileserver.py- MCP server entry point_auth.py- Authentication handlers_models.py- Request/response models_validators.py- Input validation
Note: Files starting with . are hidden by default on macOS/Linux. Use ls -a in terminal or enable "Show hidden files" in your file manager to see .env and .mcp.json.
Generated by MCP Blacksmith · Quickstart docs · Report a bug
Release files for mcparmory-slack 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcparmory_slack-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / mcparmory_slack-1.0.1-py3-none-any.whl
| Download URL | mcparmory_slack-1.0.1-py3-none-any.whl |
|---|---|
| Size | 66.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03bddbc1143224bfe5f63a18c55744d023c1b30650bfc168754c69c4bf5a2545
|
|
BLAKE2b-256 checksum How to use checksums |
9e950d6d431bbc45d1320fa6d7b4ea3ad758dbff6028e3185f60f93c741d86b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|