Mode Manager MCP
Mode Manager MCP provides a comprehensive system for managing AI memory, custom instructions, and chat modes to enhance VS Code Copilot's contextual understanding and workflow.
Key capabilities:
AI Memory Management: Store and retrieve personal, team, and language-specific facts and preferences for future conversations
Chat Mode Control: Create, update, delete, list, and manage
.chatmode.mdfiles to define specific behaviors like 'Beast Mode' or 'Architect Mode'Instruction Handling: Create, update, delete, list, and retrieve
.instructions.mdfiles that serve as foundational context for CopilotLibrary Integration: Browse, refresh, and install chat modes and instructions from the curated Mode Manager MCP Library
Directory Access: Get the VS Code prompts directory path and list all stored configurations
Dynamic Customization: Easily evolve prompts and instructions as your needs change
Provides persistent memory functionality for GitHub Copilot in VS Code, allowing Copilot to remember user preferences, coding styles, and contextual information across all conversations and sessions.
Uses pipx to install and run the mode-manager-mcp package, enabling easy installation and execution without affecting system dependencies.
Mentioned as an example of a testing framework that can be remembered in user preferences, but not as a direct integration of the MCP server.
Built on Python 3.10+, leveraging Python's capabilities for managing VS Code prompt ecosystem and implementing the persistent memory functionality.
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., "@Mode Manager MCPremember I prefer using TypeScript with strict mode enabled for all new projects"
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.
Meet #remember -- Real Memory for You, Your Team, and Your AI
Mode Manager MCP is an AI-powered memory and context system for developers and teams. It lets you and your team “remember” important facts, preferences, and best practices—so your AI assistant always has the right context, and your team’s knowledge is never lost.
With Mode Manager MCP, you can:
Instantly store and retrieve personal, team, and language-specific knowledge.
Share onboarding notes, coding conventions, and project wisdom—right where you work.
Make your AI assistant smarter, more helpful, and always in sync with your workflow.
Why “Remember”? (Features & Benefits)
Personal AI Memory: Instantly store preferences, facts, and reminders for yourself—your AI assistant will always know your context.
Workspace (Team) Memory: Share best practices, onboarding notes, and team knowledge directly in the repo. New team members ramp up faster, and everyone stays on the same page.
Language-Specific Memory: Save and retrieve language-specific tips and conventions. Your assistant adapts to each language’s best practices automatically.
Natural Language Simplicity: Just say “remember…”—no config files, no YAML, no technical hurdles.
Smarter Coding, Fewer Repeated Questions: Your team’s memory grows over time, reducing repeated questions and ensuring consistent practices.- AI-Powered Memory Optimization: Automatically consolidate and organize your memories to keep them clean and efficient.
Before this tool
"Hey Copilot, write me a Python function..."
Copilot: Gives generic Python codeAfter using
remember
You: "Remember I'm a senior data architect at Oatly, prefer type hints, and use Black formatting"
Next conversation: "Write me a Python function..."
Copilot: Generates perfectly styled code with type hints, following your exact preferences
Ready to have Copilot that actually remembers you? Get started now!
Related MCP server: repo-memory-mcp
Real-World Examples: Just Say It!
You don’t need special syntax—just talk to Copilot naturally. Mode Manager MCP is extremely relaxed about how you phrase things. If it sounds like something you want remembered, it will be!
Personal memory
You: I like detailed docstrings and use pytest for testing. (Copilot, keep that in mind.)Team memory
You: We alw ays use the Oatly data pipeline template and follow our naming conventions. (Let’s make sure everyone remembers that.)Language-specific memory You: For Python, use type hints and Black formatting. In C#, always use nullable reference types.
Get It Running (2 Minutes)
If you don't have Python installed, get it at python.org/downloads - you'll need Python 3.10 or higher.
Don't have uv yet? Install it with: pip install uv or see docs.astral.sh/uv
Option 1: One-Click Install (Easiest)
Click the badge for your VS Code version:
That's it! The server will automatically start when you open VS Code.
Option 2: Manual Configuration
Add this to your .vscode/mcp.json or global mcp.json file:
{
"servers": {
"mode-manager": {
"command": "uvx",
"args": ["mode-manager-mcp"]
}
}
}Or if you prefer pipx:
{
"servers": {
"mode-manager": {
"command": "pipx",
"args": ["run", "mode-manager-mcp"]
}
}
}Option 3: Development / Testing (Latest from GitHub)
For the impatient who want the latest features immediately:
With uvx:
{
"servers": {
"mode-manager": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/NiclasOlofsson/mode-manager-mcp.git",
"mode-manager-mcp"
]
}
}
}With pipx:
{
"servers": {
"mode-manager": {
"command": "pipx",
"args": [
"run",
"--no-cache",
"--spec",
"git+https://github.com/NiclasOlofsson/mode-manager-mcp.git",
"mode-manager-mcp"
]
}
}
}This downloads and installs directly from GitHub every time - always bleeding edge!
Bonus: Interactive Onboarding
As a convenience, you can run the following prompt in VS Code to get started:
You: /mcp.mode-manager.onboarding
This will guide you through the onboarding process, set up your persistent memory, and ensure Copilot knows your preferences from the start.
For Development / Testing Latest from GitHub
To run the latest code directly from GitHub:
{
"servers": {
"mode-manager": {
"command": "uv",
"args": [
"run",
"--with",
"git+https://github.com/NiclasOlofsson/mode-manager-mcp.git",
"mode-manager-mcp"
],
"env": {
"_RESTART": "1"
}
}
}
}Under the Hood: How Memory Magic Happens
Mode Manager MCP is designed to make memory persistent, context-aware, and easy to manage—without you having to think about the details. Here’s how it works under the hood:
Memory Scopes
Personal Memory:
Stored in a user-specific file (memory.instructions.md) in your VS Code prompts directory. This is your private memory—preferences, habits, and facts that follow you across all projects.Workspace (Team) Memory:
Stored in a workspace-level file (alsomemory.instructions.md, but in the workspace’s.github/instructionsdirectory). This is shared with everyone working in the same repo, so team conventions and onboarding notes are always available.Language-Specific Memory:
Stored in files likememory-python.instructions.md,memory-csharp.instructions.md, etc. These are automatically loaded when you’re working in a particular language, so language tips and conventions are always at hand.
How Memory is Stored
All memory is saved as Markdown files with a YAML frontmatter header, making it both human- and machine-readable. Each entry is timestamped and neatly organized, so you can always see when and what was remembered. You never have to manage these files yourself—Mode Manager MCP automatically creates and updates them as you add new memories.
How Memory is Loaded
Here’s the magic: Mode Manager MCP writes and manages all your memory files, but it’s actually the new VS Code Copilot Chat that automatically loads them—every single turn. This deep integration means that, every time you send a message or ask Copilot for help, your user, workspace, and language memories are instantly available to the AI.
Language-specific memory is even smarter: it’s tied to file types using
the applyTo property in the YAML frontmatter (for example, **/*.py for Python
or **/*.cs for C#). This means you get the right tips, conventions, and
reminders only when you’re working in the relevant language or file type—no clutter,
just the context you need, exactly when you need it.
You never have to worry about context being lost between messages or sessions; your memory is always active and available. We’re simply leveraging this new, amazing VS Code feature to make your Copilot (and your team) smarter than ever.
No Special Syntax Needed
There’s no need to remember special commands or keywords—just talk naturally. Mode Manager MCP is flexible and understands a wide range of phrasing. You don’t have to say “workspace” to store team memory; it recognizes common alternatives like “project,” “repo,” or even just describing something as a team convention. Whether you’re making a personal note, a team guideline, or a language-specific tip, just say it in your own words—Mode Manager MCP figures out what you want to remember and where it belongs.
Contributing
Want to help make this better? The best contribution you can make is actually using it - your feedback and bug reports are what really drive improvements.
Of course, code contributions are welcome too! Check out CONTRIBUTING.md for development setup and guidelines. But seriously, just using it and telling us what works (or doesn't) is incredibly valuable.
License
MIT License - see LICENSE for details.
Available Tools
9 toolsconfigure_memory_optimizationConfigure Memory OptimizationC
Configure memory optimization settings for auto-optimization behavior.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_file | No | ||
| auto_optimize | No | ||
| token_growth_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and non-idempotency. Description adds no additional behavioral details such as side effects, permissions, or state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 6 words, but under-specification for a tool with 3 parameters and no schema descriptions. Conciseness sacrifices necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameter descriptions and missing output schema explanation, the description is insufficient for correct tool invocation. Lacks parameter meanings and usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and description does not explain any of the three parameters (memory_file, auto_optimize, token_growth_threshold). Agent has no semantic guidance for input values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool configures memory optimization settings for auto-optimization behavior. It distinguishes from sibling 'optimize_memory' by focusing on configuration rather than execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like 'optimize_memory' or 'memory_stats'. Agent must infer context from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_instructionCreate InstructionA
Create a new VS Code .instructions.md file with the specified description and content.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction_name | Yes | The name for the new instruction (with or without extension) | |
| description | Yes | A brief description of what this instruction does | |
| content | Yes | The main content/instructions in markdown format |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, so the description does not need to repeat those. However, the description does not clarify what happens if the instruction_name already exists (e.g., overwrite or error), nor does it discuss side effects. It adds minor context by specifying the file type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence (14 words) that directly conveys the purpose. It is front-loaded with the action and resource, and every word is necessary. There is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool has an output schema (not shown), the description does not explain the output or edge cases like naming conflicts or content limits. It covers the basic function but lacks completeness for a creation tool with multiple parameters and potential duplicates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions 'description and content' but adds no additional semantic details beyond the schema descriptions. No parameter-specific guidance is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new VS Code .instructions.md file with specified description and content. It uses specific verb 'create' and resource 'VS Code .instructions.md file', which distinguishes it from siblings like update_instruction or delete_instruction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as update_instruction. There is no mention of prerequisites, constraints, or situations where using this tool is inappropriate. The description only implies usage for new instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_instructionDelete InstructionA
Delete a VS Code .instructions.md file from the prompts directory.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction_name | Yes | The name of the instruction to delete (with or without extension) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this tool is not read-only and not idempotent, which is consistent with deletion. The description adds the file type and directory location, but does not disclose critical behavioral details like whether deletion is permanent, if confirmation is needed, or error handling for missing files. With annotations covering the safety profile, the minimal addition is acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It fits on one line and immediately conveys the tool's core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description doesn't need to detail return values. However, it omits practical details like what happens on success, failure cases (e.g., file not found), and whether the operation is reversible. For a deletion tool of this nature, the description is adequate but leaves common questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already documents the single parameter 'instruction_name' with the description 'with or without extension'. The tool description does not elaborate further on parameter meaning, formatting, or valid values, offering no added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely states the action ('Delete') and the resource ('a VS Code .instructions.md file from the prompts directory'), making the tool's purpose unmistakable. It clearly distinguishes itself from sibling tools like create_instruction, get_instruction, update_instruction, and list_instructions by specifying the delete operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, such as when to delete vs. update or list instructions. No contextual cues or exclusions are provided, leaving an AI agent without decision-making support for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instructionGet InstructionARead-onlyIdempotent
Get the raw content of a VS Code .instructions.md file.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction_name | Yes | Name of the instruction (without extension) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint; the description adds context about retrieving raw content from a specific file type, but does not elaborate on behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's function without redundancy, though it could include slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and an existing output schema, the description covers the essential purpose and input; no missing critical details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description does not add meaning beyond the schema, as it only explains that the parameter is the instruction name without extension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and the resource 'raw content of a VS Code .instructions.md file', making the tool's purpose distinct from siblings like 'create_instruction' or 'list_instructions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; the description implies it's for retrieving instruction content but does not provide when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instructionsList InstructionsARead-onlyIdempotent
List all VS Code .instructions.md files in the prompts directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, covering safety. Description adds scope (prompts directory) and file type (.instructions.md), which is useful context beyond annotations. No additional behavioral details needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 10 words, no waste. Every word adds value. Perfectly concise for a simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, list-only tool with output schema, description is fully adequate. It clearly identifies what is listed and scope. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Baseline for 0 params is 4. Description adds no parameter info, which is appropriate given no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all VS Code .instructions.md files in the prompts directory.' Verb 'List' and resource specified precisely. Distinguished from sibling tools like create, delete, get, update, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. However, the sibling names imply use for listing all files; for specific files, use get_instruction. Missing explicit when-not or alternative comparisons, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_statsMemory File StatisticsCRead-onlyIdempotent
Get detailed statistics and optimization status for a memory file.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's claim of 'Get' is consistent but not additive. The description adds that it provides 'statistics and optimization status,' which is useful but superficial; it does not disclose any behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence and 12 words. It is front-loaded with the verb 'Get' and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool being simple with one optional parameter and an output schema, the description lacks details about what statistics are returned, what optimization status means, and how the input should be specified. It leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no explanation of the 'memory_file' parameter in the description, the agent has no semantic understanding of this optional parameter. The description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Get detailed statistics and optimization status for a memory file.' It uses a specific verb and resource, and its purpose is distinct from sibling tools like 'optimize_memory' and 'configure_memory_optimization'. However, it does not explicitly differentiate from these siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as 'optimize_memory' or 'configure_memory_optimization'. It simply describes the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_memoryOptimize Memory FileB
Manually optimize a memory file using AI to reorganize and consolidate entries while preserving all information.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_file | No | ||
| force | No | Force optimization regardless of criteria |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false) and non-idempotent (idempotentHint=false). The description adds that it reorganizes and consolidates entries while preserving information, which is helpful but does not disclose any side effects, permission requirements, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and provides key details. No extraneous words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with 2 params and an output schema, the description explains the core functionality but omits usage context (e.g., when to call manually vs. automated), potential performance considerations, and what the output contains. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only force has a description). The tool description does not mention any parameters, so it adds no meaning beyond what the schema provides. It fails to compensate for the undocumented memory_file parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (optimize) and resource (memory file), and clearly distinguishes from siblings like configure_memory_optimization (configuration) and remember (adding entries). It is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide when-to-use or when-not-to-use guidance. It mentions 'manually' but does not contrast with automatic optimization or reference sibling tools. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberRememberAIdempotent
Store user information persistently for future conversations. When users share preferences, coding standards, project details, or any context they want remembered, use this tool. Extract the key information from natural language and store it appropriately. The system automatically detects scope (user/workspace) and language specificity from context. For ambiguous cases, you will receive clarification prompts to ask the user. Examples of what to remember: coding preferences ('I like detailed docstrings'), project specifics ('This app uses PostgreSQL'), language standards ('For Python, use type hints'), workflow preferences ('Always run tests before committing'). Use only the memory_item parameter with natural language - the system handles scope detection.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_item | Yes | The information to remember | |
| scope | No | Memory scope: 'user' (default) or 'workspace' | user |
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details about automatic scope/language detection and natural language input, but contradicts the schema by advising to 'use only memory_item' while schema exposes scope and language parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with examples, but slightly verbose; could tighten the guidance on parameter usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers use cases, examples, and auto-detection behavior, but could clarify the role of the optional parameters and expected return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Provides context for memory_item but downplays scope and language parameters despite their existence in the schema, creating confusion for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stores persistent context, gives concrete examples, and differentiates from sibling tools like configure_memory_optimization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use (e.g., preferences, coding standards) and mentions clarification prompts for ambiguity, but lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_instructionUpdate InstructionA
Update an existing VS Code .instructions.md file with new description or content.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction_name | Yes | The name of the instruction to update (with or without extension) | |
| description | No | ||
| content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=false. Description adds no additional behavioral context such as whether the tool overwrites or merges fields, or if there are side effects. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently conveys the tool's purpose without extraneous detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool, the description covers the main purpose. An output schema exists to document return values. However, missing details on whether updates are overwrite or merge could be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33% (only instruction_name has description). Description mentions 'new description or content', mapping to two parameters, but does not add format or constraints beyond parameter names. Baseline score of 3 is appropriate given self-explanatory names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'update' and clearly identifies the resource as 'existing VS Code .instructions.md file'. It distinguishes from sibling tools like create_instruction, delete_instruction, and get_instruction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage context (updating existing instruction), but there is no explicit guidance on when to use this tool versus alternatives or when not to use it. No mention of prerequisites or exclusions.
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.
10 tool updates
v2.0.1- Removed
browse_mode_library - Changed
configure_memory_optimization4 fields changed- removed
Input schema / properties / entry_thresholdRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / size_thresholdRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / time_threshold_daysRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - added
Input schema / properties / token_growth_thresholdAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
create_chatmode - Removed
delete_chatmode - Removed
get_chatmode - Removed
install_from_library - Removed
list_chatmodes - Removed
refresh_library - Removed
update_chatmode - Removed
update_chatmode_from_source
18 tool updates
v1.0.0- Changed
browse_mode_library4 fields changed- removed
Input schema / properties / category / titleRemoved value: -"Category" - removed
Input schema / properties / search / titleRemoved value: -"Search" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
configure_memory_optimization7 fields changed- removed
Input schema / properties / auto_optimize / titleRemoved value: -"Auto Optimize" - removed
Input schema / properties / entry_threshold / titleRemoved value: -"Entry Threshold" - removed
Input schema / properties / memory_file / titleRemoved value: -"Memory File" - removed
Input schema / properties / size_threshold / titleRemoved value: -"Size Threshold" - removed
Input schema / properties / time_threshold_days / titleRemoved value: -"Time Threshold Days" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
create_chatmode6 fields changed- removed
Input schema / properties / content / titleRemoved value: -"Content" - removed
Input schema / properties / description / titleRemoved value: -"Description" - removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Input schema / properties / tools / titleRemoved value: -"Tools" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
create_instruction5 fields changed- removed
Input schema / properties / content / titleRemoved value: -"Content" - removed
Input schema / properties / description / titleRemoved value: -"Description" - removed
Input schema / properties / instruction_name / titleRemoved value: -"Instruction Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
delete_chatmode3 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
delete_instruction3 fields changed- removed
Input schema / properties / instruction_name / titleRemoved value: -"Instruction Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_chatmode3 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_instruction3 fields changed- removed
Input schema / properties / instruction_name / titleRemoved value: -"Instruction Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
install_from_library4 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Input schema / properties / name / titleRemoved value: -"Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_chatmodes2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_instructions2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
memory_stats3 fields changed- removed
Input schema / properties / memory_file / titleRemoved value: -"Memory File" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
optimize_memory4 fields changed- removed
Input schema / properties / force / titleRemoved value: -"Force" - removed
Input schema / properties / memory_file / titleRemoved value: -"Memory File" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
refresh_library2 fields changed- removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
remember5 fields changed- removed
Input schema / properties / language / titleRemoved value: -"Language" - removed
Input schema / properties / memory_item / titleRemoved value: -"Memory Item" - removed
Input schema / properties / scope / titleRemoved value: -"Scope" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
update_chatmode6 fields changed- removed
Input schema / properties / content / titleRemoved value: -"Content" - removed
Input schema / properties / description / titleRemoved value: -"Description" - removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Input schema / properties / tools / titleRemoved value: -"Tools" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
update_chatmode_from_source3 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
update_instruction5 fields changed- removed
Input schema / properties / content / titleRemoved value: -"Content" - removed
Input schema / properties / description / titleRemoved value: -"Description" - removed
Input schema / properties / instruction_name / titleRemoved value: -"Instruction Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
18 tool updates
- First observed
browse_mode_library - First observed
configure_memory_optimization - First observed
create_chatmode - First observed
create_instruction - First observed
delete_chatmode - First observed
delete_instruction - First observed
get_chatmode - First observed
get_instruction - First observed
install_from_library - First observed
list_chatmodes - First observed
list_instructions - First observed
memory_stats - First observed
optimize_memory - First observed
refresh_library - First observed
remember - First observed
update_chatmode - First observed
update_chatmode_from_source - First observed
update_instruction
TDQS
Scored across 9 tools
Each tool targets a specific action: memory optimization settings, instruction CRUD, storage, and statistics. There is no overlap; 'remember' and 'optimize_memory' are clearly distinct.
Most tools follow verb_noun pattern (e.g., create_instruction, list_instructions), but 'memory_stats' is noun_noun and 'remember' is a single verb, breaking consistency.
9 tools cover two domains (5 for instructions, 4 for memory optimization) without being excessive or insufficient for the stated purpose.
Instruction management has full CRUD, but memory management lacks tools to list, get, or delete stored memories, leaving noticeable gaps in the workflow.
Maintenance
Related MCP Connectors
LLM Orchestration Agent (Mcp)
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server to expose VS Code editing features to an LLM for AI coding9106392MIT
- AlicenseCqualityDmaintenanceMCP server for sharing source-backed engineering memory across AI coding clients like Cursor and VS Code.301MIT
- AlicenseBqualityBmaintenanceMulti-agent shared brain MCP server enabling cross-session memory, self-improving skill loops, and inter-agent signaling across Claude, Codex, Gemini, Copilot, and VS Code CLI agents.12712MIT

Vertiso Memoryofficial
AlicenseNot gradedqualityBmaintenanceA portable, user-owned memory for MCP-capable agents in VS Code, enabling cross-agent recall and memory creation.MIT