npm package: @jict/slack-mcp-server
Description: MCP server for Slack message retrieval and search
Latest version: 0.4.0

# Slack MCP Server

AI エージェント向けのSlack連携MCPサーバーです。Claude DesktopやClaude CodeなどのMCPクライアントから使用します。

## 🚀 MCP クライアント設定

### Claude Desktop / Claude Code

設定ファイルに以下を追加：

```json
{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["@jict/slack-mcp-server@latest"],
      "env": {
        "SLACK_USER_TOKEN": "xoxp-your-user-token"
      }
    }
  }
}
```

### Slack User Token の取得

[OAuth認証システム](https://slack-mcp-server-jict.vercel.app) でトークンを取得してください。

### 必要な Slack 権限

User Token には以下のスコープが必要です：

- `channels:read` + `channels:history` - パブリックチャンネル
- `groups:read` + `groups:history` - プライベートチャンネル
- `im:read` + `im:history` - DM
- `mpim:read` + `mpim:history` - グループDM
- `search:read` - メッセージ検索
- `users:read` - ユーザー情報（表示名取得）

## ⚙️ 開発コマンド

### ビルド

```bash
pnpm -F @jict/slack-mcp-server build
```

### 開発モード（ファイル監視）

```bash
pnpm -F @jict/slack-mcp-server dev
```

### 本番実行

```bash
pnpm -F @jict/slack-mcp-server start
```

## 🧪 ローカル動作確認

各ツールを個別に動作確認できます：

### セットアップ

```bash
# 1. .envファイルを作成
cp .env.example .env

# 2. .envファイルを編集してSLACK_USER_TOKENを設定
# SLACK_USER_TOKEN=xoxp-your-actual-token-here
```

### 使用方法

#### インタラクティブモード

対話的にツールをテストできます：

```bash
pnpm -F @jict/slack-mcp-server dev:tool

# Tool name: slack_get_message
# Slack message permalink: https://workspace.slack.com/archives/...
# [結果が表示されます]
```

#### コマンドラインモード

パラメータを直接指定して実行：

```bash
# メッセージ取得
pnpm -F @jict/slack-mcp-server dev:tool slack_get_message --link "https://workspace.slack.com/archives/..."

# スレッド取得
pnpm -F @jict/slack-mcp-server dev:tool slack_get_thread --channel C12345 --thread_ts 1234567890.123456

# メッセージ検索
pnpm -F @jict/slack-mcp-server dev:tool slack_search_messages --query "test" --from user123 --count 10

# メンション取得
pnpm -F @jict/slack-mcp-server dev:tool slack_get_mentions --mention_types personal channel
```

#### ヘルプ表示

```bash
pnpm -F @jict/slack-mcp-server dev:tool --help
```

## 🛠️ 利用可能なツール

### slack_get_message

Slack メッセージのパーマリンクから個別メッセージを取得

```typescript
{
  link: 'https://workspace.slack.com/archives/C1234567890/p1234567890123456'
}
```

### slack_get_thread

スレッド全体のメッセージを取得

```typescript
{
  channel: "C1234567890",
  thread_ts: "1234567890.123456",
  limit?: 1000  // デフォルト: 1000
}
```

### slack_search_messages

メッセージを柔軟な条件で検索

```typescript
{
  query?: "検索キーワード",       // オプション：検索クエリ
  channel?: "C1234567890",       // オプション：特定チャンネル内検索
  from?: "U1234567890",          // オプション：特定ユーザーの投稿を検索（ユーザーIDまたはユーザー名）
  after?: "2025-08-13",          // オプション：指定日以降のメッセージ（YYYY-MM-DD形式）
  before?: "2025-08-15",         // オプション：指定日以前のメッセージ（YYYY-MM-DD形式）
  on?: "2025-08-14",             // オプション：指定日のメッセージ（YYYY-MM-DD形式）
  count?: 20                     // 取得件数（デフォルト: 20、最大: 100）
}
```

**注意**: `query`、`from`、`on`、`after`、`before` のいずれか1つ以上が必須です。

#### 使用例

```typescript
// ユーザー単位での検索（その人の発言を新しい順にリスト）
{
  from: "U03472W2HD5"
}

// 今日の特定ユーザーの投稿
{
  from: "U03472W2HD5",
  on: "2025-08-14"
}

// 特定チャンネルでの日付範囲検索
{
  channel: "C1234567890",
  after: "2025-08-13",
  before: "2025-08-15"
}

// キーワードと日付の組み合わせ
{
  query: "リリース",
  on: "2025-08-14"
}
```

### slack_get_mentions

自分宛てのメンションを取得

```typescript
{
  mention_types?: ["personal", "channel", "here", "usergroup"]  // 取得するメンションタイプ（デフォルト: 全タイプ）
}
```

**メンションタイプ**:

- `personal`: 個人メンション（@username）
- `channel`: @channel メンション
- `here`: @here メンション
- `usergroup`: ユーザーグループメンション（@team-name など）

#### 使用例

```typescript
// 全てのメンションを取得（デフォルト）
{
}

// 個人メンションのみ取得
{
  mention_types: ['personal']
}

// @channelと@hereメンションを取得
{
  mention_types: ['channel', 'here']
}

// ユーザーグループメンションを含む複数タイプ
{
  mention_types: ['personal', 'usergroup']
}
```

## 🌐 パブリック公開

このパッケージは npm でパブリック公開されています：

- **NPM パッケージ**: https://www.npmjs.com/package/@jict/slack-mcp-server
- **アクセス**: `public` (誰でも利用可能)
- **認証**: 不要

## 📄 ライセンス

MIT License

## 🔗 関連リンク

- [MCP (Model Context Protocol)](https://modelcontextprotocol.io/)
- [Slack Web API](https://api.slack.com/web)