Kakuyomu MCP Server
小説投稿サイト「カクヨム」のコンテンツを読み込むためのMCP(Model Context Protocol)サーバーです。LLMエージェントがカクヨムの作品検索、エピソード一覧取得、本文読み込みなどを行えるツールを提供します。
機能
- 作品検索: キーワード検索と詳細フィルタリング(ジャンル、評価数、文字数、公開日等)
- トップページ取得: 最新作品一覧の取得
- エピソード一覧: 特定作品のエピソード情報取得
- 本文読み込み: 特定エピソードの本文を取得
🚀 簡単に試してみる
に公開されているイメージを使えば、すぐに試せます。
Claude Codeで使う
# dockerhubからpull
docker pull ubiq/kakuyomu-mcp:latest
# claude codeの設定に追加
claude mcp add kakuyomu-mcp -- docker run -i --rm ubiq/kakuyomu-mcp:latest
# 起動
claude
Claude Desktopで使う
# dockerhubからpull
docker pull ubiq/kakuyomu-mcp:latest
claude_desktop_config.json
に以下を追加し、Claude Desktopを再起動します:
{
"mcpServers": {
"kakuyomu_mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ubiq/kakuyomu-mcp:latest"
],
"env": {}
}
}
}
インストール
必要な環境
セットアップ
# リポジトリをクローン
git clone https://github.com/106-/kakuyomu-mcp.git
cd kakuyomu-mcp
# 依存関係をインストール
poetry install
使用方法
サーバーの起動
Dockerで実行
# Dockerコンテナで実行
make docker-run
Claude Code (MCP) での利用
.mcp.json
ファイルに以下の設定を追加:
{
"mcpServers": {
"kakuyomu_mcp": {
"type": "stdio",
"command": "poetry",
"args": [
"run",
"python",
"./kakuyomu_mcp/main.py"
],
"env": {}
}
}
}
Dockerを使用する場合:
{
"mcpServers": {
"kakuyomu_mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"kakuyomu-mcp"
],
"env": {}
}
}
}
利用可能なツール
1. get_top_page
トップページから最新作品一覧を取得
パラメータ:
limit
(optional): 取得する作品数の上限(デフォルト: 10)
2. search_works
キーワードで作品を検索
パラメータ:
q
(required): 検索キーワードpage
(optional): ページ数(デフォルト: 1)ex_q
(optional): 除外キーワードserial_status
(optional): 連載状態("running", "completed")genre_name
(optional): ジャンル("fantasy", "action", "sf"など)total_review_point_range
(optional): 評価数範囲total_character_count_range
(optional): 文字数範囲published_date_range
(optional): 作品公開日範囲last_episode_published_date_range
(optional): 作品更新日範囲limit
(optional): 取得する作品数の上限(デフォルト: 10)
3. get_work_episodes
特定作品のエピソード一覧を取得
パラメータ:
work_id
(required): 作品IDlimit
(optional): 取得するエピソード数の上限(デフォルト: 20)
4. get_episode_content
特定エピソードの本文を取得
パラメータ:
work_id
(required): 作品IDepisode_id
(required): エピソードID
開発
開発環境のセットアップ
# 開発依存関係を含めてインストール
poetry install --with dev
プロジェクト構造
kakuyomu-mcp/
├── kakuyomu_mcp/
│ ├── __init__.py
│ └── main.py # MCPサーバーのメイン実装
├── kakuyomu.ipynb # 実装例とテストケース
├── pyproject.toml # プロジェクト設定
├── poetry.lock # 依存関係ロック
├── CLAUDE.md # Claude Code用の開発ガイド
└── README.md # このファイル
動作例
> カクヨムのトップページから適当な作品を選択し、その作品の冒頭5話を読んでまとめてください。
● カクヨムのトップページから作品を選んで冒頭5話を読み、まとめる作業を行うのだ。まずはタスクを整理してから実行するのだ。
● Update Todos
⎿ ☐ カクヨムのトップページから作品一覧を取得
☐ 適当な作品を1つ選択
☐ 選択した作品のエピソード一覧を取得
☐ 冒頭5話の本文を読み込み
☐ 読んだ内容をまとめて報告
● まずはカクヨムのトップページから作品を取得するのだ。
● Update Todos
⎿ ☐ カクヨムのトップページから作品一覧を取得
☐ 適当な作品を1つ選択
☐ 選択した作品のエピソード一覧を取得
☐ 冒頭5話の本文を読み込み
☐ 読んだ内容をまとめて報告
● kakuyomu_mcp:get_top_page (MCP)(limit: 10)…
⎿ ID: 16816700429146389370
タイトル: 【2/26コミカライズ1巻&3/24書籍3巻発売!】鈴の蕾は龍に抱かれ花ひらく ~迷子宮女と美貌の宦官の後宮事件帳~【WEB版】
… +36 lines (ctrl+r to expand)
キャッチフレーズ: ムカつく上司は全員ざまぁ! 転生した最強魔法使いの蹂躙下剋上!
● トップページから作品一覧を取得できたのだ。では面白そうな作品を1つ選ぶのだ。「家で知らない娘が家事をしているっぽい。でも可愛かったから様子を見てる」というユニークなタイトルの作品を選んでみるのだ。
● Update Todos
⎿ ☒ カクヨムのトップページから作品一覧を取得
☐ 適当な作品を1つ選択
☐ 選択した作品のエピソード一覧を取得
☐ 冒頭5話の本文を読み込み
☐ 読んだ内容をまとめて報告
● kakuyomu_mcp:get_work_episodes (MCP)(work_id: "16817330651584484057", limit: 10)…
⎿ ID: 16817330651584506895
タイトル: 第1話 多分シルキー
… +36 lines (ctrl+r to expand)
公開日: 2023-07-13T09:00:16Z
● 素晴らしいのだ!エピソード一覧を取得できたのだ。これで冒頭5話の本文を読み込む準備ができたのだ。
● Update Todos
⎿ ☒ カクヨムのトップページから作品一覧を取得
☒ 適当な作品を1つ選択
☒ 選択した作品のエピソード一覧を取得
☐ 冒頭5話の本文を読み込み
☐ 読んだ内容をまとめて報告
● それでは冒頭5話の本文を並行して読み込むのだ。
● kakuyomu_mcp:get_episode_content (MCP)(work_id: "16817330651584484057", episode_id: "16817330651584506895")…
⎿ 大学生ともなると、友人に誘われて外食することが多々ある。そして友人が友人を連れてくるということもままあり、いつの間にか知らない人と外食をすることになっていたりする。
「──あ、ども。水月遥斗です。ヨースケとは高校からの付き合いです」
… +41 lines (ctrl+r to expand)
「でも今更反応するのもなんか癪だし、家事やってくれるのは普通に助かるから、最近はそのストーカーのことを妖精のシルキーと思って黙認してる」
「「なんでだよ!?」」
● kakuyomu_mcp:get_episode_content (MCP)(work_id: "16817330651584484057", episode_id: "16817330659254276779")…
⎿ ──酒の肴として提供した怖い話だったのだが、予想以上に恐怖感を煽ってくれたようで、二人から猛烈に説教された。
「ふむ……」
… +69 lines (ctrl+r to expand)
「分っかんねぇなぁ……」
──結局、この日はいくら考えても候補者すら絞り込むことはできなかった。
● kakuyomu_mcp:get_episode_content (MCP)(work_id: "16817330651584484057", episode_id: "16817330659379344364")…
⎿ 「水月君。これ三番テーブルに」
「はーい」
… +78 lines (ctrl+r to expand)
まあ、今更聞きに戻るのもアレだし、仕方ないと諦めるか。腹を括って、終わりの分からぬピークタイムと格闘することにしよう。
──ただそれはそれとして、マジでストーカーは誰なんだろうか?
● kakuyomu_mcp:get_episode_content (MCP)(work_id: "16817330651584484057", episode_id: "16817330659505613634")…
⎿ 大学というのは、それまでの学び舎に比べてかなり自由が利く場所となっている。
その辺りが特に顕著に現れるのは、やはり時間割り関係だろう。小中高までは、学校側が定めた時間割りに生徒は従う。ここに拒否権はない。
… +50 lines (ctrl+r to expand)
そうして覚悟を決める。念のため、警戒心はMAXのまま。空き巣の可能性もゼロではないので、鍵をメリケンサック代わりに握り込むことも忘れない。
基本は徹底無視。身の危険があれば躊躇なく反撃。その方針を脳に刻み込みながら、俺は我が家のドアノブを捻った。
● kakuyomu_mcp:get_episode_content (MCP)(work_id: "16817330651584484057", episode_id: "16817330659554011118")…
⎿ 意識を研ぎ澄ませながら、玄関に入る。現時点では人影は見当たらない。とりあえず、初っ端から鉢合わせという展開ではないらしい。
ただ見知らぬ靴、それも女性物があったので、侵入者が件のストーカーであることはほぼ確定だろう。
… +72 lines (ctrl+r to expand)
「……お、お邪魔しましたぁ」
──結果、ストーカーは二時間ほど経ってから、おずおずと部屋から去っていった。
● 素晴らしいのだ!5話の本文を読み込み終わったのだ。それでは読んだ内容をまとめて報告するのだ。
● Update Todos
⎿ ☒ カクヨムのトップページから作品一覧を取得
☒ 適当な作品を1つ選択
☒ 選択した作品のエピソード一覧を取得
☒ 冒頭5話の本文を読み込み
☐ 読んだ内容をまとめて報告
● 「家で知らない娘が家事をしているっぽい。でも可愛かったから様子を見てる」冒頭5話まとめ
あらすじ
大学生の水月遥斗(みづき はると)が主人公の現代コメディ作品なのだ。彼は友人たちに家にストーカーがいると相談するが、実害がないどころか家事をしてくれるので「妖精のシルキー」と呼んで黙認しているという変わった話なのだ。
各話の内容
第1話「多分シルキー」
- 友人たちとの居酒屋での怖い話として、家にストーカーがいるが家事をしてくれるので黙認していると明かす
- 友人たちは驚愕し、説教される
- 主人公は無愛想でズボラだが器用な性格で、イラストを描いたりカフェでバイトをしている
第2話「シルキー確認」
- 隠しカメラを設置してストーカーの正体を確認
- 若い女性であることが判明し、一安心
- 家事を楽しそうにこなし、肌着を新品と交換していく様子を目撃
- 実害がないので引き続き黙認することを決める
第3話「シルキーis誰」
- バイト先のカフェ「マリンスノー」での接客シーン
- 常連客の女性バンド「アバンドギャルド」がレーベル契約を祝っている
- ストーカーの正体について考えるが、心当たりがない
- 交友関係が少なく人の顔も覚えられない性格が判明
第4話「シルキー、いる?
- 大学の講義が休講になり早めに帰宅
- ストーカーが家にいる時間帯と鉢合わせになることに
- 警察に通報せず、徹底的に無視する方針を決める
- 身の危険がある場合のみ反撃すると決意
第5話「シルキーなんて知らない」
- ついにストーカーとの対面を果たす
- クローゼットに隠れていた茶髪の美人女性を発見
- 完全に無視を貫き、2時間後にストーカーは退去
- やはり正体不明で、一方的な一目惚れの可能性が高い
特徴
- 主人公の超マイペースで合理的すぎる思考が面白い
- ストーカー被害を「無料の家政婦」として受け入れる斬新な設定
- 日常系コメディでありながら、微妙にスリリングな展開
- 主人公の人間関係の希薄さと社会性の低さが作品の核になっている
なかなかユニークな作品なのだ!ストーカーものなのに平和的で、主人公の価値観が独特すぎて面白いのだ!
● Update Todos
⎿ ☒ カクヨムのトップページから作品一覧を取得
☒ 適当な作品を1つ選択
☒ 選択した作品のエピソード一覧を取得
☒ 冒頭5話の本文を読み込み
☒ 読んだ内容をまとめて報告
● 全てのタスクが完了したのだ!カクヨムから面白い作品を見つけて、しっかりと冒頭5話を読んでまとめることができたのだ。この作品は日常系コメディでありながら、主人公の価値観が独特すぎて非常に面白い内容だったのだ。
注意事項
- カクヨムのHTML構造変更により動作しなくなる可能性があります
- 過度なスクレイピングを避けるため、
limit
パラメータを適切に設定してください - エラー時は日本語でユーザーフレンドリーなメッセージを返します