Updated Slack
This commit is contained in:
parent
a1de227905
commit
4772920eee
3 changed files with 134 additions and 2 deletions
13
package-lock.json
generated
13
package-lock.json
generated
|
|
@ -3022,7 +3022,7 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "0.5.0"
|
"@modelcontextprotocol/sdk": "0.6.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"mcp-server-slack": "dist/index.js"
|
"mcp-server-slack": "dist/index.js"
|
||||||
|
|
@ -3031,6 +3031,17 @@
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"src/slack/node_modules/@modelcontextprotocol/sdk": {
|
||||||
|
"version": "0.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-0.6.0.tgz",
|
||||||
|
"integrity": "sha512-9rsDudGhDtMbvxohPoMMyAUOmEzQsOK+XFchh6gZGqo8sx9sBuZQs+CUttXqa8RZXKDaJRCN2tUtgGof7jRkkw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"content-type": "^1.0.5",
|
||||||
|
"raw-body": "^3.0.0",
|
||||||
|
"zod": "^3.23.8"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
121
src/slack/README.md
Normal file
121
src/slack/README.md
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
# Slack MCP Server
|
||||||
|
|
||||||
|
MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
1. `slack_list_channels`
|
||||||
|
- List public channels in the workspace
|
||||||
|
- Optional inputs:
|
||||||
|
- `limit` (number, default: 100, max: 200): Maximum number of channels to return
|
||||||
|
- `cursor` (string): Pagination cursor for next page
|
||||||
|
- Returns: List of channels with their IDs and information
|
||||||
|
|
||||||
|
2. `slack_post_message`
|
||||||
|
- Post a new message to a Slack channel
|
||||||
|
- Required inputs:
|
||||||
|
- `channel_id` (string): The ID of the channel to post to
|
||||||
|
- `text` (string): The message text to post
|
||||||
|
- Returns: Message posting confirmation and timestamp
|
||||||
|
|
||||||
|
3. `slack_reply_to_thread`
|
||||||
|
- Reply to a specific message thread
|
||||||
|
- Required inputs:
|
||||||
|
- `channel_id` (string): The channel containing the thread
|
||||||
|
- `thread_ts` (string): Timestamp of the parent message
|
||||||
|
- `text` (string): The reply text
|
||||||
|
- Returns: Reply confirmation and timestamp
|
||||||
|
|
||||||
|
4. `slack_add_reaction`
|
||||||
|
- Add an emoji reaction to a message
|
||||||
|
- Required inputs:
|
||||||
|
- `channel_id` (string): The channel containing the message
|
||||||
|
- `timestamp` (string): Message timestamp to react to
|
||||||
|
- `reaction` (string): Emoji name without colons
|
||||||
|
- Returns: Reaction confirmation
|
||||||
|
|
||||||
|
5. `slack_get_channel_history`
|
||||||
|
- Get recent messages from a channel
|
||||||
|
- Required inputs:
|
||||||
|
- `channel_id` (string): The channel ID
|
||||||
|
- Optional inputs:
|
||||||
|
- `limit` (number, default: 10): Number of messages to retrieve
|
||||||
|
- Returns: List of messages with their content and metadata
|
||||||
|
|
||||||
|
6. `slack_get_thread_replies`
|
||||||
|
- Get all replies in a message thread
|
||||||
|
- Required inputs:
|
||||||
|
- `channel_id` (string): The channel containing the thread
|
||||||
|
- `thread_ts` (string): Timestamp of the parent message
|
||||||
|
- Returns: List of replies with their content and metadata
|
||||||
|
|
||||||
|
7. `slack_search_messages`
|
||||||
|
- Search for messages across channels
|
||||||
|
- Required inputs:
|
||||||
|
- `query` (string): The search query
|
||||||
|
- Optional inputs:
|
||||||
|
- `count` (number, default: 5): Number of results to return
|
||||||
|
- Returns: Matching messages with their context
|
||||||
|
|
||||||
|
8. `slack_get_users`
|
||||||
|
- Get list of workspace users with basic profile information
|
||||||
|
- Optional inputs:
|
||||||
|
- `cursor` (string): Pagination cursor for next page
|
||||||
|
- `limit` (number, default: 100, max: 200): Maximum users to return
|
||||||
|
- Returns: List of users with their basic profiles
|
||||||
|
|
||||||
|
9. `slack_get_user_profile`
|
||||||
|
- Get detailed profile information for a specific user
|
||||||
|
- Required inputs:
|
||||||
|
- `user_id` (string): The user's ID
|
||||||
|
- Returns: Detailed user profile information
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Create a Slack App:
|
||||||
|
- Visit the [Slack Apps page](https://api.slack.com/apps)
|
||||||
|
- Click "Create New App"
|
||||||
|
- Choose "From scratch"
|
||||||
|
- Name your app and select your workspace
|
||||||
|
|
||||||
|
2. Configure Bot Token Scopes:
|
||||||
|
Navigate to "OAuth & Permissions" and add these scopes:
|
||||||
|
- `channels:history` - View messages and other content in public channels
|
||||||
|
- `channels:read` - View basic channel information
|
||||||
|
- `chat:write` - Send messages as the app
|
||||||
|
- `reactions:write` - Add emoji reactions to messages
|
||||||
|
- `users:read` - View users and their basic information
|
||||||
|
|
||||||
|
3. Configure User Scopes (for search functionality):
|
||||||
|
Navigate to "OAuth & Permissions" and add this scope:
|
||||||
|
- `search:read` - Search workspace content that the user has access to
|
||||||
|
|
||||||
|
4. Install App to Workspace:
|
||||||
|
- Click "Install to Workspace" and authorize the app
|
||||||
|
- Save the "User OAuth Token" that starts with `xoxp-`
|
||||||
|
- Save the "Bot User OAuth Token" that starts with `xoxb-`
|
||||||
|
|
||||||
|
5. Get your Team ID (starts with a `T`) by following [this guidance](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id)
|
||||||
|
|
||||||
|
### Usage with the Claude Desktop app
|
||||||
|
Add the following to your `claude_desktop_config.json`:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcp-server-slack": {
|
||||||
|
"command": "mcp-server-slack",
|
||||||
|
"env": {
|
||||||
|
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
|
||||||
|
"SLACK_USER_TOKEN": "xoxp-your-user-token",
|
||||||
|
"SLACK_TEAM_ID": "T01234567"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
If you encounter permission errors, verify that:
|
||||||
|
1. All required scopes are added to your Slack app
|
||||||
|
2. The app is properly installed to your workspace
|
||||||
|
3. The tokens and workspace ID are correctly copied to your configuration
|
||||||
|
4. The app has been added to the channels it needs to access
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
"watch": "tsc --watch"
|
"watch": "tsc --watch"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "0.5.0"
|
"@modelcontextprotocol/sdk": "0.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue