🔸はじめに
前回の記事ではX(旧Twitter)のMCPサーバーを作りましたが
今度は Qiita です
タイトル通りこの記事自体もこのMCPを使って投稿しています
🔸本日のハイライト
GitHubにあるQiita MCPについて
このQiita MCPを使って私が過去に書いた記事を参考にしながら
Qiita MCPについての記事を書いてください。
書けたら限定公開で投稿してください。
AIにお願いするだけで記事の作成・投稿ができてしまいます
タグの設定も限定公開の指定もお手のもの
🔸作ったものはこちら
使用言語:TypeScript
開発環境:MacOS, Claude Code
npm公開名:@sunu-py-jp/qiita-mcp
🔸使い方 〜下準備編〜
Qiitaのアクセストークンが必要です
記事の投稿や削除を行う場合はスコープの設定に注意してください
アクセストークンの取得
Qiitaの設定ページ からアクセストークンを発行します
個人用アクセストークンを発行できるページに飛ぶので説明を書きます
必要なスコープは使いたい機能によって変わりますが
記事の読み込みと投稿をしたいのでread_qiitaとwrite_qiitaにチェックをつけておきます
発行するボタンを押すとアクセストークンが表示されるのでコピーしておきましょう
※スクショは割愛します
トークンは漏洩しないように十分気をつけてください
Qiita側の準備はこれだけです
Xのときに比べると圧倒的にシンプルですね
🔸使い方 〜設定編〜
Claude Desktopで使う
npm publishで公開しているのでclaude_desktop_config.jsonに以下を追加するだけ:
{
"mcpServers": {
"qiita-mcp": {
"command": "npx",
"args": ["-y", "@sunu-py-jp/qiita-mcp"],
"env": {
"QIITA_ACCESS_TOKEN": "ここにトークン"
}
}
}
}
設定ファイルの場所
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json- Windows:
%APPDATA%\Claude\claude_desktop_config.json
npx -y @sunu-py-jp/qiita-mcp というのは、npm に公開されているパッケージをその場でダウンロードして実行する仕組みです。Git からクローンしたりビルドしたりする必要はありません。
実際に記事の作成をお願いする
GitHubにあるQiita MCPについて
このQiita MCPを使って私が過去に書いた記事を参考にしながら
Qiita MCPについての記事を書いてください。
書けたら限定公開で投稿してください。
これで限定公開でできた記事を軽く手直しした結果が今見ていただいている記事です
記事が溜まっていけば「自分のくせ」が溜まっていって記事に反映されるかたち
生成AIならでは ですね
Claude Code(CLI)の場合
ターミナルで以下のコマンドを実行するだけです:
claude mcp add qiita -e QIITA_ACCESS_TOKEN=ここにトークン -- npx -y @sunu-py-jp/qiita-mcp
その他のMCPクライアント
# npx で直接起動(インストール不要)
QIITA_ACCESS_TOKEN=ここにトークン npx -y @sunu-py-jp/qiita-mcp
# またはグローバルインストール
npm install -g @sunu-py-jp/qiita-mcp
QIITA_ACCESS_TOKEN=ここにトークン qiita-mcp
🔸Qiita Teamでの利用
Qiita Teamで使用する場合は QIITA_BASE_URL 環境変数を追加するだけです:
{
"mcpServers": {
"qiita-mcp": {
"command": "npx",
"args": ["-y", "@sunu-py-jp/qiita-mcp"],
"env": {
"QIITA_ACCESS_TOKEN": "ここにトークン",
"QIITA_BASE_URL": "https://your-team.qiita.com"
}
}
}
}
🔸できることの全体像
全部で 68個 のツールを準備しています
認証(auth)- 4ツール
- アクセストークンの作成・無効化
- チーム用アクセストークンの作成・無効化
認証ユーザー(authenticated_user)- 2ツール
- 認証ユーザー情報の取得
- 認証ユーザーの記事一覧取得
記事(items)- 11ツール
- 記事の一覧取得・検索・作成・更新・削除
- ユーザーの記事一覧・ストック一覧
- ストック関連操作(ストック / 解除 / 一覧)
- 記事のインポート(Team管理者向け)
コメント(comments)- 6ツール
- コメントの一覧取得・投稿・取得・更新・削除・インポート
タグ(tags)- 8ツール
- タグ一覧・詳細取得
- タグに紐づく記事の一覧
- タグのフォロー / 解除
- 記事へのタグ追加・削除(Teamのみ)
ユーザー(users)- 9ツール
- ユーザー情報の取得・一覧
- フォロー / フォロー解除
- フォロワー一覧 / フォロー中一覧
- いいね一覧・ストック確認
リアクション(reactions)- 7ツール
- 記事・コメント・プロジェクトコメントへの絵文字リアクション操作
チーム(teams)- 6ツール
- チーム一覧・メンバー一覧・招待管理
グループ(groups)- 9ツール
- グループの作成・編集・削除・メンバー管理
テンプレート(templates)- 6ツール
- テンプレートの作成・取得・更新・削除・変数展開
全ての機能を検証しきっていない部分があります
何かあればGitHubのIssueかコメントでご指摘ください
🔸使うツールを絞りたい方向け
68ツール全部は要らないよという方のために
環境変数でフィルタリングする機能もつけています
X-Twitter-MCPのときと同じ設計思想です
QIITA_ENABLED_GROUPS
カンマ区切りで カテゴリ:操作 を指定して、有効にするグループを絞り込みます
例えば、記事の閲覧だけしたい場合:
QIITA_ENABLED_GROUPS=items:read
記事の読み書き+コメントの読み取りもしたい場合:
QIITA_ENABLED_GROUPS=items,comments:read
QIITA_DISABLED_TOOLS
「削除系だけは絶対にさせたくない」という場合は個別に無効化できます:
QIITA_DISABLED_TOOLS=delete_item,delete_comment
| ユースケース | 設定 | 結果 |
|---|---|---|
| 記事の閲覧のみ | 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ツール |
MCPホストアプリケーションによってはツールごとのON/OFFがサポートされていないこともあるので
こういった仕組みが地味に役立ちます
🔸技術的なポイント
せっかくなので中身についても少し触れておきます
アーキテクチャ
MCP SDK(@modelcontextprotocol/sdk)を使ったstdioサーバーです
構成はシンプルで:
-
index.ts— エントリーポイント。StdioServerTransportで接続 -
server.ts— McpServerにツールを登録するだけ -
client.ts— Qiita APIへのHTTPクライアント -
tool-filter.ts— 環境変数ベースのツールフィルタリング -
tools/— 各ツールの定義
🔸X-Twitter-MCPとの比較
せっかくなので前作と比較してみます
| X-Twitter-MCP | Qiita MCP | |
|---|---|---|
| ツール数 | 53 | 68 |
| 対応API | X API v2 | Qiita API v2 |
| 認証方式 | OAuth 1.0a(4つの鍵が必要) | アクセストークン1つ |
| 費用 | 従量課金(最低$5チャージ) | 無料 |
| Team対応 | - | ○(BASE_URL切替) |
| ツールフィルタ | ○ | ○ |
Qiitaの方は無料でフル機能使えるのが大きいですね
今回はさらにお財布に優しくて助かります
前回は渋沢不要になって喜んでましたが
平等院鳳凰堂すら要りません
この記事が役に立ったら、いいねとストックをお願いします
🔸あとがき
作るのは好きですが発信するのが面倒なので
発信する部分を自動化したいという意図が滲み出た記事の連投です


