Skip to main content
Glama

Covate

English | 简体中文 | 繁體中文

A context-aware Model Context Protocol (MCP) server that acts as a learning sidecar for AI coding assistants. It helps developers learn from AI-generated code changes through interactive quizzes and provides agents with a persistent project-specific debugging memory.

License: MIT Python 3.11+ MCP Standard Docker Glama MCP DeepWiki


🌐 Resources

Resource

Description

Glama MCP Marketplace

Official MCP server listing with installation guides

DeepWiki Documentation

AI-generated deep analysis of the codebase

GitHub Repository

Source code, issues, and contributions


Related MCP server: claude-engram

🚀 Why Use This?

For

Benefit

Developers

Don't just accept AI code—understand it. Request a quiz to verify your grasp of the logic, security, or performance implications.

AI Agents

Stop solving the same bug twice. The server quietly records debugging solutions and retrieves them automatically when similar errors occur.


☁️ Covate learning ledger (free)

The MCP server in this repo is free and open-source (MIT) — run it locally, no account required. The optional hosted learning ledger is free too: sign in with GitHub, then run COVATE_SYNC_URL=https://covate.org COVATE_SYNC_TOKEN=<your token> python -m covate.platform_sync from a project to push your local sessions up and review them in a browser:

  • ☁️ Sync your learning sessions from any machine

  • 📖 Every synced session, newest first, with its score

  • 📊 Totals — sessions, questions, correct answers, running accuracy

  • 🎯 The topics you answer worst, ranked

  • 🔑 Your sync token — reveal or rotate it whenever you want

Not built yet, so not promised: progress-over-time charts, spaced-repetition study plans, team accounts. There is no paid tier and nothing to buy — the MCP works fully without the ledger, and the ledger costs nothing.


📦 Available Tools

Tool

Type

Description

learning_session

🎓 Interactive

Opens a WebUI quiz based on recent code changes. Blocks until user completes learning.

debug_search

🔍 Silent RAG

Searches project debug history for relevant past solutions. Auto-triggered on errors.

debug_record

📝 Silent

Records debugging experiences to project knowledge base. Auto-triggered after fixes.

term_get

📚 Reference

Fetches programming terms/concepts. Tracks shown terms to avoid repetition.

Tool Details

Trigger: User explicitly requests (e.g., "Quiz me", "Test my understanding")

Parameters:

Parameter

Type

Default

Description

project_directory

string

"."

Project directory path

summary

string

Structured summary of Agent's actions

reasoning

object

null

5-Why reasoning (goal, trigger, mechanism, alternatives, risks)

quizzes

array

auto-generated

3 quiz questions with options, answer, explanation

focus_areas

array

["logic"]

Focus areas: logic, security, performance, architecture, syntax

timeout

int

600

Timeout in seconds (60-7200)

Returns: {"status": "completed", "action": "HALT_GENERATION"}

Trigger: Auto-called when encountering errors (silent, no UI)

Parameters:

Parameter

Type

Default

Description

query

string

Error message or description to search

project_directory

string

"."

Project directory path

error_type

string

null

Filter by error type (e.g., ImportError)

tags

array

null

Filter by tags

limit

int

5

Maximum results (1-20)

Returns: {"results": [...], "count": N}

Trigger: Auto-called after fixing bugs (silent, background)

Parameters:

Parameter

Type

Default

Description

context

object

Error context: {error_type, error_message, file, line}

cause

string

Root cause analysis

solution

string

Solution that worked

project_directory

string

"."

Project directory path

tags

array

null

Tags for categorization

Returns: {"ok": true, "id": "..."}

Available Domains: programming_basics, data_structures, algorithms, software_design, web_development, version_control, testing, security, databases, devops

Parameters:

Parameter

Type

Default

Description

project_directory

string

"."

Project directory path

count

int

3

Number of terms (1-5)

domain

string

null

Filter by domain

Returns: {"terms": [...], "count": N, "remaining": N}


🛠️ Installation

curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.sh | bash
irm https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/install.ps1 | iex

The installer will:

  1. Auto-detect your Python environment (uv → conda → venv)

  2. Clone the repository to ~/covate

  3. Create virtual environment and install dependencies

  4. Print the exact command to configure your IDE

Manual Installation

Prerequisites: Python 3.11+ or uv

# 1. Clone the repository
git clone https://github.com/SunflowersLwtech/covate.git
cd covate

# 2. Create virtual environment and install
# Using uv (recommended)
uv venv --python 3.11 covate
source covate/bin/activate          # macOS/Linux
# covate\Scripts\activate           # Windows
uv pip install -e '.[dev]'

