Skip to main content
Glama
README.md
# slack-indexed

MCP server for semantic search over indexed Slack channels stored in Qdrant, with Cohere reranking via AWS Bedrock.

## Prerequisites

- A running Qdrant instance with an indexed Slack collection (created by [alaan-slack-index-mcp](https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp))
- AWS credentials with access to Bedrock (Titan embeddings + Cohere rerank)

## Tools

| Tool | Description |
|------|-------------|
| `search` | Semantic search with Cohere reranking, filterable by source type, channel, and user |
| `get_thread` | Retrieve all chunks for a specific Slack thread including linked resources |
| `list_channels` | List indexed channels with document counts |
| `collection_stats` | Summary statistics (documents, threads, sources, channels) |
| `list_users` | List all known participant names for filtering |

## Usage

### Direct with uvx (no install)

Using an AWS profile:
```bash
uvx --from git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool slack-indexed --profile my-profile --qdrant-url http://localhost:6333
```

Using explicit AWS credentials and a Qdrant API key:
```bash
uvx --from git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool slack-indexed \
  --aws-access-key AKIA... \
  --aws-secret-key wJal... \
  --qdrant-url http://your-qdrant-host:6333 \
  --qdrant-api-key your-qdrant-api-key
```

### Local development

```bash
uv sync
uv run slack-indexed --profile my-profile --qdrant-url http://localhost:6333
```

### Claude Code (`~/.claude.json`)

With AWS profile:
```json
{
  "mcpServers": {
    "slack-indexed": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool",
        "slack-indexed",
        "--profile",
        "my-profile",
        "--qdrant-url",
        "http://localhost:6333",
        "--qdrant-api-key",
        "xxxx-api-key-xxxx"
      ]
    }
  }
}
```

With explicit AWS credentials:
```json
{
  "mcpServers": {
    "slack-indexed": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool",
        "slack-indexed",
        "--aws-access-key",
        "AKIA...",
        "--aws-secret-key",
        "wJal...",
        "--qdrant-url",
        "http://your-qdrant-host:6333",
        "--qdrant-api-key",
        "xxxx-api-key-xxxx"
      ]
    }
  }
}
```

### Cursor (`.cursor/mcp.json`)

With AWS profile:
```json
{
  "mcpServers": {
    "slack-indexed": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool",
        "slack-indexed",
        "--profile",
        "my-profile",
        "--qdrant-api-key",
        "xxxx-api-key-xxxx"
      ]
    }
  }
}
```

With explicit AWS credentials:
```json
{
  "mcpServers": {
    "slack-indexed": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/KanvaBhatia-Alaan/alaan-slack-index-mcp-tool",
        "slack-indexed",
        "--aws-access-key",
        "AKIA...",
        "--aws-secret-key",
        "wJal...",
        "--qdrant-url",
        "http://your-qdrant-host:6333",
        "--qdrant-api-key",
        "xxxx-api-key-xxxx"
      ]
    }
  }
}
```

## CLI Options

| Flag | Default | Description |
|------|---------|-------------|
| `--qdrant-url` | `http://localhost:6333` | Qdrant server URL |
| `--collection` | `slack_index` | Qdrant collection name |
| `--profile` | _(env default)_ | AWS profile name |
| `--region` | `us-east-1` | AWS region for Bedrock |
| `--aws-access-key` | _(env default)_ | AWS access key ID (use instead of `--profile`) |
| `--aws-secret-key` | _(env default)_ | AWS secret access key (use with `--aws-access-key`) |
| `--qdrant-api-key` | _(none)_ | Qdrant API key for authenticated access |
| `--qdrant-timeout` | `30` | Qdrant request timeout in seconds |

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: collection_stats provides overall statistics, get_thread retrieves specific thread details, list_channels and list_users enumerate available data sources, and search performs semantic queries. There is no overlap in functionality, making tool selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., collection_stats, get_thread, list_channels, list_users, search). The naming is uniform and predictable, with no deviations in style or convention.

Tool Count5/5

With 5 tools, this server is well-scoped for its purpose of querying and exploring indexed Slack data. Each tool serves a distinct and necessary function, from high-level stats to detailed searches, without being overly sparse or bloated.

Completeness4/5

The tool set covers core workflows for exploring indexed Slack data: listing resources (channels, users), retrieving specific threads, and performing searches with filters. A minor gap is the lack of tools for updating or managing the index itself (e.g., reindexing), but this is reasonable for a read-only query interface.

Maintenance

ActivityInactive
ResponsivenessNo issues