
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
# èµ·å
claudeClaude Desktopã§äœ¿ã
# dockerhubããpull
docker pull ubiq/kakuyomu-mcp:latestclaude_desktop_config.jsonã«ä»¥äžã远å ããClaude Desktopãåèµ·åããŸãïŒ
{
"mcpServers": {
"kakuyomu_mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ubiq/kakuyomu-mcp:latest"
],
"env": {}
}
}
}ã€ã³ã¹ããŒã«
å¿ èŠãªç°å¢
- Python 3.10以äž
- Poetry
ã»ããã¢ãã
# ãªããžããªãã¯ããŒã³
git clone https://github.com/106-/kakuyomu-mcp.git
cd kakuyomu-mcp
# äŸåé¢ä¿ãã€ã³ã¹ããŒã«
poetry installäœ¿çšæ¹æ³
ãµãŒããŒã®èµ·å
# çŽæ¥å®è¡
make runDockerã§å®è¡
# Dockerã³ã³ããã§å®è¡
make docker-runClaude 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ã³ãã«ã©ã€ãºïŒå·»ïŒ3/24æžç±ïŒå·»çºå£²ïŒãéŽã®èŸã¯éŸã«æ±ããè±ã²ãããïœè¿·å宮女ãšçŸè²ã®å®Šå®ã®åŸå®®äºä»¶åž³ïœã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ãã©ã¡ãŒã¿ãé©åã«èšå®ããŠãã ãã - ãšã©ãŒæã¯æ¥æ¬èªã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªã¡ãã»ãŒãžãè¿ããŸã
# dockerhubããpull
docker pull ubiq/kakuyomu-mcp:latest
# claude codeã®èšå®ã«è¿œå
claude mcp add kakuyomu-mcp -- docker run -i --rm ubiq/kakuyomu-mcp:latest
# èµ·å
claudeNo common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.