A markdown book reader and writer with DI/SOA architecture and MCP server support for Claude Code integration.
- Multi-Format Support: mdBook, GitBook, Leanpub, Bookdown, and auto-detection
- YAML Frontmatter: Extract metadata (title, author, date, draft status)
- Interactive Reader: Terminal navigation with chapter jumping
- Book Writing: Initialize projects, add chapters, generate TOC
- MCP Server: Expose book operations as tools for AI assistants
mdbook/
├── domain/ # Core entities (Book, Chapter, ChapterMetadata)
├── services/ # Business logic with interface protocols
│ ├── interfaces.py # IBookService, IReaderService, IWriterService, IStructureService
│ ├── book_service.py
│ ├── reader_service.py
│ ├── writer_service.py
│ └── structure_service.py
├── repositories/ # Data access layer
│ ├── interfaces.py # IFileRepository, IConfigRepository
│ ├── file_repository.py
│ └── config_repository.py
├── infrastructure/ # DI container and composition root
│ └── container.py # ServiceContainer with lazy singleton resolution
├── mcp/ # Model Context Protocol server
│ └── server.py # Exposes book operations as MCP tools
└── cli.py # Unified Click-based CLI
cd book-reader
uv pip install -e .cd book-reader
pip install -e .This installs the single mdbook command with all subcommands.
# Read a book (pass book path as argument)
mdbook read /path/to/book
# Or use --book/-b global option
mdbook --book /path/to/book read
# Show book info
mdbook info /path/to/book
# Create a new book
mdbook init ./my-book -t "My Book Title" -a "Author Name"
# Add a chapter
mdbook new-chapter ./my-book -t "Introduction"
# Regenerate table of contents
mdbook toc ./my-book
# Start MCP server for a specific book
mdbook serve-mcp /path/to/book
# Auto-configure Claude Code MCP integration
mdbook setup /path/to/bookmdbook [OPTIONS] COMMAND [ARGS]
Commands:
read Read a markdown book interactively
info Show book information
init Initialize a new book project
new-chapter Add a new chapter to a book
toc Regenerate table of contents
serve-mcp Start MCP server for Claude Code
setup Auto-configure Claude Code MCP integration
Global Options:
-b, --book PATH Book directory (used by all commands)
--version Show version and exit
--help Show help message and exit
mdbook read [BOOK] [OPTIONS]
Arguments:
BOOK Book directory (or use global --book option)
Options:
-c, --chapter NUM Start at specific chaptermdbook init PATH [OPTIONS]
Arguments:
PATH Directory to create book in
Options:
-t, --title TEXT Book title (required)
-a, --author TEXT Author name (required)mdbook new-chapter [BOOK] [OPTIONS]
Arguments:
BOOK Book directory (or use global --book option)
Options:
-t, --title TEXT Chapter title (required)
-d, --draft Mark as draftmdbook setup [BOOK]
Arguments:
BOOK Book directory (or use global --book option)
Auto-configures Claude Code MCP integration by updating .mcp.json
in the project directory. Creates the file if it doesn't exist or
adds/updates the mdbook server configuration.The MCP server exposes book operations as tools for Claude Code and other AI assistants.
| Tool | Description |
|---|---|
book_info |
Get book metadata and chapter list |
read_chapter |
Read chapter content by number |
list_chapters |
List all chapters with metadata |
create_book |
Create a new book project |
add_chapter |
Add a chapter to a book |
update_toc |
Regenerate SUMMARY.md |
Add to your .mcp.json:
{
"mcpServers": {
"mdbook": {
"command": "mdbook",
"args": ["serve-mcp"]
}
}
}Or with uv:
{
"mcpServers": {
"mdbook": {
"command": "uv",
"args": ["run", "--directory", "/path/to/book-reader", "mdbook", "serve-mcp"]
}
}
}| Format | Detection File |
|---|---|
| mdBook/GitBook | SUMMARY.md |
| mdBook | book.toml |
| Leanpub | Book.txt |
| Bookdown | _bookdown.yml |
| Auto | Directory scan |
- Python 3.10+
- click, rich, markdown, pyyaml, mcp
MIT License
- v1.0.0 - Initial public release with DI/SOA architecture, unified
mdbookCLI, MCP server integration, multi-book support with BOOK argument and--book/-bglobal option,setupcommand for Claude Code MCP auto-configuration, multi-format support (mdBook, GitBook, Leanpub, Bookdown), and YAML frontmatter parsing