GitHub Knowledge Base MCP Server
MCP server to connect to and use any public GitHub repo as knowledge base (markdown/notebook docs)
Documentation
GitHub Knowledge Base MCP
A simple MCP server built with FastMCP that lets you connect to any public GitHub repo as knowledge base. It has a few simple tools to find and read markdown and Jupyter notebook documents.
Blog post: https://stefanbschneider.github.io/blog/posts/fastmcp/
Avialble toolset:
knowledge_base_infolist_documentsread_documentlist_documents_with_metadatalist_latest_documentssearch_documents
knowledge_base_info includes:
document_file_count: total supported filesdocument_type_counts: counts per extension (for example.md,.markdown,.ipynb)
list_documents_with_metadata is useful to retrieve latest blog posts by setting sort_by="last_modified_utc" and descending=true.
Example: retrieve latest blog posts
Request:
{
"tool": "list_latest_documents",
"arguments": {
"limit": 5,
"extension_filter": ".md"
}
}
Response shape:
[
{
"path": "blog/2026-04-10-launch-post.md",
"size_bytes": 3210,
"last_modified_utc": "2026-04-10T14:11:52Z"
}
]
Supported file types:
.md.markdown.ipynb
Setup
Installation
uv sync frozen
Configuration
Set KB_GITHUB_REPO to use a public GitHub repository as the knowledge base.
- supported formats:
owner/repohttps://github.com/owner/repo
- optional ref/branch/tag:
KB_GITHUB_BRANCH - if no ref is set, the repository default branch is used
Example:
export KB_GITHUB_REPO="microsoft/vscode"
export KB_GITHUB_BRANCH="main" # optional
python gh_kb_mcp_server.py
Notebook handling details:
- only markdown cells are indexed/read for
.ipynb - notebook outputs are ignored
- invalid notebooks return clear validation errors for direct reads
All tools run only against the configured GitHub repository.
Running the server
fastmcp run server.py
Configuring the MCP in VSCode
Via command palette, call "MCP: Add server..." or add/create mcp.json adding the following block to your "servers":
"GitHub Knowledge Base": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/bin/fastmcp",
"args": [
"run",
"server.py",
],
"env": {
"KB_GITHUB_REPO": <public-github-repo> // eg: "stefanbschneider/blog" or "microsoft/vscode"
}
}