How to give Claude Desktop memory of your work with an MCP server
Claude Desktop has no memory between conversations, and pasting your context back in goes stale the moment you do anything. The fix is to give it a tool it can call instead: Khint runs a local MCP server over stdio that exposes your current work session, so Claude can ask what you are working on rather than being told. Reads use a read-only handle on a SQLite file on your Mac, writes go through an authenticated localhost loopback, and nothing is uploaded to make it work.
Claude Desktop is excellent, with one structural gap: every conversation starts from zero. It does not know what you did an hour ago, what is in your other chat, or what you are in the middle of building. So you re-paste the same context, slightly differently each time, and the answers drift with it.
The clean fix is not a bigger paste. It is to give Claude a tool it can call to read your current work, so the context is fetched when it is needed rather than declared once and left to rot. That is what the Model Context Protocol is for, and what Khint exposes.
What memory actually means here
A Khint work session is something you start before a task and stop when it is done. While it runs it collects entries: notes you write, the output of agents you run, text you captured, tickets a workflow filed. It lives in a SQLite file on your Mac and never syncs to a server, which is unusual enough to state plainly: sessions are the one thing in Khint that has no cloud copy at all.
On top of those raw entries sits a compacted working state, rebuilt as you go: the objective, the threads still open, the artifacts produced, the decisions taken, and the loose notes. That compaction is the thing worth exposing. A transcript of forty entries is not context; it is a wall. The working state is the paragraph you would have written by hand if you had time.
The five tools Claude gets
Khint ships a standalone MCP server: a small binary speaking JSON-RPC over stdio. Once connected, an MCP client sees these tools.
list_sessions: enumerate your work sessions.get_session: read one session and its entries.get_active_context: the compacted working state of what you are on right now. This is the one that gets called most.search_session_entries: full-text search across everything you have logged.add_session_entry: write a new entry back into the active session.
Connect it in four clicks, with no JSON editing
Start a work session
In Khint, open Memory and start a session. As you run agents and capture text, entries pile up under it.
Open the MCP page
It lists your AI tools. The Claude Desktop card sits under 'Use Khint in your AI tools'.
Toggle Claude Desktop on
Khint writes its server into Claude Desktop's MCP config for you. There is nothing to hand-edit and no path to look up.
Restart Claude Desktop
Reopen it so the new server loads, then ask what you are working on and watch it call get_active_context.
Prefer to wire it by hand, or using Cursor or another MCP client? The same binary works anywhere that speaks MCP over stdio. The config entry has the usual shape:
{
"mcpServers": {
"khint": {
"command": "/path/to/khint-mcp"
}
}
}Why a session beats a bigger system prompt
A system prompt is a snapshot. You write it, and it starts aging immediately: by the afternoon it describes a morning that is no longer relevant, and you cannot tell from inside the conversation which parts have gone false. Worse, it is the same for every question, so it pays its token cost whether or not the question needed it.
A session is fetched. It reflects what you captured five minutes ago, it costs nothing on the turns that do not need it, and it is one object rather than one copy per tool. That last point is the one that changes how the day feels: the same session feeds Khint's own agents, so the rewrite you run on a selection and the question you ask Claude Desktop are working from the same picture of your work.
That shared thread is the whole idea. Capture once, and every AI tool you use draws from it. If you also want Khint to run prompts on selected text, see running your own prompts on a selection.