# Or using standard venv
python -m venv covate
source covate/bin/activate           # macOS/Linux
# covate\Scripts\activate            # Windows
pip install -e '.[dev]'

Docker Installation

Prerequisites: Docker installed on your system

# 1. Pull from Docker Hub
docker pull sunflowerslwtech/covate:latest

# Or build locally
git clone https://github.com/SunflowersLwtech/covate.git
cd covate
docker build -t covate .

# 2. Run with Docker
docker run -i covate

# 3. Or use Docker Compose
docker-compose up -d

For detailed Docker usage, persistent storage, and Claude Desktop integration, see DOCKER.md.


⚙️ IDE Configuration

Claude Code (CLI) — One Command Setup

After installation, configure your AI coding IDE to use this MCP server.

Claude Code

Option 1: CLI (Recommended)

# macOS / Linux
claude mcp add covate -- ~/covate/covate/bin/covate

# Windows
claude mcp add covate -- %USERPROFILE%\covate\covate\Scripts\covate.exe

Option 2: Config File

Add to ~/.claude.json:

{
  "mcpServers": {
    "covate": {
      "command": "~/covate/covate/bin/covate"
    }
  }
}

For Windows:

{
  "mcpServers": {
    "covate": {
      "command": "C:\\Users\\YourName\\covate\\covate\\Scripts\\covate.exe"
    }
  }
}

Example paths:

  • Unix (uv): ~/covate/covate/bin/covate

  • Windows (uv): C:\\Users\\YourName\\covate\\covate\\Scripts\\covate.exe

  • Windows (conda): C:\\Users\\YourName\\anaconda3\\envs\\covate\\Scripts\\covate.exe

Path breakdown (Unix example):

  • ~/covate → repository directory

  • covate → virtual environment directory created by uv/venv

  • bin/covate → executable

Cursor

Add to Cursor MCP settings (Settings → MCP → Add Server):

{
  "covate": {
    "command": "~/covate/covate/bin/covate"
  }
}

For Windows:

{
  "covate": {
    "command": "C:\\Users\\YourName\\covate\\covate\\Scripts\\covate.exe"
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "covate": {
      "command": "~/covate/covate/bin/covate"
    }
  }
}

Docker Configuration

To use Docker with any MCP-compatible IDE:

{
  "mcpServers": {
    "covate": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/path/to/your/project:/workspace",
        "-w",
        "/workspace",
        "covate"
      ]
    }
  }
}

See DOCKER.md for detailed Docker configuration examples for Claude Desktop, Cursor, and other IDEs.

Other IDEs

For any MCP-compatible IDE, use these settings:

  • Command: <install-path>/covate/bin/covate (or covate\Scripts\covate.exe on Windows)

  • Transport: stdio

After configuration, restart your IDE.

Usage

Available Tools

Tool

Trigger

For

Returns

learning_session

User explicit request

User

{status, action} - minimal

debug_search

Automatic (on error)

Agent

Compact summaries

debug_record

Automatic (after fix)

Agent

{ok, id} - minimal

For Users: Learning Session

Say to your AI assistant:

  • "Quiz me on this change"

  • "Test my understanding"

  • "Help me learn about what you did"

The agent will create an interactive learning card and wait until you complete it.

Note: Quiz scores are saved locally for your self-tracking but are NOT returned to the agent - this keeps the context clean.

For Agents: Debug Tools

The debug tools work silently in the background:

  • Search first: When encountering errors, agent searches past solutions

  • Record after: When fixing errors, agent records the solution

  • Progressive disclosure: Returns compact summaries, not full records

  • Fast lookups: Uses inverted index for keyword-based searches

Updating

The remote update script automatically detects your installation and works with any path format (including Chinese/non-ASCII paths):

curl -fsSL https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.sh | bash
irm https://raw.githubusercontent.com/SunflowersLwtech/covate/main/scripts/update.ps1 | iex

The update script will:

  1. Auto-detect your installation location (supports multiple installations)

  2. Pull the latest changes from the repository

  3. Force-reinstall dependencies to ensure version synchronization

  4. Verify installation integrity and report any issues

  5. Detect if MCP server is in use and provide clear instructions

Why remote update?

  • ✅ Works with Chinese/non-ASCII paths without cd navigation

  • ✅ Always uses the latest update logic from the repository

  • ✅ Auto-detects installation location even if you forgot where it is

  • ✅ Handles multiple installations gracefully

