Deep Learning with Python MCP Knowledge Base
by LeoW19
README.md
# Deep Learning with Python — MCP Knowledge Base
An MCP (Model Context Protocol) server that turns the book *Deep Learning
with Python* (François Chollet) into a searchable knowledge base, so Claude
can act as a deep-learning/ML expert grounded in the book's content.
The server runs locally over **stdio**. It reads the PDF in [input/](input/)
and builds an in-memory index of the book's ~200 leaf sections (down to
subsections like `3.4.3`) from the PDF's own bookmark outline. The book has to be put in place manually.
## Roadmap
- [x] Create MCP MVP
- [ ] Connect and validate
- [ ] Add error handling
- [ ] Add MCP inspector
## Setup
```powershell
# from the project root
pip install -r requirements.txt
```
Requires the book PDF at `input/Deep_Learning_with_Python_Chollet.pdf`
## Running standalone
```powershell
.venv\Scripts\python.exe server.py
```
This blocks, speaking MCP over stdio — it's meant to be launched by an MCP
client, not run interactively. Ctrl+C to stop.
## Connecting to a client
**Claude Code** (from the project root):
```powershell
claude mcp add dl-python-expert -- "C:\Users\leowa\Projekte\mcp_deepLearning\.venv\Scripts\python.exe" "C:\Users\leowa\Projekte\mcp_deepLearning\server.py"
```
**Claude Desktop** — add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"dl-python-expert": {
"command": "C:\\Users\\leowa\\Projekte\\mcp_deepLearning\\.venv\\Scripts\\python.exe",
"args": ["C:\\Users\\leowa\\Projekte\\mcp_deepLearning\\server.py"]
}
}
}
```
## What's registered
**Tools**
- `search_book(query, top_k=5)` — keyword-ranked search over all book
sections; returns id, title, breadcrumb, page, and a snippet.
- `get_section(section_id)` — full text of one section by id (e.g. `3.4.3`,
`6.2.2`), as returned by `search_book` or `list_sections`. Only leaf
sections are addressable; a heading with subsections (e.g. `5.1`) is not
itself fetchable — use its children instead.
- `list_sections(chapter=None)` — no argument lists chapters/appendices;
passing one of those exact strings lists its sections and ids.
**Resource**
- `book://toc` — the full table of contents with section ids and page
numbers, for browsing structure without a tool call.
**Prompt**
- `explain_concept(topic)` — instructs Claude to search the book, cite
section id and page for claims, and include the book's Keras code
examples where relevant.
## Example usage
Once connected, ask Claude things like:
> Using the DL knowledge base, explain how dropout fights overfitting, with
> the book's code example.
Claude will call `search_book`, pull the relevant section(s) via
`get_section`, and answer citing e.g. `[4.4.3] Adding dropout (p. 130)`.
## Design notes / known limitations
- **Search** is simple keyword/term-overlap scoring (stdlib only) — no
embeddings. Good enough for retrieval-then-explain; Claude does the actual
reasoning.
- **Section granularity** is leaf-only. A few sentences of "chapter intro"
text that sits between a parent heading and its first subsection isn't
attached to any section and is effectively skipped.
- The index is rebuilt from the PDF on every server start (~3s for 384
pages); there's no persistent cache, by design, so book content never
lands in a file that could accidentally get committed.
- Indexed scope is the book's technical content only (chapters 1–9 +
appendices A/B) — front matter and the back-of-book index are excluded.
## Files
- `server.py` — entry point; creates the `MCPServer`, registers tools from
`tools.py`, runs over stdio.
- `tools.py` — tool/resource/prompt definitions.
- `knowledge_base.py` — PDF loading, outline-based section indexing, and
search.
- `input/` — source PDF (gitignored).
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues