DevLog
Allows pulling recent commits from a local Git repository into the DevLog journal as logged entries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DevLogpull git activity from ./myproject for the last week and draft my standup"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DevLog
A local-first MCP (Model Context Protocol) server for keeping a personal engineering journal — and letting an AI assistant query, summarize, and draft from it.
Log what you worked on (by hand or pulled straight from git), then ask Claude to turn a week of entries into a standup update, a changelog, or retro notes.
This project exists as a hands-on, complete example of an MCP server that uses all three MCP primitives — tools, resources, and prompts — for real reasons, not just to check a box.
Why this exists
Most MCP demos only show tools. DevLog is small enough to read end-to-end in one sitting, but touches every primitive the protocol defines:
Primitive | What it means in MCP | What it means in DevLog |
Tool | A function the model can call to do something (model-controlled) | Log an entry, search entries, pull recent git commits into the log |
Resource | Read-only data addressed by a URI (app/user-controlled) | A day's entries, a project's rolling summary, a weekly stats digest |
Prompt | A reusable template a client can surface and fill with arguments | Draft a standup update, a changelog, or retro notes from logged entries |
Related MCP server: Selvedge
Primitives
Tools
Tool | Description |
| Log a discrete piece of completed work |
| Search past entries by text, project, or date range |
| Parse |
Resources
URI | Description |
| Raw entries for a given day |
| Rolling summary of all activity on a project |
| Entry counts by project over the last 7 days |
Prompts
Prompt | Description |
| Turns the last 7 days of entries into a Yesterday/Today/Blockers update |
| Drafts a changelog section grouped by project |
| Generates a What went well / What didn't / Action items retro |
How it works
┌─────────────┐ stdio (JSON-RPC) ┌──────────────┐ SQLite ┌───────────┐
│ MCP Client │ ◄──────────────────────► │ server.py │ ◄─────────────► │ devlog.db │
│ (Claude) │ │ (this repo) │ └───────────┘
└─────────────┘ └──────┬───────┘
│
▼
local `git log`The server runs locally over stdio. Nothing leaves your machine except whatever the client (e.g. Claude) chooses to do with the text it gets back.
Setup
Requires Python 3.11+.
git clone <your-repo-url>
cd devlog
pip install -e .
python server.py # sanity check: starts and waits on stdioConnect it to Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"devlog": {
"command": "python",
"args": ["/absolute/path/to/devlog/server.py"]
}
}
}Restart Claude Desktop. You should see DevLog's tools, resources, and prompts available in the conversation.
Connect it to a local or self-hosted LLM
client.py is a small standalone MCP client that spawns server.py over
stdio and drives it from any OpenAI-compatible chat-completions backend —
llama.cpp's llama-server, Ollama, vLLM, or OpenAI's own API. It's the
tool-calling loop that Claude Desktop/Code provide for you, made explicit,
so DevLog isn't limited to Anthropic's clients.
Install the extra dependency (httpx) it needs:
pip install -e ".[client]"Then, with a backend already running — e.g. llama.cpp:
llama-server --jinja -m qwen2.5-7b-instruct-q4_k_m.gguf --port 8080
python client.py --model qwen2.5-7b-instructor against OpenAI's API:
python client.py --base-url https://api.openai.com/v1 --model gpt-4o --api-key sk-...This starts a REPL:
Connected. 3 DevLog tools available. Type 'tools' to see available tools. Type 'exit' to quit.
you> show the latest git activity for this repo--base-url defaults to http://127.0.0.1:8080/v1 (llama.cpp's default);
--api-key is only needed for backends that require one. Tool-calling
reliability depends on the model — it needs to support structured function
calling (Qwen2.5-Instruct and Llama 3.1 do; not every local model does),
and small models are more likely to guess at arguments (e.g. a placeholder
file path) instead of asking a clarifying question, which Claude tends to
do more reliably.
Inspect it directly
The official MCP Inspector is the fastest way to poke at the server without a full client:
npx @modelcontextprotocol/inspector python server.pyExample session
You: Log that I fixed the auth token refresh bug in the api project, tagged bugfix.
Claude: [calls add_entry] Logged.
You: Pull in today's commits from ~/code/api since yesterday.
Claude: [calls get_git_activity] Added 4 entries from git history.
You: Give me my standup update.
Claude: [uses weekly_standup prompt, reads devlog://entries/{date} resources]
Yesterday:
- Fixed auth token refresh bug (api)
- Merged rate-limiter PR (api)
Today:
- Continue auth work, start on session-timeout edge cases
Blockers:
- NoneProject structure
devlog/
├── server.py # MCP server entrypoint — registers tools/resources/prompts
├── client.py # standalone MCP client for local/self-hosted LLM backends
├── devlog/
│ ├── db.py # all SQLite access
│ ├── git_activity.py # git log parsing
│ ├── summarize.py # pure functions for resource/prompt output
│ └── schema.sql
├── tests/
├── pyproject.toml
├── CLAUDE.md # guidance for Claude Code working in this repo
├── PLAN.md # phased build plan
├── demo.md # log entries -> weekly_standup walkthrough
└── README.mdStatus
Phases 0-8 of PLAN.md are complete: all three tools, resources, and prompts are implemented and tested. See PLAN.md's stretch goals for optional follow-up work.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
- DoneThatOAuthai.donethat
Privacy-first work tracking with summaries, reports, coaching, and AI-ready long-term memory.
Personal context for every AI: search, read, and write back to your private Markdown library.
One searchable history across every AI coding tool, with secret scanning and a shared task board.
Opinionated sprint tracker. Read/update tickets, sprints, velocity from Claude/Cursor/Zed.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to automatically log and manage conversation history with developers in structured markdown format. Provides powerful search and context suggestions to help AI understand project history and maintain continuity across sessions.41-
- AlicenseAqualityAmaintenanceChange tracking for AI-era codebases. AI agents call it to log structured change events (entity + diff + reasoning) before the session ends, then query history with diff, blame, history, changeset, and search. Captures the intent that would otherwise evaporate.8433 PyPI23MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read and write to a personal knowledge vault of markdown notes, projects, and tasks, with tooling for search, capture, daily logs, and project management across different AI tools.MIT
- AlicenseAqualityBmaintenanceAnalyzes Git commit history and code diffs to auto-remember development context, providing commit timelines, work sessions, unfinished task detection, and daily/weekly reports.939 npmMIT