Skip to content

Commit

Permalink
Updated Slack
Browse files Browse the repository at this point in the history
  • Loading branch information
maheshmurag committed Nov 20, 2024
1 parent 4772920 commit 93d0ce3
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 71 deletions.
6 changes: 0 additions & 6 deletions src/slack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,8 @@ MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
- `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)
Expand All @@ -105,7 +100,6 @@ MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
"command": "mcp-server-slack",
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_USER_TOKEN": "xoxp-your-user-token",
"SLACK_TEAM_ID": "T01234567"
}
}
Expand Down
69 changes: 4 additions & 65 deletions src/slack/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,6 @@ interface GetThreadRepliesArgs {
thread_ts: string;
}

interface SearchMessagesArgs {
query: string;
count?: number;
}

interface GetUsersArgs {
cursor?: string;
limit?: number;
Expand Down Expand Up @@ -180,26 +175,6 @@ const getThreadRepliesTool: Tool = {
},
};

const searchMessagesTool: Tool = {
name: "slack_search_messages",
description: "Search for messages across channels",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "The search query",
},
count: {
type: "number",
description: "Number of results to return (default 5)",
default: 5,
},
},
required: ["query"],
},
};

const getUsersTool: Tool = {
name: "slack_get_users",
description:
Expand Down Expand Up @@ -237,17 +212,12 @@ const getUserProfileTool: Tool = {

class SlackClient {
private botHeaders: { Authorization: string; "Content-Type": string };
private userHeaders: { Authorization: string; "Content-Type": string };

constructor(botToken: string, userToken: string) {
constructor(botToken: string) {
this.botHeaders = {
Authorization: `Bearer ${botToken}`,
"Content-Type": "application/json",
};
this.userHeaders = {
Authorization: `Bearer ${userToken}`,
"Content-Type": "application/json",
};
}

async getChannels(limit: number = 100, cursor?: string): Promise<any> {
Expand Down Expand Up @@ -350,20 +320,6 @@ class SlackClient {
return response.json();
}

async searchMessages(query: string, count: number = 5): Promise<any> {
const params = new URLSearchParams({
query: query,
count: count.toString(),
});

const response = await fetch(
`https://slack.com/api/search.messages?${params}`,
{ headers: this.userHeaders },
);

return response.json();
}

async getUsers(limit: number = 100, cursor?: string): Promise<any> {
const params = new URLSearchParams({
limit: Math.min(limit, 200).toString(),
Expand Down Expand Up @@ -398,12 +354,11 @@ class SlackClient {

async function main() {
const botToken = process.env.SLACK_BOT_TOKEN;
const userToken = process.env.SLACK_USER_TOKEN;
const teamId = process.env.SLACK_TEAM_ID;

if (!botToken || !userToken || !teamId) {
if (!botToken || !teamId) {
console.error(
"Please set SLACK_BOT_TOKEN, SLACK_USER_TOKEN, and SLACK_TEAM_ID environment variables",
"Please set SLACK_BOT_TOKEN and SLACK_TEAM_ID environment variables",
);
process.exit(1);
}
Expand All @@ -421,7 +376,7 @@ async function main() {
},
);

const slackClient = new SlackClient(botToken, userToken);
const slackClient = new SlackClient(botToken);

server.setRequestHandler(
CallToolRequestSchema,
Expand Down Expand Up @@ -528,21 +483,6 @@ async function main() {
};
}

case "slack_search_messages": {
const args = request.params
.arguments as unknown as SearchMessagesArgs;
if (!args.query) {
throw new Error("Missing required argument: query");
}
const response = await slackClient.searchMessages(
args.query,
args.count,
);
return {
content: [{ type: "text", text: JSON.stringify(response) }],
};
}

case "slack_get_users": {
const args = request.params.arguments as unknown as GetUsersArgs;
const response = await slackClient.getUsers(
Expand Down Expand Up @@ -595,7 +535,6 @@ async function main() {
addReactionTool,
getChannelHistoryTool,
getThreadRepliesTool,
searchMessagesTool,
getUsersTool,
getUserProfileTool,
],
Expand Down

0 comments on commit 93d0ce3

Please sign in to comment.