PKB MCP Server
A Python MCP (Model Context Protocol) server that provides a Personal Knowledge Base backed by a GitHub repository. TIL entries, prompts, and patterns are stored as Markdown files and managed through a set of tools exposed via the MCP protocol.
Tools
The server exposes 5 tools:
| Tool | Description | |------|-------------| | add_til | Create a "Today I Learned" entry with a title, content, and tags. | | add_prompt | Save a reusable prompt in a category (coding, infrastructure, documentation, general). | | add_pattern | Document a reusable pattern in a category (agent, cloud, devops). | | search_pkb | Search the entire knowledge base by keyword. | | list_entries | Browse entries in a section (til, prompts, patterns, or all). |
Environment Variables
| Variable | Required | Description | |----------|----------|-------------| | GITHUB_TOKEN | Yes | A GitHub personal access token with Contents: Read and write permissions on the target repository. | | GITHUB_REPO | No | The GitHub repository in owner/repo format. Defaults to pdawson1983/dawson-pkb. |
GitHub Token Setup
- Go to GitHub Settings > Developer settings > Fine-grained tokens.
- Click Generate new token.
- Give the token a descriptive name (e.g.
pkb-mcp-server). - Under Repository access, select the repository you want to use as your knowledge base.
- Under Permissions > Repository permissions, set Contents to Read and write.
- Click Generate token and copy the value.
Docker
Build
docker build -t pkb-mcp-server .
Run
docker run -i --rm \
-e GITHUB_TOKEN="your-github-token-here" \
-e GITHUB_REPO="owner/repo" \
pkb-mcp-server
Claude Desktop Integration
Add the following to your claude_desktop_config.json to use this server with Claude Desktop:
{
"mcpServers": {
"pkb": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITHUB_TOKEN", "pkb-mcp-server"],
"env": {
"GITHUB_TOKEN": "your-github-token-here"
}
}
}
}
The GITHUB_REPO environment variable should be set inside the container (e.g. baked into the image or added to the args with an additional -e GITHUB_REPO=owner/repo flag).











