copilot-memory-mcp
Cross-session memory layer for GitHub Copilot agent mode that stores fixes/decisions in SQLite and provides tools for save, search, and recall via MCP.
README
copilot-memory-mcp (Python)
Cross-session memory layer for GitHub Copilot agent mode: SQLite for storage, an MCP server (Python SDK) for on-demand recall, and hooks for automatic capture — so a new Copilot session doesn't re-read the whole project or re-diagnose a bug you already fixed.
No Node required, and no LLM API key required either — Copilot does its
own summarizing (see "Capture strategy" below). The only third-party
dependency is mcp (the official Python SDK), and only server.py needs
it — db.py and cli.py are pure stdlib (sqlite3, subprocess), so the
hooks work with plain python3 and no virtualenv activation needed at
hook-run time if you point them at a venv's interpreter directly.
Capture strategy
Copilot itself calls save_memory before finishing a substantial task —
it's instructed to in copilot-instructions.md, and since it already has
full conversation context, it writes a better summary than any script
staring at a bare diff could. This needs no external API call.
The Stop hook is a safety net only: if a session ends without any
memory saved (Copilot forgot, or the task was trivial), it records a plain
"these files changed" fallback — no summarization, just enough to grep
later. It checks session_has_memory() first so it never duplicates a
proper entry Copilot already wrote.
Two files handle two different problems, deliberately kept separate:
PROJECT_MAP.md— static-ish reference (module structure, entry points). Always loaded, cheap, updated manually when structure changes..copilot-memory/memory.db(SQLite) — episodic fix/decision history. Only a short recent-index is always loaded; full detail is pulled viasearch_memoryonly when relevant.
Setup
-
Copy this folder into your repo as
.copilot-memory-mcp/(or wherever — just keep paths in.vscode/mcp.jsonandhooks/hooks.jsonconsistent). -
Create a venv and install the one dependency:
cd .copilot-memory-mcp python3 -m venv venv venv/bin/pip install -r requirements.txtIf your VS Code
python3on PATH already hasmcpinstalled globally (e.g. viapip install --user mcp), you can skip the venv and usepython3directly in the configs below. -
Register the MCP server — copy
.vscode/mcp.jsoninto your repo's.vscode/folder (merge if one exists). If you used a venv, pointcommandat${workspaceFolder}/.copilot-memory-mcp/venv/bin/python3instead of the barepython3. Commit this file so your whole team gets the same server. -
Wire up the hooks —
hooks/hooks.jsonuses the sameSessionStart/Stophook schema as Claude Code / Copilot CLI. Hook registration location has moved around across VS Code releases, so confirm the exact spot for your version via the/hooksslash command in chat, orDeveloper: Open Agent Debug Panelto verify it's actually firing. Same venv note applies here if you used one — pointpython3at the venv's interpreter. -
Drop in the templates — copy
templates/PROJECT_MAP.mdand the contents oftemplates/copilot-instructions.mdinto your repo root and.github/copilot-instructions.mdrespectively. Fill inPROJECT_MAP.mdfor real (have Copilot draft it, then trim). -
Gitignore the database:
.copilot-memory/ __pycache__/It's personal/session history, not something to commit — unlike the MCP config, instructions, and project map, which should all be checked in.
Tools exposed to Copilot
save_memory— record a fix/decision, called by Copilot itself before finishing a substantial task (see "Capture strategy" above).search_memory— look up past fixes by keyword, filename, or error signature before re-investigating something.get_recent_context— short recent-fix index (normally already injected by theSessionStarthook, but callable directly too).
Schema
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
session_id TEXT,
summary TEXT NOT NULL,
root_cause TEXT,
fix TEXT,
files_touched TEXT, -- JSON array
error_signature TEXT, -- normalized string for lookup
tags TEXT -- JSON array
);
Notes / known rough edges
- MCP for Copilot Business/Enterprise requires the org-level "MCP servers in Copilot" policy to be enabled — already the case for you, but worth knowing if you take this to other teams.
- Hooks are a newer VS Code feature (landed 1.109, Jan 2026) — behavior and config location may still shift between releases. Re-check after any VS Code update if capture silently stops firing.
- Quality of memory depends on Copilot actually following the instruction
to call
save_memory— it's a prompt, not a guarantee. Skimsearch_memoryresults occasionally and see how many are taggedunsummarized/fallback; a high rate means the instruction isn't landing and may need to be more prominent or repeated closer to task completion. - Verified locally:
db.pyround-trips insert/search/recent correctly, andserver.pystarts cleanly under themcpSDK.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.