Local Update (Alternative)

macOS / Linux:

~/covate/scripts/update.sh

Windows (PowerShell):

~\covate\scripts\update.ps1

Manual Update

# Navigate to installation directory
cd ~/covate  # or your custom installation path

# Pull latest changes
git pull origin main

# Update dependencies
# Using uv
source covate/bin/activate          # macOS/Linux
# covate\Scripts\activate           # Windows
uv pip install -e '.[dev]' --upgrade

# Or using standard venv
source covate/bin/activate           # macOS/Linux
# covate\Scripts\activate            # Windows
pip install -e '.[dev]' --upgrade

🖼️ Screenshots

Learning Session WebUI

WebUI Preview


🔒 Security & Privacy

Aspect

Details

Local First

All data stored in .mcp-sidecar/ directory within your project

No Telemetry

Zero data sent to external servers

Full Control

Delete .mcp-sidecar/ anytime to reset all data


🔮 Roadmap

We're building toward a Personalized Learning Center that grows with you. Here's what's coming:

🔍 Advanced Search & Indexing (v1.2)

Feature

Description

SQLite FTS5

Full-text search with Chinese support, prefix matching, and boolean queries

BM25 Ranking

Industry-standard relevance scoring for better search results

Semantic Search

Vector embeddings for meaning-based matching (e.g., "权限错误" finds "permission denied")

Cross-project Search

Search debug experiences across all your projects

📱 Mobile App (v2.0)

Feature

Description

Learning History Sync

Access your quiz history and learning progress on mobile

Spaced Repetition

Smart review scheduling based on forgetting curves

Offline Mode

Learn anywhere, sync when connected

Push Notifications

Gentle reminders to review concepts you're forgetting

🎯 Personalized Learning Center (v2.5)

Feature

Description

Knowledge Graph

Visual map of concepts you've learned and their connections

Weakness Analysis

AI identifies areas where you struggle and suggests focused practice

Learning Streaks

Gamification to keep you motivated

Team Insights

(Optional) Share anonymized learning patterns with your team

🤖 AI Enhancements (v3.0)

Feature

Description

Adaptive Quizzes

Questions adjust difficulty based on your performance

Code Pattern Recognition

Learn from patterns in your own codebase

Multi-language Support

Explanations in your preferred language

Voice Interface

"Hey Claude, quiz me on what we did yesterday"

Want to influence the roadmap? Open an issue or join the discussion!


🔧 Environment Variables

Variable

Default

Description

MCP_DEBUG

false

Enable debug logging (true, 1, yes, on)

MCP_TIMEOUT

120000

MCP server startup timeout in ms

MAX_MCP_OUTPUT_TOKENS

25000

Maximum tokens for MCP output


🤝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Install dev dependencies: uv pip install -e '.[dev]'

  4. Make changes and run tests: pytest

  5. Submit a Pull Request

See CONTRIBUTING.md for detailed guidelines.


📬 Contact


📄 License

This project is licensed under the MIT License.


Available Tools

4 tools
debug_recordC

Record debug solution. AUTO-call silently after fixing errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYes
causeYes
solutionYes
project_directoryNo.
tagsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden of behavioral disclosure. It mentions the tool operates 'silently' (implying no user notification) and is 'AUTO-call' (suggesting automated invocation), but doesn't describe what 'record' means operationally, whether data is persisted, what format is used, or any side effects. For a tool with 5 parameters and complex input schema, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two brief sentences that are front-loaded with the core purpose. However, the second sentence about 'AUTO-call' could be more clearly integrated with the first, and the overall brevity comes at the cost of completeness for such a parameter-rich tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters with 0% schema coverage, nested objects in the input schema, and an output schema exists, the description is inadequate. It doesn't explain the purpose of the complex 'context' object, the meaning of parameters, or what the tool actually does beyond 'record'. The existence of an output schema helps, but the description should provide more operational context for proper tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 5 parameters (3 required), the description provides no information about any parameters. It doesn't explain what 'context', 'cause', 'solution', 'project_directory', or 'tags' represent or how they should be used. The description fails to compensate for the complete lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose as 'Record debug solution' which indicates it logs debugging information, but it's vague about what exactly gets recorded and how. The phrase 'AUTO-call silently after fixing errors' adds context about usage timing but doesn't clearly distinguish this from sibling tools like debug_search or learning_session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance with 'AUTO-call silently after fixing errors' which suggests this should be invoked automatically after error resolution, but it doesn't explicitly state when to use this versus alternatives like debug_search or when NOT to use it. No prerequisites or comparison to siblings is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learning_sessionB

