Claude Code(など MCP 対応クライアント)から Qiita を検索・投稿・編集できる、非公式の MCP サーバー unofficial-qiita-mcp を作ったので紹介します。
Qiita API v2 をラップしているだけのシンプルなものですが、これを入れておくと「記事を書く」という作業をエディタの外に出さずに済むようになります。
MCP とは
MCP(Model Context Protocol)は、ざっくり言うと AI クライアントに外部ツールを生やすための仕組みです。これを使うと、AI が「Qiita で記事を検索する」「下書きを投稿する」といった操作を、会話の中からそのまま呼び出せるようになります。
たとえば「Docker のタグが付いた人気記事を10件探して」とお願いすれば AI が検索ツールを呼んで結果を返してくれますし、「この下書きを限定共有で投稿して」と言えばそのまま記事が作られる、といった具合です。
やり取りの裏側で API を叩く部分を肩代わりしてくれるのが MCP サーバーだと思ってください。
なおこの記事で紹介するのは自作の非公式プロジェクトです。Qiita 株式会社とは関係ありません。"Qiita" は同社の商標で、本ツールは公開されている API v2 を利用しています。
作った動機
何かアプリを作ってその紹介を Qiita で書こうとすると、エディタとブラウザを何度も行き来することになり、少々面倒な部分があります。コードを見ながら書いては貼り付け、プレビューを確認してまた直す……という往復が地味に積み重なります。
そこで Claude Code を使えないかと考えました。Claude Code はプロジェクトの中身をすべて読めます。それなら記事の下書きまで任せて、そのまま Qiita に投稿するところまでターミナルだけで完結できないか。
ということで、その「投稿するところまで」を担う部分として作ってみたのがこの MCP サーバーです。
できること
Qiita API v2 を一通りラップして、以下のツールを用意しました。記事の検索・取得から投稿・編集・削除、コメントやストックまで、ひと通りの操作をカバーしています。読み取り系・書き込み系に分けて紹介します。
読み取り系
情報を取ってくるだけで、Qiita 側に変更を加えないツールです。
| ツール | 説明 |
|---|---|
qiita_search_items |
公開記事を検索します。tag:Ruby stocks:>10 のような Qiita の検索構文がそのまま使えるので、タグや人気度で絞り込めます。 |
qiita_get_item |
記事 ID を指定して、本文を Markdown 込みで丸ごと取得します。編集前に現在の内容を読み込みたいときに便利です。 |
qiita_get_authenticated_user |
トークンに紐づくユーザー情報を返します。トークンがちゃんと通っているかの疎通確認に使えます。 |
qiita_list_my_items |
認証ユーザー自身が投稿した記事を、新しい順に一覧します。 |
qiita_list_item_comments |
指定した記事に付いているコメントを一覧します。 |
検索や記事取得など公開記事を対象としたツールは、トークンなしでも動作します(qiita_get_authenticated_user と qiita_list_my_items は自分の情報を扱うためトークンが必要です)。ただしトークンなしの場合はレート制限がやや厳しくなります(認証ありは 1000 回/時、認証なしは 60 回/時)。
書き込み系
こちらは Qiita 側に実際に変更を加えるツールです。利用にはトークンの write_qiita スコープが必要になります。
| ツール | 説明 |
|---|---|
qiita_create_item |
新しい記事を投稿します。事故防止のため初期値は限定共有(private:true)にしてあり、公開したいときだけ明示的に private:false を指定する形です。 |
qiita_update_item |
既存の記事を更新します。送ったフィールドで内容が置き換わるので、先に qiita_get_item で現状を取得しておくと安全です。 |
qiita_delete_item |
記事を ID 指定で削除します。取り消しはできないので、AI に任せるときは対象 ID をよく確認してください。 |
qiita_post_comment |
指定した記事に Markdown でコメントを投稿します。 |
qiita_stock_item / qiita_unstock_item
|
記事を自分のストックに追加したり、外したりします。 |
書き込み系は実際にデータを変更するので、特に削除や公開はガイドラインを守った上で慎重に扱ってください。
使い方
導入はクローン・ビルド・トークン発行・登録の流れです。順番に見ていきます。動かすには Node.js が必要です(手元では v24 で動作確認しています)。
1. クローンしてビルドする
まず GitHub からソースを取得し、依存をインストールしてビルドします。ビルドが通ると、エントリポイントの dist/index.js が生成されます。
git clone https://github.com/kaze-uta/unofficial-qiita-mcp.git
cd unofficial-qiita-mcp
npm install
npm run build # dist/index.js が生成される
2. アクセストークンを発行する
Qiita の設定画面から個人用アクセストークンを発行します。スコープは用途に応じて選びます。
- 検索や取得など読み取りだけなら
read_qiita - 投稿・編集・削除など書き込み系も使うなら
write_qiita
発行したトークンはパスワードと同じ秘密情報です。リポジトリにコミットしたり、他人に見せたりしないように気をつけてください。万が一どこかに貼ってしまったら、設定画面で速やかに破棄して新しいものを発行し直すのが安全です。
3. Claude Code に登録する
最後に Claude Code へ登録します。トークンは -e KEY=value の形で環境変数として渡します。/path/to/... と「あなたのトークン」は自分の値に置き換えてください。
claude mcp add qiita --transport stdio -e QIITA_ACCESS_TOKEN=あなたのトークン -- node /path/to/unofficial-qiita-mcp/dist/index.js
登録できたら claude mcp list、セッション中なら /mcp で状態を確認できます。このあたりのさらに細かい注意点は GitHub の README にまとめてあるので、うまくいかないときは覗いてみてください。
まとめ
Claude Code から Qiita を操作できる MCP サーバーを紹介しました。
検索から投稿・編集・削除まで一通りカバーしているので、ターミナルから出ずに記事を扱いたい場面で活躍すると思います。
コードは GitHub で公開しています。よかったら使ってみてください。
気に入ってもらえたらスターやいいねを、何か気づいた点があればコメントをいただけると、今後の励みになります!
ここまで読んでいただきありがとうございました!