Kakuyomu MCP Server

Um servidor MCP para o site de postagem de romances Kakuyomu, permitindo que usuários pesquisem obras, recuperem listas de episódios e leiam conteúdo.

Documentação

Kakuyomu MCP Server

Servidor MCP (Model Context Protocol) para ler o conteúdo do site de publicação de romances "カクヨム". Fornece ferramentas que permitem que agentes LLM pesquisem obras, obtenham listas de episódios e leiam o texto principal no カクヨム.

Funcionalidades

  • Pesquisa de obras: pesquisa por palavras-chave e filtragem detalhada (gênero, número de avaliações, número de caracteres, data de publicação, etc.)
  • Obtenção da página inicial: obtenção da lista das obras mais recentes
  • Lista de episódios: obtenção de informações de episódios de uma obra específica
  • Leitura do texto: obtenção do texto de um episódio específico

🚀 Experimente facilmente

Você pode experimentar imediatamente usando a imagem publicada em Docker Hub.

Usar com 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

Usar com Claude Desktop

# dockerhubからpull
docker pull ubiq/kakuyomu-mcp:latest

Adicione o seguinte a claude_desktop_config.json e reinicie o Claude Desktop:

{
  "mcpServers": {
    "kakuyomu_mcp": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ubiq/kakuyomu-mcp:latest"
      ],
      "env": {}
    }
  }
}

Instalação

Ambiente necessário

  • Python 3.10 ou superior
  • Poetry

Configuração

# リポジトリをクローン
git clone https://github.com/106-/kakuyomu-mcp.git
cd kakuyomu-mcp

# 依存関係をインストール
poetry install

Como usar

Iniciar o servidor

# 直接実行
make run

Executar com Docker

# Dockerコンテナで実行
make docker-run

Uso com Claude Code (MCP)

Adicione a seguinte configuração ao arquivo .mcp.json:

{
  "mcpServers": {
    "kakuyomu_mcp": {
      "type": "stdio",
      "command": "poetry",
      "args": [
        "run",
        "python",
        "./kakuyomu_mcp/main.py"
      ],
      "env": {}
    }
  }
}

Se estiver usando Docker:

{
  "mcpServers": {
    "kakuyomu_mcp": {
      "type": "stdio", 
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "kakuyomu-mcp"
      ],
      "env": {}
    }
  }
}

Ferramentas disponíveis

1. get_top_page

Obtém a lista das obras mais recentes da página inicial

Parâmetros:

  • limit (opcional): limite máximo de obras a obter (padrão: 10)

2. search_works

Pesquisa obras por palavra-chave

Parâmetros:

  • q (obrigatório): palavra-chave de pesquisa
  • page (opcional): número da página (padrão: 1)
  • ex_q (opcional): palavras-chave de exclusão
  • serial_status (opcional): status de publicação ("running", "completed")
  • genre_name (opcional): gênero ("fantasy", "action", "sf", etc.)
  • total_review_point_range (opcional): faixa de número de avaliações
  • total_character_count_range (opcional): faixa de número de caracteres
  • published_date_range (opcional): faixa de data de publicação da obra
  • last_episode_published_date_range (opcional): faixa de data de atualização da obra
  • limit (opcional): limite máximo de obras a obter (padrão: 10)

3. get_work_episodes

Obtém a lista de episódios de uma obra específica

Parâmetros:

  • work_id (obrigatório): ID da obra
  • limit (opcional): limite máximo de episódios a obter (padrão: 20)

4. get_episode_content

Obtém o texto de um episódio específico

Parâmetros:

  • work_id (obrigatório): ID da obra
  • episode_id (obrigatório): ID do episódio

Desenvolvimento

Configuração do ambiente de desenvolvimento

# 開発依存関係を含めてインストール
poetry install --with dev

Estrutura do projeto

kakuyomu-mcp/
├── kakuyomu_mcp/
│   ├── __init__.py
│   └── main.py          # MCPサーバーのメイン実装
├── kakuyomu.ipynb       # 実装例とテストケース
├── pyproject.toml       # プロジェクト設定
├── poetry.lock          # 依存関係ロック
├── CLAUDE.md           # Claude Code用の開発ガイド
└── README.md           # このファイル

Exemplo de funcionamento

> カクヨムのトップページから適当な作品を選択し、その作品の冒頭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話を読んでまとめることができたのだ。この作品は日常系コメディでありながら、主人公の価値観が独特すぎて非常に面白い内容だったのだ。

Observações

  • Pode parar de funcionar devido a alterações na estrutura HTML do カクヨム
  • Para evitar scraping excessivo, configure adequadamente o parâmetro limit
  • Em caso de erro, retorna mensagens amigáveis ao usuário em japonês