Skip to main content
Glama
LeoW19

Deep Learning with Python MCP Knowledge Base

by LeoW19

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/ 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

  • Create MCP MVP

  • Connect and validate

  • Add error handling

  • Add MCP inspector

Setup

# from the project root
pip install -r requirements.txt

Requires the book PDF at input/Deep_Learning_with_Python_Chollet.pdf

Running standalone

.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):

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:

{
  "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).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LeoW19/deepLearning_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server