Because the repository is fixed at startup, there is no way for a call to wander into a different codebase, and the tools stay simple: no owner argument, no ambiguity about what was searched. The notebook handling is the thoughtful bit — only Markdown cells are indexed, so a heavily-outputted notebook does not flood retrieval with numbers.
A FastMCP server that treats one public GitHub repository as a document store. It indexes the Markdown and Jupyter files in that repository and lets a client list, search and read them. Which repository is a startup setting, not a tool argument — every call runs against the one you configured, which keeps the surface predictable.
- `knowledge_base_info` reports `document_file_count` and `document_type_counts` per extension
- `list_documents` and `list_documents_with_metadata`, the latter sortable — `sort_by="last_modified_utc"` with `descending=true` gives you the newest first
- `list_latest_documents` takes a `limit` and an `extension_filter` for the common case
- `search_documents` searches across the indexed files
- `read_document` returns one file's contents
- Supported types are `.md`, `.markdown` and `.ipynb`; for notebooks only Markdown cells are indexed and outputs are ignored
- Each result carries `path`, `size_bytes` and `last_modified_utc`
Set `KB_GITHUB_REPO` to a public repository, as either `owner/repo` or a full GitHub URL; `KB_GITHUB_BRANCH` optionally pins a ref, otherwise the default branch is used. Install with `uv sync frozen` and run with `fastmcp run server.py`. Project `github-knowledge-base-mcp`, version 0.1.0. Public repositories only, so no token is involved.
