Skip to main content

MCP server for extracting and persisting learnings from Copilot conversations

Project description

Canon Keeper MCP Server

An MCP (Model Context Protocol) server that extracts durable learnings from Copilot conversations and persists them to copilot-instructions.md.

No VS Code extension required! Copilot invokes the MCP tool directly.

Quick Install

# From any project directory
python -m canon_keeper_mcp install

# Or specify a workspace
python -m canon_keeper_mcp install --workspace /path/to/project

The installer will:

  1. ✅ Install dependencies (mcp, google-genai)
  2. ✅ Configure .vscode/mcp.json with the canon-keeper server
  3. ✅ Create/update .github/copilot-instructions.md with:
    • Memory Persistence Protocol (@History directive)
    • Best practices template
    • Session Learnings Log table

Features

  • Intelligent Extraction: Uses LLM to identify technical decisions, architectural choices, workarounds, and insights
  • Deduplication: Compares against existing learnings to avoid duplicates
  • Update Detection: Identifies when a learning updates/supersedes an existing entry
  • Markdown Formatting: Returns properly formatted table rows for the Session Learnings Log

Usage

After installation, reload VS Code and use these trigger phrases in any Copilot chat:

User: @History save what we learned
User: save this learning  
User: remember this
User: add to memory

Copilot will:

  1. Gather the full conversation history
  2. Call the MCP tool to extract learnings
  3. Deduplicate against existing entries
  4. Append new learnings to your copilot-instructions.md
  5. Report what was saved/skipped

Manual Installation

If you prefer to install manually:

1. Install dependencies

pip install mcp google-genai

2. Configure MCP server

Add to .vscode/mcp.json:

{
  "servers": {
    "canon-keeper": {
      "type": "stdio",
      "command": "/path/to/your/python",
      "args": ["-m", "canon_keeper_mcp"]
    }
  }
}

Note: Replace /path/to/your/python with the absolute path to your Python executable (e.g., C:/Users/You/project/.venv/Scripts/python.exe on Windows or /home/you/project/.venv/bin/python on Linux/Mac).

3. Enable MCP in VS Code

Add to .vscode/settings.json:

{
  "github.copilot.chat.modelContextProtocol.enabled": true
}

3. Add directive to copilot-instructions.md

Add this to your .github/copilot-instructions.md:

### Memory Persistence Protocol (@History)

**Rule:** When the user includes `@History`, `save this`, `remember this`, or `add to memory` in any message:

1. Read the current `copilot-instructions.md` file content
2. Collect the full conversation history from this session
3. Call MCP tool `canon_keeper.extract_and_save_learnings` with:
   - `conversation`: The complete conversation text
   - `current_instructions`: The full content of copilot-instructions.md
4. If `markdown_to_append` is non-empty, append it to the Session Learnings Log table
5. Report what was saved and what was skipped as duplicates

**Trigger phrases:** `@History`, `save this`, `remember this`, `add to memory`

4. Add Session Learnings Log table

## Session Learnings Log

| Date | Topic | Decision | Rationale |
|------|-------|----------|----------|

MCP Tools

extract_and_save_learnings

Extracts learnings from conversation and deduplicates against existing entries.

Input:

  • conversation (string): Full conversation text
  • current_instructions (string): Current copilot-instructions.md content

Output:

{
  "status": "success",
  "message": "Found 2 new learning(s), skipped 1 duplicate(s).",
  "new_learnings": [...],
  "duplicates_skipped": [...],
  "markdown_to_append": "| 2026-01-17 | Topic | Decision | Rationale |",
  "target_section": "Session Learnings Log"
}

check_learning_exists

Check if a specific learning already exists.

Input:

  • topic (string): Learning topic
  • decision (string): The decision/learning
  • current_instructions (string): Current copilot-instructions.md content

Output:

{
  "exists": true,
  "similar_to": "Existing Topic Name",
  "reason": "Semantically equivalent to existing entry"
}

LLM Providers

Supports:

  • Google GenAI (default): Uses gemini-2.0-flash-001
  • OpenAI (fallback): Uses gpt-4o-mini

Set appropriate API keys:

  • GOOGLE_API_KEY for Google GenAI
  • OPENAI_API_KEY for OpenAI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canon_keeper_mcp-0.1.5.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

canon_keeper_mcp-0.1.5-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file canon_keeper_mcp-0.1.5.tar.gz.

File metadata

  • Download URL: canon_keeper_mcp-0.1.5.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for canon_keeper_mcp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 52b8b661c7660ed241b02d39c2e6657b81db68036935b998e5e22b60b8a763a6
MD5 aa5264eb228b654c5ff426646368ff35
BLAKE2b-256 bddd5ac878f48555b0f718dce932052595970a6df6bbd166c766707931ccf13f

See more details on using hashes here.

File details

Details for the file canon_keeper_mcp-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for canon_keeper_mcp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5b1485c2184ba163e4a2954eaad810fd8b648f28703cf301b64c4b84d644ccf8
MD5 9a597c01f65e3875e3b37b31c887cfcc
BLAKE2b-256 1fa369a6974c23e712fd89fe323d655738aeb466d728361ca9e690ce236042d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page