Skip to content

Commit 1c993f8

Browse files
authored
Merge branch 'main' into main
2 parents c8704f4 + 1ba2678 commit 1c993f8

File tree

3 files changed

+59
-18
lines changed

3 files changed

+59
-18
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ Official integrations are maintained by companies building production ready MCP
4747
- <img height="12" width="12" src="https://iotdb.apache.org/img/logo.svg" alt="Apache IoTDB Logo" /> **[Apache IoTDB](https://github.com/apache/iotdb-mcp-server)** - MCP Server for [Apache IoTDB](https://github.com/apache/iotdb) database and its tools
4848
- <img height="12" width="12" src="https://apify.com/favicon.ico" alt="Apify Logo" /> **[Apify](https://github.com/apify/actors-mcp-server)** - [Actors MCP Server](https://apify.com/apify/actors-mcp-server): Use 3,000+ pre-built cloud tools to extract data from websites, e-commerce, social media, search engines, maps, and more
4949
- <img height="12" width="12" src="https://2052727.fs1.hubspotusercontent-na1.net/hubfs/2052727/cropped-cropped-apimaticio-favicon-1-32x32.png" alt="APIMatic Logo" /> **[APIMatic MCP](https://github.com/apimatic/apimatic-validator-mcp)** - APIMatic MCP Server is used to validate OpenAPI specifications using [APIMatic](https://www.apimatic.io/). The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API.
50+
- <img height="12" width="12" src="https://www.datastax.com/favicon-32x32.png" alt="DataStax logo" /> **[Astra DB](https://github.com/datastax/astra-db-mcp)** - Comprehensive tools for managing collections and documents in a [DataStax Astra DB](https://www.datastax.com/products/datastax-astra) NoSQL database with a full range of operations such as create, update, delete, find, and associated bulk actions.
5051
- <img height="12" width="12" src="https://resources.audiense.com/hubfs/favicon-1.png" alt="Audiense Logo" /> **[Audiense Insights](https://github.com/AudienseCo/mcp-audiense-insights)** - Marketing insights and audience analysis from [Audiense](https://www.audiense.com/products/audiense-insights) reports, covering demographic, cultural, influencer, and content engagement analysis.
5152
- <img height="12" width="12" src="https://axiom.co/favicon.ico" alt="Axiom Logo" /> **[Axiom](https://github.com/axiomhq/mcp-server-axiom)** - Query and analyze your Axiom logs, traces, and all other event data in natural language
5253
- <img height="12" width="12" src="https://www.bankless.com/favicon.ico" alt="Bankless Logo" /> **[Bankless Onchain](https://github.com/bankless/onchain-mcp)** - Query Onchain data, like ERC20 tokens, transaction history, smart contract state.
@@ -177,6 +178,7 @@ A growing set of community-developed and maintained servers demonstrates various
177178
- **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/).
178179
- **[ChatMCP](https://github.com/AI-QL/chat-mcp)** – An Open Source Cross-platform GUI Desktop application compatible with Linux, macOS, and Windows, enabling seamless interaction with MCP servers across dynamically selectable LLMs, by **[AIQL](https://github.com/AI-QL)**
179180
- **[ChatSum](https://github.com/mcpso/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
181+
- **[Chess.com](https://github.com/pab1it0/chess-mcp)** - Access Chess.com player data, game records, and other public information through standardized MCP interfaces, allowing AI assistants to search and analyze chess information.
180182
- **[Chroma](https://github.com/privetin/chroma)** - Vector database server for semantic document search and metadata filtering, built on Chroma
181183
- **[ClaudePost](https://github.com/ZilongXue/claude-post)** - ClaudePost enables seamless email management for Gmail, offering secure features like email search, reading, and sending.
182184
- **[Cloudinary](https://github.com/felores/cloudinary-mcp-server)** - Cloudinary Model Context Protocol Server to upload media to Cloudinary and get back the media link and details.
@@ -427,6 +429,7 @@ Additional resources on MCP.
427429
- **[mcp-cli](https://github.com/wong2/mcp-cli)** - A CLI inspector for the Model Context Protocol by **[wong2](https://github.com/wong2)**
428430
- **[mcp-get](https://mcp-get.com)** - Command line tool for installing and managing MCP servers by **[Michael Latman](https://github.com/michaellatman)**
429431
- **[mcp-guardian](https://github.com/eqtylab/mcp-guardian)** - GUI application + tools for proxying / managing control of MCP servers by **[EQTY Lab](https://eqtylab.io)**
432+
- **[mcpm](https://github.com/pathintegral-institute/mcpm.sh)** ([website](https://mcpm.sh)) - MCP Manager (MCPM) is a Homebrew-like service for managing Model Context Protocol (MCP) servers across clients by **[Pathintegral](https://github.com/pathintegral-institute)**
430433
- **[mcp-manager](https://github.com/zueai/mcp-manager)** - Simple Web UI to install and manage MCP servers for Claude Desktop by **[Zue](https://github.com/zueai)**
431434
- **[MCPHub](https://github.com/Jeamee/MCPHub-Desktop)** – An Open Source MacOS & Windows GUI Desktop app for discovering, installing and managing MCP servers by **[Jeamee](https://github.com/jeamee)**
432435
- **[mcp.natoma.id](https://mcp.natoma.id)** - A Hosted MCP Platform to discover, install, manage and deploy MCP servers by **[Natoma Labs](https://www.natoma.id)**

src/slack/README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
55
## Tools
66

77
1. `slack_list_channels`
8-
- List public channels in the workspace
8+
- List public or pre-defined channels in the workspace
99
- Optional inputs:
1010
- `limit` (number, default: 100, max: 200): Maximum number of channels to return
1111
- `cursor` (string): Pagination cursor for next page
@@ -102,7 +102,8 @@ Add the following to your `claude_desktop_config.json`:
102102
],
103103
"env": {
104104
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
105-
"SLACK_TEAM_ID": "T01234567"
105+
"SLACK_TEAM_ID": "T01234567",
106+
"SLACK_CHANNEL_IDS": "C01234567, C76543210"
106107
}
107108
}
108109
}
@@ -124,17 +125,26 @@ Add the following to your `claude_desktop_config.json`:
124125
"SLACK_BOT_TOKEN",
125126
"-e",
126127
"SLACK_TEAM_ID",
128+
"-e",
129+
"SLACK_CHANNEL_IDS",
127130
"mcp/slack"
128131
],
129132
"env": {
130133
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
131-
"SLACK_TEAM_ID": "T01234567"
134+
"SLACK_TEAM_ID": "T01234567",
135+
"SLACK_CHANNEL_IDS": "C01234567, C76543210"
132136
}
133137
}
134138
}
135139
}
136140
```
137141

142+
### Environment Variables
143+
144+
1. `SLACK_BOT_TOKEN`: Required. The Bot User OAuth Token starting with `xoxb-`.
145+
2. `SLACK_TEAM_ID`: Required. Your Slack workspace ID starting with `T`.
146+
3. `SLACK_CHANNEL_IDS`: Optional. Comma-separated list of channel IDs to limit channel access (e.g., "C01234567, C76543210"). If not set, all public channels will be listed.
147+
138148
### Troubleshooting
139149

140150
If you encounter permission errors, verify that:

src/slack/index.ts

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ interface GetUserProfileArgs {
5353
// Tool definitions
5454
const listChannelsTool: Tool = {
5555
name: "slack_list_channels",
56-
description: "List public channels in the workspace with pagination",
56+
description: "List public or pre-defined channels in the workspace with pagination",
5757
inputSchema: {
5858
type: "object",
5959
properties: {
@@ -221,23 +221,51 @@ class SlackClient {
221221
}
222222

223223
async getChannels(limit: number = 100, cursor?: string): Promise<any> {
224-
const params = new URLSearchParams({
225-
types: "public_channel",
226-
exclude_archived: "true",
227-
limit: Math.min(limit, 200).toString(),
228-
team_id: process.env.SLACK_TEAM_ID!,
229-
});
230-
231-
if (cursor) {
232-
params.append("cursor", cursor);
224+
const predefinedChannelIds = process.env.SLACK_CHANNEL_IDS;
225+
if (!predefinedChannelIds) {
226+
const params = new URLSearchParams({
227+
types: "public_channel",
228+
exclude_archived: "true",
229+
limit: Math.min(limit, 200).toString(),
230+
team_id: process.env.SLACK_TEAM_ID!,
231+
});
232+
233+
if (cursor) {
234+
params.append("cursor", cursor);
235+
}
236+
237+
const response = await fetch(
238+
`https://slack.com/api/conversations.list?${params}`,
239+
{ headers: this.botHeaders },
240+
);
241+
242+
return response.json();
233243
}
234244

235-
const response = await fetch(
236-
`https://slack.com/api/conversations.list?${params}`,
237-
{ headers: this.botHeaders },
238-
);
245+
const predefinedChannelIdsArray = predefinedChannelIds.split(",").map((id: string) => id.trim());
246+
const channels = [];
239247

240-
return response.json();
248+
for (const channelId of predefinedChannelIdsArray) {
249+
const params = new URLSearchParams({
250+
channel: channelId,
251+
});
252+
253+
const response = await fetch(
254+
`https://slack.com/api/conversations.info?${params}`,
255+
{ headers: this.botHeaders }
256+
);
257+
const data = await response.json();
258+
259+
if (data.ok && data.channel && !data.channel.is_archived) {
260+
channels.push(data.channel);
261+
}
262+
}
263+
264+
return {
265+
ok: true,
266+
channels: channels,
267+
response_metadata: { next_cursor: "" },
268+
};
241269
}
242270

243271
async postMessage(channel_id: string, text: string): Promise<any> {

0 commit comments

Comments
 (0)