Interactive quiz card. Call ONLY when user says 'quiz me' or 'test me'. Blocks until done.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_directoryNo.
summaryNoI have completed the requested task.
reasoningNo
quizzesNo
focus_areasNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context: 'Blocks until done' indicates this is a synchronous, blocking operation that may take time, which is crucial for an agent to understand execution flow. However, it doesn't disclose other behavioral traits like error handling, authentication needs, or rate limits, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: it's a single sentence with three key pieces of information (what it is, when to use it, behavioral trait). Every word earns its place with zero waste, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters with 0% schema coverage and no annotations, the description is incomplete. It covers usage and blocking behavior but ignores all parameters and doesn't explain the interactive quiz functionality in detail. The presence of an output schema helps, but the description should provide more context about inputs and quiz mechanics to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 6 parameters are documented in the schema. The description provides no information about any parameters—it doesn't mention project_directory, summary, reasoning, quizzes, focus_areas, or timeout. This fails to compensate for the lack of schema documentation, leaving parameters entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool is an 'Interactive quiz card' which gives a general purpose, but it's vague about what specific action it performs. It mentions 'Call ONLY when user says 'quiz me' or 'test me'' which adds context but doesn't clearly specify the verb+resource combination (e.g., 'initiates a quiz session' or 'presents quiz questions'). It distinguishes from siblings by its interactive nature, but the purpose remains somewhat ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: 'Call ONLY when user says 'quiz me' or 'test me''. This clearly states when to use the tool (in response to specific user prompts) and implies when not to use it (for other purposes). It doesn't name alternatives, but given the sibling tools (debug_record, debug_search, term_get) are unrelated to quizzes, this is sufficient for strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

term_getC

Get unshown programming terms. Domains: programming_basics, algorithms, web_development, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_directoryNo.
countNo
domainNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Get unshown programming terms' but lacks details on permissions, rate limits, side effects, or return format. The agent must infer behavior from the name and limited description, which is insufficient for a mutation or data retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that efficiently state the purpose and domains. It's front-loaded with the core function, though it could be slightly more structured (e.g., by listing parameters).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which covers return values), the description's gaps in parameter semantics and behavioral transparency are partially mitigated. However, with no annotations and 0% schema coverage, it still lacks completeness for a tool with three parameters and unclear behavioral traits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It only hints at the 'domain' parameter with examples but doesn't explain 'project_directory' or 'count'. This leaves two parameters undocumented, failing to add sufficient meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('unshown programming terms'), and it provides domain examples like 'programming_basics, algorithms, web_development, etc.' However, it doesn't explicitly differentiate from sibling tools (e.g., debug_record, debug_search, learning_session), which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like the sibling tools. It mentions domains but doesn't specify contexts or exclusions for usage, leaving the agent with minimal direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updates
    • First observeddebug_record
    • First observeddebug_search
    • First observedlearning_session
    • First observedterm_get

TDQS

C2.9/5.0
Disambiguation4/5

The tools have mostly distinct purposes: debug_record and debug_search are both for debugging but focus on recording vs. searching, learning_session is for interactive quizzes, and term_get is for retrieving programming terms. There is some overlap between debug_record and debug_search in the debugging domain, but their descriptions clarify the difference, preventing significant confusion.

Naming Consistency3/5

The naming is mixed: debug_record and debug_search follow a verb_noun pattern, but learning_session uses a noun-based name, and term_get uses a noun_verb pattern. This inconsistency makes the set less predictable, though the names are still readable and descriptive overall.

Tool Count3/5

With 4 tools, the count is borderline for a 'Creator Growth' server, which suggests a broader scope. It feels slightly thin, as it covers debugging, learning, and terminology but lacks depth in areas like code creation or feedback tools that might be expected for growth-oriented purposes.

Completeness2/5

For a 'Creator Growth' domain, there are significant gaps: no tools for creating or editing code, providing feedback, tracking progress, or managing projects. The tools focus narrowly on debugging, quizzes, and terminology, leaving core growth workflows like iterative development or skill assessment uncovered.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides AI coding assistants with persistent memory, AST-based project indexing, and tools for live context management and hallucination detection. It enables saving lessons to local files, trimming conversation history, and verifying code symbols to prevent errors.
    14
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Helps AI coding agents remember what they learn across sessions by storing and retrieving atomic learnings, enabling persistent memory for AI tools.
    22
    1
    MIT

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SunflowersLwtech/covate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server