Roo Code Memory Bank MCP Server
Servidor MCP del banco de memoria de código Roo
Este proyecto implementa la funcionalidad principal del sistema Roo Code Memory Bank como servidor de Protocolo de Contexto de Modelo (MCP). Permite a los asistentes de IA mantener el contexto del proyecto en todas las sesiones interactuando con un banco de memoria basado en archivos mediante herramientas MCP estructuradas.
Características
Este servidor MCP proporciona las siguientes herramientas:
initialize_memory_bank: crea el directoriomemory-bank/y los archivos.mdestándar (productContext.md,activeContext.md,progress.md,decisionLog.md,systemPatterns.md) con plantillas iniciales.Entrada : (opcional)
{ "project_brief_content": string }Salida :
{ "status": "success" | "error", "messages"?: string[], "message"?: string }
check_memory_bank_status: comprueba si el directoriomemory-bank/existe y enumera los archivos.mdque contiene.Aporte :
{}Salida :
{ "exists": boolean, "files": string[] }
read_memory_bank_file: lee el contenido completo de un archivo de banco de memoria especificado.Entrada :
{ "file_name": string }Salida :
{ "content": string }u objeto de error.
append_memory_bank_entry: Añade una nueva entrada con marca de tiempo a un archivo específico, opcionalmente bajo un encabezado Markdown específico. Crea el archivo si no existe.Entrada :
{ "file_name": string, "entry": string, "section_header"?: string }Salida :
{ "status": "success" | "error", "message": string }
Related MCP server: engrams
Prerrequisitos
Node.js (se recomienda v18 o posterior)
npm (generalmente incluido con Node.js)
Un entorno de cliente MCP (como el utilizado por Cline) capaz de gestionar y lanzar servidores MCP.
Instalación
Clonar el repositorio:
git clone https://github.com/IncomeStreamSurfer/roo-code-memory-bank-mcp-server.git cd roo-code-memory-bank-mcp-serverInstalar dependencias:
npm installConstruir el proyecto:
npm run buildEsto compila el código TypeScript en JavaScript en el directorio
dist/.
Configuración (para el cliente Cline MCP)
Para que este servidor esté disponible para su asistente de IA (como Cline), debe agregar su configuración a su archivo de configuración de MCP (por ejemplo, cline_mcp_settings.json ).
Busque el objeto mcpServers en su archivo de configuración y agregue la siguiente entrada:
{
"mcpServers": {
// ... other server configurations ...
"roo-code-memory-bank-mcp": {
"autoApprove": [
"initialize_memory_bank",
"check_memory_bank_status",
"read_memory_bank_file",
"append_memory_bank_entry"
],
"disabled": false,
"timeout": 60,
"command": "node", // Or "cmd.exe" with "/c node ..." on Windows if needed
"args": [
// IMPORTANT: Replace this path with the actual absolute path
// to the compiled index.js file on your system
"/path/to/your/cloned/repo/roo-code-memory-bank-mcp-server/dist/index.js"
],
"env": {},
"transportType": "stdio"
}
// ... other server configurations ...
}
}Importante: Reemplace /path/to/your/cloned/repo/ con la ruta absoluta correcta a la ubicación donde clonó el repositorio en su equipo. Asegúrese de que el separador de ruta sea el correcto para su sistema operativo (por ejemplo, use barras invertidas \ en Windows).
Ejecución del servidor
Normalmente no es necesario ejecutar el servidor manualmente. El cliente MCP (como Cline) iniciará automáticamente el servidor usando el command y args especificados en el archivo de configuración al llamar a una de sus herramientas por primera vez.
Si desea probarlo manualmente, puede ejecutar npm start desde el directorio del proyecto.
Uso
El asistente de IA interactúa con el servidor mediante las herramientas definidas. El flujo de trabajo típico implica:
Comprobación del estado del banco de memoria (
check_memory_bank_status).Inicializando si es necesario (
initialize_memory_bank).Leyendo archivos relevantes (
read_memory_bank_file) para obtener contexto.Agregar entradas (
append_memory_bank_entry) a medida que se toman decisiones o se produce progreso.
El directorio memory-bank/ se creará en el mismo directorio donde se inicia el proceso del servidor (que debe ser la raíz de este directorio de proyecto cuando se inicia a través de la configuración del cliente MCP).
Instrucciones personalizadas
Establezca estas instrucciones dentro de Roo
Debes usar MCP donde sea necesario
Tengo un flujo MCP específico:
Utilice context7 para encontrar cualquier pieza de documentación relevante que necesitará para este proceso, asegúrese de alimentar cualquier conocimiento relevante a cualquier subtarea relevante - utilice context7 en todo momento para investigar documentación importante si no está seguro de algo Utilice Google Maps MCP para buscar + - esto nos permitirá encontrar los negocios básicos que necesitamos para realizar nuestra tarea Utilice Brave Search MCP para encontrar URL para raspar Utilice Fetch MCP con fetch_txt y fetch_markdown para encontrar texto e imágenes en páginas para convertir en archivos JSON y crear algo en profundidad Utilice la búsqueda de Openrouter para encontrar el sentimiento general de los temas, revisiones, etc.
Utilice el servidor roo-code-memory-bank-mcp para mantener el contexto del proyecto:
Al comienzo de una tarea o subtarea importante, utilice
check_memory_bank_status.Si el banco de memoria existe (
exists: true), utiliceread_memory_bank_filepara los archivos relevantes (por ejemplo,productContext.md,activeContext.md) para cargar el contexto del proyecto actual.Incorpore este contexto cargado en su planificación y ejecución.
Al tomar decisiones importantes, actualizaciones de progreso o cambios arquitectónicos, utilice
append_memory_bank_entrypara registrar la información en el archivo apropiado (decisionLog.md,progress.md, etc.), garantizando la persistencia del contexto.Si el banco de memoria no existe, considere usar
initialize_memory_banksi es apropiado para el proyecto.
Available Tools
4 toolsappend_memory_bank_entryC
Appends a new, timestamped entry to a specified file, optionally under a specific markdown header.
| Name | Required | Description | Default |
|---|---|---|---|
| entry | Yes | The content of the entry to append. | |
| file_name | Yes | The name of the memory bank file to append to. | |
| section_header | No | (Optional) The exact markdown header (e.g., '## Decision') to append under. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool appends with timestamping and optional header placement, but lacks details on permissions, file format constraints, error handling (e.g., if file doesn't exist), or mutation effects (e.g., overwriting). This is inadequate for a write operation with zero annotation coverage.
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, efficient sentence that front-loads the core action and key optional feature. Every word earns its place, with no redundancy or fluff, making it highly concise and well-structured.
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 tool's complexity (a write operation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error cases, return values, or interaction with siblings, leaving significant gaps for an agent to use it correctly in context.
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 the schema fully documents all parameters. The description adds marginal value by clarifying that 'section_header' is for markdown headers and 'entry' is content, but doesn't provide syntax examples or constraints beyond the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
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 action ('Appends'), resource ('to a specified file'), and key details ('new, timestamped entry', 'optionally under a specific markdown header'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'initialize_memory_bank' (which likely creates files) or 'read_memory_bank_file' (which reads content), missing full sibling distinction.
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. It doesn't mention prerequisites (e.g., file must exist), exclusions (e.g., not for creating new files), or comparisons to siblings like 'initialize_memory_bank' for setup or 'read_memory_bank_file' for retrieval, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_memory_bank_statusA
Checks if the memory-bank directory exists and lists the .md files within it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 describes the tool's actions (checking directory existence and listing .md files), which is helpful, but doesn't cover aspects like error handling (e.g., what happens if the directory doesn't exist), performance characteristics, or output format details. This leaves gaps in understanding how the tool behaves in edge cases.
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 that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded with the main action ('Checks if...') and includes all relevant details (directory existence and file listing) in a compact form, making it easy to understand at a glance.
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 tool's simplicity (0 parameters, no output schema, no annotations), the description is somewhat complete but could be improved. It explains what the tool does, but without an output schema, it doesn't detail the return format (e.g., whether it returns a boolean, list, or structured data). For a status-checking tool, more information on output behavior would enhance completeness.
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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose. Since there are no parameters to explain, this meets expectations, but a perfect score is reserved for cases where the description adds value beyond an already complete schema, which isn't applicable here.
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's purpose with specific verbs ('checks if... exists' and 'lists... files') and identifies the resource ('memory-bank directory' and '.md files'). It distinguishes from siblings by focusing on status checking rather than appending, initializing, or reading specific files. However, it doesn't explicitly contrast with sibling tools, keeping it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning what the tool does (checking existence and listing files), which suggests it's for verifying the memory bank's state. However, it lacks explicit guidance on when to use this tool versus alternatives like 'initialize_memory_bank' or 'read_memory_bank_file', and doesn't specify any prerequisites or exclusions, leaving usage decisions somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initialize_memory_bankB
Creates the memory-bank directory and standard .md files with initial templates.
| Name | Required | Description | Default |
|---|---|---|---|
| project_brief_content | No | (Optional) Content from projectBrief.md to pre-fill productContext.md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states the tool creates directories and files, it doesn't cover critical aspects such as whether this is idempotent (e.g., what happens if the memory bank already exists), permission requirements, error conditions, or side effects. This is a significant gap for a tool that performs file system operations.
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, efficient sentence that directly states the tool's action without unnecessary words. It's front-loaded with the core purpose and avoids redundancy, making it easy to parse quickly.
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 tool's complexity (file system creation with templates), lack of annotations, and no output schema, the description is minimally adequate. It covers the basic purpose but misses behavioral details like idempotency or error handling. With no structured fields to rely on, the agent would need more information for robust usage.
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?
The input schema has 100% description coverage, with one optional parameter clearly documented. The description doesn't add any parameter-specific information beyond the schema, but since schema coverage is high and there's only one parameter, the baseline is 3. The description's mention of 'initial templates' provides slight additional context about the tool's behavior, justifying a score of 4.
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's purpose: 'Creates the memory-bank directory and standard .md files with initial templates.' This specifies the verb ('Creates') and resources ('memory-bank directory and standard .md files'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'check_memory_bank_status' or 'read_memory_bank_file', which would require a 5.
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. It doesn't mention prerequisites (e.g., whether the memory bank must not already exist), exclusions, or comparisons to siblings like 'append_memory_bank_entry'. This leaves the agent with minimal context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_memory_bank_fileC
Reads the full content of a specified memory bank file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | The name of the memory bank file (e.g., 'productContext.md') |
TDQS
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 states the action ('Reads') but lacks details on permissions, error handling (e.g., what happens if the file doesn't exist), or output format (e.g., plain text, structured data). This leaves significant gaps for a tool with no annotation coverage.
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, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like error cases or output format, which are crucial for a read operation. The high schema coverage helps with parameters, but overall context is insufficient for reliable tool invocation.
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?
The input schema has 100% description coverage, with the parameter 'file_name' well-documented in the schema itself. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage.
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 verb ('Reads') and resource ('full content of a specified memory bank file'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'check_memory_bank_status' or 'append_memory_bank_entry', which might involve reading or checking content in different ways.
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 is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used for retrieving entire files versus checking status or appending entries, leaving the agent to infer usage from tool names alone.
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.
4 tool updates
v1.0.0- First observed
append_memory_bank_entry - First observed
check_memory_bank_status - First observed
initialize_memory_bank - First observed
read_memory_bank_file
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: append adds entries, check verifies directory status, initialize sets up the structure, and read retrieves content. There is no overlap in functionality, making it easy for an agent to select the correct tool without confusion.
All tool names follow a consistent verb_noun pattern (e.g., append_memory_bank_entry, check_memory_bank_status), with clear and descriptive verbs. There are no deviations in naming conventions, ensuring predictability and readability.
With 4 tools, the server is well-scoped for managing a memory bank system. Each tool serves a distinct and necessary function (setup, verification, reading, writing), and the count is neither too sparse nor excessive for the domain.
The tools cover core CRUD-like operations for a memory bank: initialize (create), check (status), read (retrieve), and append (update/add). A minor gap is the lack of a delete or modify tool for removing or editing entries, but agents can work around this with append for updates.
Maintenance
Related MCP Connectors
Portable AI memory shared across models and harnesses - plain markdown you own.
Shared project memory that keeps teammates and AI agents aligned across sessions.
Persistent memory for AI assistants: store, search, and connect knowledge across conversations.
Gives your AI assistant persistent memory and intelligence about your work patterns.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides a structured documentation system for context preservation in AI assistant environments, helping users create and manage memory banks for their projects.377MIT
- AlicenseNot gradedqualityCmaintenanceGives AI assistants persistent, queryable project memory for decisions, patterns, and rules, reducing the need to re-explain context in every prompt.11Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to retain memory across sessions by storing conversations locally in Markdown files, allowing personalization and continuity without external servers.MIT
- AlicenseNot gradedqualityCmaintenanceProvides persistent, project-specific memory to AI assistants via the Model Context Protocol, enabling context-aware collaboration across sessions without cloud dependencies.21 PyPI1Apache 2.0