npm package: @sunu-py-jp/qiita-mcp
Description: MCP server for Qiita API v2 — 68 tools covering the full Qiita API
Latest version: 0.1.2

# Qiita MCP Server

Qiita API v2 の全機能 (68 ツール) を MCP (Model Context Protocol) 経由で AI から操作できる stdio サーバーです。

## クイックスタート

### 1. アクセストークンの取得

[Qiita の設定ページ](https://qiita.com/settings/applications) でアクセストークンを発行してください。

### 2. Claude Desktop で使う

`claude_desktop_config.json` に以下を追加するだけ:

```json
{
  "mcpServers": {
    "qiita-mcp": {
      "command": "npx",
      "args": ["-y", "@sunu-py-jp/qiita-mcp"],
      "env": {
        "QIITA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}
```

> **設定ファイルの場所**
> - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
> - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

### 3. Claude Code で使う

```bash
claude mcp add qiita -e QIITA_ACCESS_TOKEN=your_token -- npx -y @sunu-py-jp/qiita-mcp
```

### 4. その他の MCP クライアント

```bash
# npx で直接起動 (インストール不要)
QIITA_ACCESS_TOKEN=your_token npx -y @sunu-py-jp/qiita-mcp

# またはグローバルインストール
npm install -g @sunu-py-jp/qiita-mcp
QIITA_ACCESS_TOKEN=your_token qiita-mcp
```

## Qiita Team での利用

Qiita Team で使用する場合は `QIITA_BASE_URL` 環境変数を追加してください:

```json
{
  "mcpServers": {
    "qiita": {
      "command": "npx",
      "args": ["-y", "@sunu-py-jp/qiita-mcp"],
      "env": {
        "QIITA_ACCESS_TOKEN": "your_token_here",
        "QIITA_BASE_URL": "https://your-team.qiita.com"
      }
    }
  }
}
```

## ツールフィルタリング

68 ツール全てが不要な場合、環境変数でグループ単位・ツール単位のフィルタリングが可能です。

### `QIITA_ENABLED_GROUPS`

カンマ区切りで `カテゴリ:操作` を指定し、有効にするツールグループを絞り込みます。

- **未設定**: 全ツールが有効（デフォルト）
- **カテゴリのみ**: そのカテゴリの read/write 両方が有効
- **カテゴリ:操作**: 指定した操作のツールのみ有効

操作は `read`（GET 系）と `write`（POST/PUT/PATCH/DELETE 系）の 2 種類です。

カテゴリ一覧: `auth`, `authenticated_user`, `items`, `comments`, `tags`, `users`, `reactions`, `teams`, `groups`, `templates`

### `QIITA_DISABLED_TOOLS`

カンマ区切りでツール名を指定し、個別にツールを除外します。`QIITA_ENABLED_GROUPS` でフィルタされた後に適用されます。

### 設定例

```json
{
  "mcpServers": {
    "qiita-mcp": {
      "command": "npx",
      "args": ["-y", "@sunu-py-jp/qiita-mcp"],
      "env": {
        "QIITA_ACCESS_TOKEN": "your_token_here",
        "QIITA_ENABLED_GROUPS": "items:read,comments:read",
        "QIITA_DISABLED_TOOLS": "list_item_stockers"
      }
    }
  }
}
```

| ユースケース | 設定 | 結果 |
|---|---|---|
| 記事の閲覧のみ | `QIITA_ENABLED_GROUPS=items:read` | 5 ツール |
| 記事の全操作 | `QIITA_ENABLED_GROUPS=items` | 11 ツール |
| 記事操作から削除を除外 | `QIITA_ENABLED_GROUPS=items` + `QIITA_DISABLED_TOOLS=delete_item` | 10 ツール |
| 特定ツールだけ除外 | `QIITA_DISABLED_TOOLS=delete_item,delete_comment` | 66 ツール |

## 提供ツール一覧 (68 tools)

### 認証 (auth) - 4 tools
| ツール | 説明 |
|--------|------|
| `create_access_token` | アクセストークンを作成 |
| `delete_access_token` | アクセストークンを無効化 |
| `create_team_access_token` | チーム用アクセストークンを作成 |
| `delete_team_access_token` | チーム用アクセストークンを無効化 |

### 認証ユーザー (authenticated-user) - 2 tools
| ツール | 説明 |
|--------|------|
| `get_authenticated_user` | 認証ユーザーの情報を取得 |
| `list_authenticated_user_items` | 認証ユーザーの記事一覧を取得 |

### 記事 (items) - 11 tools
| ツール | 説明 |
|--------|------|
| `list_items` | 記事一覧を取得 (検索クエリ対応) |
| `get_item` | 記事を ID で取得 |
| `create_item` | 記事を作成 |
| `update_item` | 記事を更新 |
| `delete_item` | 記事を削除 |
| `list_user_items` | ユーザーの記事一覧を取得 |
| `list_user_stocks` | ユーザーのストック一覧を取得 |
| `list_item_stockers` | 記事をストックしたユーザー一覧を取得 |
| `stock_item` | 記事をストック |
| `unstock_item` | 記事のストックを解除 |
| `import_item` | 記事をインポート (Team 管理者のみ) |

### コメント (comments) - 6 tools
| ツール | 説明 |
|--------|------|
| `list_item_comments` | 記事のコメント一覧を取得 |
| `create_comment` | コメントを投稿 |
| `get_comment` | コメントを取得 |
| `update_comment` | コメントを更新 |
| `delete_comment` | コメントを削除 |
| `import_comment` | コメントをインポート (Team 管理者のみ) |

### タグ (tags) - 8 tools
| ツール | 説明 |
|--------|------|
| `list_tags` | タグ一覧を取得 |
| `get_tag` | タグ詳細を取得 |
| `list_tag_items` | タグが付いた記事一覧を取得 |
| `list_user_following_tags` | ユーザーがフォロー中のタグ一覧を取得 |
| `follow_tag` | タグをフォロー |
| `unfollow_tag` | タグのフォローを解除 |
| `create_tagging` | 記事にタグを追加 (Team のみ) |
| `delete_tagging` | 記事からタグを削除 (Team のみ) |

### ユーザー (users) - 9 tools
| ツール | 説明 |
|--------|------|
| `list_users` | ユーザー一覧を取得 |
| `get_user` | ユーザー情報を取得 |
| `list_user_followees` | フォロー中のユーザー一覧を取得 |
| `list_user_followers` | フォロワー一覧を取得 |
| `follow_user` | ユーザーをフォロー |
| `unfollow_user` | ユーザーのフォローを解除 |
| `check_user_following` | フォロー状態を確認 |
| `list_item_likes` | 記事のいいね一覧を取得 |
| `check_item_stock` | 記事のストック状態を確認 |

### リアクション (reactions) - 7 tools
| ツール | 説明 |
|--------|------|
| `create_item_reaction` | 記事に絵文字リアクションを追加 |
| `list_item_reactions` | 記事のリアクション一覧を取得 |
| `delete_item_reaction` | 記事のリアクションを削除 |
| `create_comment_reaction` | コメントに絵文字リアクションを追加 |
| `list_comment_reactions` | コメントのリアクション一覧を取得 |
| `delete_comment_reaction` | コメントのリアクションを削除 |
| `create_project_comment_reaction` | プロジェクトコメントにリアクションを追加 |

### チーム (teams) - 6 tools
| ツール | 説明 |
|--------|------|
| `list_teams` | 所属チーム一覧を取得 |
| `list_team_memberships` | チームメンバー一覧を取得 |
| `list_team_invitations` | チーム招待一覧を取得 |
| `create_team_invitation` | チームに招待 |
| `delete_team_invitation` | チーム招待を取り消し |
| `remove_team_member` | チームメンバーを削除 |

### グループ (groups) - 9 tools
| ツール | 説明 |
|--------|------|
| `list_groups` | グループ一覧を取得 |
| `create_group` | グループを作成 |
| `get_group` | グループ詳細を取得 |
| `update_group` | グループを更新 |
| `delete_group` | グループを削除 |
| `list_group_members` | グループメンバー一覧を取得 |
| `add_group_member` | グループにメンバーを追加 |
| `remove_group_member` | グループからメンバーを削除 |
| `get_group_member` | グループメンバー情報を取得 |

### テンプレート (templates) - 6 tools
| ツール | 説明 |
|--------|------|
| `list_templates` | テンプレート一覧を取得 |
| `create_template` | テンプレートを作成 |
| `get_template` | テンプレートを取得 |
| `update_template` | テンプレートを更新 |
| `delete_template` | テンプレートを削除 |
| `expand_template` | テンプレート変数を展開 |

## 開発

```bash
git clone https://github.com/sunu-py-jp/Qiita-MCP.git
cd Qiita-MCP
npm install
npm run build
```

## ライセンス

[MIT](LICENSE)