ai-memory-mcp
Integrates with GitHub Copilot in VS Code to provide persistent memory, allowing storage and retrieval of session summaries and decisions.
Click on "Install 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., "@ai-memory-mcpLoad my memory for project 'ai-memory-mcp'"
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.
๐ง AI Memory MCP
Persistent session memory for AI assistants โ store, search and retrieve conversation summaries via the Model Context Protocol.
What is this?
AI assistants forget everything between sessions. AI Memory MCP solves that by giving your AI a structured long-term memory:
๐ Save session summaries with status, tags, modules and file paths
๐ Search by keyword, full-text (FTS5), or semantic vector similarity
๐ Restore context at the start of each session with one tool call
๐ Generate weekly reports from completed tasks automatically
๐ท๏ธ Multi-project / multi-branch support out of the box
Works with Claude Desktop, Cursor, VS Code, Windsurf, and any MCP-compatible client.
Related MCP server: recall-mcp
Quick Start
1 โ Install
# From PyPI (recommended)
pip install ai-memory-mcp
# With vector search support (adds ~500 MB for embedding model)
pip install "ai-memory-mcp[vector]"
# From source
git clone https://github.com/zhanpu89/ai-memory-mcp
cd ai-memory-mcp
pip install -e .2 โ Configure your AI client
Pick the config snippet for your tool and add it to its MCP settings file:
{
"mcpServers": {
"ai-memory": {
"command": "ai-memory-mcp"
}
}
}{
"mcpServers": {
"ai-memory": {
"command": "ai-memory-mcp"
}
}
}{
"servers": {
"ai-memory": {
"type": "stdio",
"command": "ai-memory-mcp"
}
}
}{
"mcpServers": {
"ai-memory": {
"command": "ai-memory-mcp"
}
}
}Start the server:
ai-memory-mcp --http
# or: python service.py startThen point your client at:
{
"mcpServers": {
"ai-memory": {
"url": "http://localhost:8000/mcp"
}
}
}All config snippets are available in
integrations/.
3 โ Use it
At the start of every session, tell your AI:
Load my memory for project "my-project"The AI will call init_session and restore your previous context automatically.
Features
Feature | Details |
Storage | SQLite โ zero external services, single file |
Full-text search | SQLite FTS5 โ fast, no extra deps |
Semantic search | ChromaDB + |
Multi-project | Filter by |
Task lifecycle |
|
Key decisions | Attach architectural decisions to sessions |
Weekly reports | Auto-generated Markdown report |
Transport | stdio (local) or streamable-HTTP (remote) |
Docker | Single-container deployment included |
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI Client (Claude / Cursor โฆ) โ
โ MCP Protocol โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ stdio / HTTP
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AiMemoryMcpServer (FastMCP) โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SQLite DB โ โ ChromaDB (optional) โ โ
โ โ FTS5 index โ โ Sentence-Transformersโ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโData lives in ~/.ai-memory/ โ completely separate from your project files.
Tool Reference
โ See TOOLS.md for the full schema of all 10 tools.
Tool | Description |
| Persist a new session summary |
| Update status / content |
| Record a key technical decision |
| Keyword / FTS5 / vector search |
| Dedicated FTS5 full-text search |
| Exact lookup by session ID |
| List latest sessions |
| Restore context at session start |
| Generate Markdown weekly report |
| Rebuild index, VACUUM, persist vectors |
Configuration
All settings are optional โ sensible defaults work out of the box.
Env var | Default | Description |
|
| SQLite database path |
|
| Embedding model cache |
|
| HTTP server bind address |
|
| HTTP server port |
Create ~/.ai-memory/.env to persist settings:
AI_MEMORY_DB_PATH=/custom/path/ai_memory.db
AI_MEMORY_PORT=9000Docker
Optimized for China: Uses Tsinghua pip mirror + HuggingFace mirror for fast downloads.
# Option 1: Core-only (lightweight, ~200 MB image)
docker compose up -d
# Option 2: Full (with vector search)
# Step 1: Pre-download model to avoid large image
python3 scripts/download_model_for_docker.py --output ./models
# Step 2: Build with vector support (~700 MB image + 500 MB external model)
docker compose build --build-arg INSTALL_VECTOR=true
docker compose up -d
# View logs
docker compose logs -fThe MCP endpoint will be available at http://localhost:8000/mcp.
๐ Full deployment guide: See DOCKER.md for:
Image size optimization strategies
Chinese mirror configuration
Model pre-downloading
Production deployment examples
Development
# Clone and install in editable mode with dev extras
git clone https://github.com/zhanpu89/ai-memory-mcp
cd ai-memory-mcp
pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=src/mcp_server --cov-report=term-missing
# Start in HTTP mode for manual testing
ai-memory-mcp --httpProject Structure
ai-memory-mcp/
โโโ src/mcp_server/
โ โโโ __init__.py
โ โโโ server.py # All 10 MCP tools + server class
โโโ tests/
โ โโโ unit/ # 24 unit tests
โ โโโ integration/
โโโ scripts/
โ โโโ download_model.py # Manual model download
โ โโโ migrate_db.py # Database migration helper
โ โโโ migrate_vector.py # Vector store migration
โโโ integrations/ # Ready-to-use MCP client configs
โ โโโ claude_desktop_config.json
โ โโโ cursor_mcp.json
โ โโโ vscode_mcp.json
โ โโโ windsurf_mcp.json
โ โโโ http_mode_config.json
โโโ TOOLS.md # Full tool schema reference
โโโ INSTALL.md # Detailed installation guide
โโโ Dockerfile
โโโ docker-compose.yml
โโโ pyproject.tomlTesting
24 passed in 7spytest tests/unit/test_mcp_server.py -vAll 24 unit tests cover: save/update/search/FTS/vector/decisions/maintenance/init/review/schema.
Requirements
Python 3.10+
mcp >= 1.6.0python-dotenv >= 1.0.0
Optional (vector search):
chromadb >= 0.6.0sentence-transformers >= 3.0.0
License
MIT ยฉ AI Memory Team
Available Tools
10 toolsadd_decisionB
ไธบๆๅฎไผ่ฏๆทปๅ ๅ ณ้ฎๅณ็ญ่ฎฐๅฝใ
Args: params (AddDecisionInput): ๅ ๅซ๏ผ - session_id (str): ๅ ณ่็ไผ่ฏ ID - decision_type (str): ๅณ็ญ็ฑปๅ๏ผๅฆ tech_stack / api_design / architecture - description (str): ๅณ็ญๆ่ฟฐ - reasoning (Optional[str]): ๅณ็ญ็็ฑ
Returns: Dict: {"success": bool, "message": str}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
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. The description adds the return format (Dict with success and message) which is behavioral. However, it does not disclose edge cases like duplicate decisions or invalid session IDs. Overall adequate but not rich.
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 front-loaded with a clear one-sentence purpose. The docstring is structured with Args and Returns. It is not overly long, though it repeats schema 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?
The tool is simple (add a decision), and the description covers the basic purpose and parameters. However, it lacks details on error behavior, constraints (e.g., duplicate decisions), and the exact output schema is not fully specified (though the return dict is described). With an output schema present, some completeness is assumed, but the description could be more 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 0% per context, so the description must compensate. It lists all four parameters with descriptions in a docstring, which mirrors the schema. While it adds no new meaning beyond the schema, it provides the information in a readable format, meeting the baseline for low 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 (add) and resource (decision record for session) in the first sentence. It is distinct from sibling tools like search_summaries or update_summary, which are update/query operations.
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 any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. The agent is left to infer usage context from the tool name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summary_by_idARead-onlyIdempotent
ๆ นๆฎ session_id ็ฒพ็กฎๆฅ่ฏขๅๆกๆ่ฆ่ฎฐๅฝใ
Args: params (GetSummaryByIdInput): ๅ ๅซ๏ผ - session_id (str): ็ฎๆ ไผ่ฏ ID
Returns: Dict: {"success": bool, "data": Dict}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
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, destructiveHint, and idempotentHint. The description adds that it queries exactly one record and returns a dict with 'success' and 'data', but does not clarify behavior if the ID is not found. No contradictions.
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 conciseโone sentence for purpose, then structured Args/Returns blocks. No unnecessary words. Front-loaded with the core action.
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 query tool with one parameter and an output schema, the description covers the basics. It could clarify behavior when the ID does not exist, but overall sufficient.
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 0%, but the description explicitly documents the single parameter (session_id) with type and description, adding meaning beyond the schema's minimal constraints. However, no examples or edge-case details.
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 explicitly states 'ๆ นๆฎ session_id ็ฒพ็กฎๆฅ่ฏขๅๆกๆ่ฆ่ฎฐๅฝ' (exactly query a single summary record by session_id), which is a specific verb-resource combination that clearly distinguishes this tool from siblings like search_summaries or list_recent_sessions.
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 when a specific session_id is known and a single record is needed, but does not explicitly state when not to use or mention alternatives like search_summaries for multiple results. Some guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_sessionARead-onlyIdempotent
ไผ่ฏๅฏๅจๆถ่ฐ็จ๏ผ่ฟๅๆ่ฟ 3 ๅคฉๅ ่ฟ่กไธญ็ไปปๅกๅ่กจ๏ผๅธฎๅฉๆขๅคไธไธๆใ
Args: params (InitSessionInput): ๅ ๅซ๏ผ - project_name (Optional[str]): ้กน็ฎๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - branch_name (Optional[str]): ๅๆฏๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้
Returns: Dict: {"success": bool, "data": List[Dict], "prompt": str}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
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=true and idempotentHint=true. The description adds helpful behavioral context: it returns tasks in progress within a 3-day window. No contradictions with annotations.
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 concise with a clear purpose sentence followed by structured Args and Returns sections. It could be slightly more concise by not repeating schema descriptions, but overall it is well-organized and front-loaded.
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 presence of an output schema (mentioned in the description), the tool definition is complete: it explains purpose, parameters, and return structure. The annotations provide safety information. No gaps remain for an initialization tool.
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 description repeats the parameter names and descriptions from the input schema (exact match filtering). Since the schema already provides full descriptions for both parameters, the description adds no new meaning beyond what is in the schema, meriting a baseline score of 3.
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 initializes a session and returns a list of recent tasks in progress within the last 3 days to restore context. The verb 'returns' and resource 'tasks in progress' are specific, and the purpose is well distinguished from siblings like list_recent_sessions.
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 explicitly says 'Called when the session starts', providing clear context for when to use the tool. However, it does not discuss when not to use it or mention alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_sessionsARead-onlyIdempotent
ๅๅบๆ่ฟ็ไผ่ฏๆ่ฆ๏ผๆฏๆๆ้กน็ฎๅๅๆฏ่ฟๆปคใ
Args: params (ListRecentSessionsInput): ๅ ๅซ๏ผ - limit (int): ๆๅคง่ฟๅๆกๆฐ๏ผ้ป่ฎค 10 - project_name (Optional[str]): ้กน็ฎๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - branch_name (Optional[str]): ๅๆฏๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้
Returns: Dict: {"success": bool, "data": List[Dict]}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which are correctly reflected. The description adds context about listing recent session summaries and filtering, aligning with the safe, non-destructive behavior. While it does not disclose additional traits like rate limits or auth, it provides adequate transparency beyond annotations.
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 concise with a clear introduction and a bulleted list for parameters. Every sentence adds value, and the structure facilitates quick understanding. No wasted words.
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?
The description covers the tool's purpose, parameters, and return format (success and data). With an output schema present and annotations defining safety, the description is complete for a simple listing tool. No 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?
The description explains all parameters (limit, project_name, branch_name) with details like default values and exact matching. However, the input schema already contains the same descriptions (e.g., 'ๆๅคง่ฟๅๆกๆฐ', '็ฒพ็กฎๅน้ '), so the description adds minimal new meaning. Schema coverage is effectively high, so baseline score of 3 is appropriate.
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 name 'list_recent_sessions' and description 'ๅๅบๆ่ฟ็ไผ่ฏๆ่ฆ' clearly state the verb (list) and resource (recent session summaries). The description explicitly mentions filtering by project and branch, making the purpose specific and distinguishable from siblings that search or manage summaries.
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 for retrieving recent sessions with optional filters but does not explicitly state when to use this tool versus alternatives like 'search_summaries' or 'get_summary_by_id'. No 'when not' or conflict resolution guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maintenanceAIdempotent
ๆง่กๆฐๆฎๅบ็ปดๆค๏ผ้ๅปบ FTS5 ๅ จๆ็ดขๅผใๅ็ผฉๆฐๆฎๅบ๏ผๅนถๆไน ๅๅ้ๅญๅจใ
Returns: Dict: {"success": bool, "message": str}
| 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 indicate idempotentHint=true, and the description elaborates on the actions (rebuild index, compress, persist). This adds useful behavioral context beyond annotations, though it omits potential side effects like performance impact during operation.
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 concise with two sentences: the first lists actions, the second specifies the return type. No unnecessary words, and the main purpose is front-loaded.
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 and zero parameters, the description covers the core functionality and return format. However, it could mention when maintenance should be invoked (e.g., after frequent inserts) for optimal agent 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 tool has no parameters, and schema coverage is 100%. The description does not need to explain parameters, so it meets the baseline with no missing information.
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: executing database maintenance including rebuilding FTS5 full-text index, compressing the database, and persisting vector storage. This is specific and distinguishes it from sibling tools like search_summaries_fts.
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 explicit guidance on when to use this tool versus alternatives. It implies routine maintenance but lacks context such as prerequisite conditions or post-operation effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_summaryA
ไฟๅญไผ่ฏๆ่ฆๅฐๆฐๆฎๅบ๏ผๅๆญฅๆดๆฐๅ จๆ็ดขๅผๅๅ้็ดขๅผใ
Args: params (SaveSummaryInput): ๅ ๅซ๏ผ - session_id (str): ๅฏไธไผ่ฏ ID๏ผไธๅฏ้ๅค - task_title (str): ไปปๅกๆ ้ข - summary_content (str): ๆ่ฆๆญฃๆๅ ๅฎน - status (TaskStatus): ไปปๅก็ถๆ๏ผ้ป่ฎค completed - next_steps (Optional[str]): ไธไธๆญฅ่ฎกๅ - tags (Optional[str]): ๆ ็ญพ๏ผ้ๅทๅ้ - module (Optional[str]): ๆๅฑๆจกๅ - file_paths (Optional[str]): ๆถๅๆไปถ่ทฏๅพ๏ผ้ๅทๅ้ - project_name (Optional[str]): ้กน็ฎๅ็งฐ - branch_name (Optional[str]): ๅๆฏๅ็งฐ
Returns: Dict: {"success": bool, "message": str}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by noting that the tool synchronously updates full-text and vector indexes. Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false (non-destructive), which are consistent. The description does not detail error handling or uniqueness constraints, but the synchronous index update is a useful disclosure.
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 front-loaded with the core purpose in one line, followed by a structured parameter list. It is concise but could be shortened by not repeating schema content. The format is clear and easy to parse.
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 presence of an output schema (Dict with success and message), the description need not detail return values. It covers all input parameters and the indexing side effects. However, it lacks guidance on uniqueness enforcement and error scenarios. The tool is moderately complex, and the description is largely complete.
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 description lists all parameters with brief descriptions, but the input schema already provides identical descriptions for each property. Since schema description coverage is effectively high (each property is documented), the description adds no new semantic value. Per guidelines, baseline 3 is appropriate when schema covers 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?
The description clearly states 'save session summary to database, synchronously update full-text and vector indexes,' providing a specific verb and resource. The name 'save_summary' further reinforces the action. It distinguishes itself from siblings like 'update_summary' and 'get_summary_by_id' by focusing on creation and indexing.
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 explicitly state when to use this tool versus alternatives like 'update_summary' or 'search_summaries.' The purpose implies it is for creating a new summary, but no usage context or exclusions are provided. This leaves room for an agent to misuse the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_summariesBRead-onlyIdempotent
ๆ็ดขไผ่ฏๆ่ฆ๏ผๆฏๆๅ ณ้ฎ่ฏใๆ ็ญพใๆจกๅใ็ถๆใ้กน็ฎใๅๆฏ่ฟๆปค๏ผไปฅๅ FTS5 ๅ จๆๆฃ็ดขๅๅ้่ฏญไนๆฃ็ดขใ
Args: params (SearchSummariesInput): ๅ ๅซ๏ผ - query (Optional[str]): ๆ็ดขๅ ณ้ฎ่ฏ - tags (Optional[str]): ๆ ็ญพ่ฟๆปค๏ผๆจก็ณๅน้ - module (Optional[str]): ๆจกๅ่ฟๆปค๏ผๆจก็ณๅน้ - status (Optional[TaskStatus]): ็ถๆ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - project_name (Optional[str]): ้กน็ฎๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - branch_name (Optional[str]): ๅๆฏๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - use_fts (bool): ๆฏๅฆไฝฟ็จ FTS5 ๅ จๆๆฃ็ดข๏ผ้ป่ฎค False - use_vector (bool): ๆฏๅฆไฝฟ็จๅ้่ฏญไนๆฃ็ดข๏ผ้ป่ฎค False - limit (int): ๆๅคง่ฟๅๆกๆฐ๏ผ้ป่ฎค 10
Returns: Dict: {"success": bool, "data": List[Dict]}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds no new behavioral traits (e.g., rate limits, auth requirements, caching). It is consistent but adds no value beyond the annotations.
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 well-structured with bullet points and front-loaded purpose. However, it redundantly repeats parameter details already in the schema, making it longer than necessary.
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 (multiple filters, two search modes), the description covers the purpose and input parameters. It lacks explanation of when to use each search mode or what the output format contains, though an output schema exists.
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 description lists parameters with types and meanings, but the input schema already provides full descriptions for each property. Thus, the description adds minimal additional meaning beyond what the schema offers.
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 it searches session summaries with multiple filter options and two search modes (FTS5 and vector). It distinguishes itself from sibling tools like search_summaries_fts by offering both, but does not explicitly contrast them.
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 lists supported filters and modes, which implies when to use it (for summarized search with various criteria). However, it provides no explicit guidance on when not to use it or alternatives, especially given the sibling tool search_summaries_fts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_summaries_ftsARead-onlyIdempotent
ไฝฟ็จ FTS5 ๅ จๆ็ดขๅผๆ็ดขไผ่ฏๆ่ฆ๏ผ้ๅ็ฒพ็กฎๅ ณ้ฎ่ฏๅน้ ๅบๆฏใ
Args: params (SearchSummariesFtsInput): ๅ ๅซ๏ผ - query (str): ๅ จๆๆฃ็ดขๅ ณ้ฎ่ฏ๏ผๆฏๆ FTS5 ๆฅ่ฏข่ฏญๆณ - project_name (Optional[str]): ้กน็ฎๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - branch_name (Optional[str]): ๅๆฏๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - status (Optional[TaskStatus]): ็ถๆ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - limit (int): ๆๅคง่ฟๅๆกๆฐ๏ผ้ป่ฎค 10
Returns: Dict: {"success": bool, "data": List[Dict]}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds detail: it uses FTS5 index, performs exact matching filters, and returns a structure with success and data. This provides behavioral context beyond annotations.
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 well-structured: a clear purpose sentence then a parameter list and return type. It is concise without unnecessary fluff, though the parameter list is somewhat redundant with the schema.
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 has an output schema (sibling context says Has output schema: true), the description only needs minimal return info. It covers the main use case, FTS5 capability, and optional filters. Adequate for the tool's complexity.
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 description lists parameters and their meanings, but the input schema already provides descriptions for all properties (100% coverage). The description does not add significant new meaning beyond restating schema descriptions, so baseline 3 is appropriate.
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 it uses FTS5 full-text index to search session summaries and is suitable for precise keyword matching. This specifies the resource (session summaries) and action (search via FTS5), and hints at differentiation from sibling tools like search_summaries.
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 mentions 'suitable for precise keyword matching scenarios' which implies when to use, but it does not explicitly state when not to use or provide alternatives. It lacks explicit usage guidelines beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_summaryAIdempotent
ๆดๆฐๅทฒๆไผ่ฏๆ่ฆ็็ถๆๆๅ ๅฎน๏ผๅๆญฅๆดๆฐๅ จๆ็ดขๅผใ
Args: params (UpdateSummaryInput): ๅ ๅซ๏ผ - session_id (str): ่ฆๆดๆฐ็ไผ่ฏ ID - new_status (Optional[TaskStatus]): ๆฐ็ถๆ - updated_content (Optional[str]): ๆฐ็ๆ่ฆๅ ๅฎน
Returns: Dict: {"success": bool, "message": str}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly mentions that the full-text index is updated synchronously, which is a behavioral detail beyond the annotations. The annotations provide idempotentHint=true and destructiveHint=false, and the description does not contradict them.
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 concise with a clear structure: main action sentence followed by Args and Returns sections. It is front-loaded and easy to parse, though the mix of Chinese and English is slightly distracting.
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 and the presence of annotations and an output schema, the description covers the core action, parameters, and return value adequately. It mentions the synchronous full-text index update, which is important, but lacks details on error handling or prerequisites.
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 already provides descriptions for each parameter (session_id, new_status, updated_content). The tool description largely repeats these descriptions without adding new meaning or constraints, so it adds minimal 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 clearly states the action ('update') and the resource ('existing session summary') and mentions the side effect of updating the full-text index. However, it does not explicitly differentiate from the sibling tool 'save_summary', which might also modify summaries.
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 like 'save_summary' or other tools. It only describes the operation without offering usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weekly_reviewARead-onlyIdempotent
็ๆๆฌๅจ้กน็ฎๅจๆฅ๏ผๆฑๆปๅฎๆไปปๅกใๅ ณ้ฎๅณ็ญๅไธไธๆญฅๅปบ่ฎฎใ
Args: params (WeeklyReviewInput): ๅ ๅซ๏ผ - project_name (Optional[str]): ้กน็ฎๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้ - branch_name (Optional[str]): ๅๆฏๅ็งฐ่ฟๆปค๏ผ็ฒพ็กฎๅน้
Returns: Dict: {"success": bool, "data": {"report": str}}
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the report content (tasks, decisions, next steps) and the return structure (Dict with success and data). Annotations already indicate read-only and idempotent behavior, so the description provides additional context on output.
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 concise with two short paragraphs, front-loaded with the main purpose. Every sentence is relevant, though the Args and Returns sections could be slightly more integrated.
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 annotations (readOnlyHint, destructiveHint, idempotentHint) and the presence of an output schema, the description adequately covers the tool's behavior and return format. However, it lacks usage guidelines and does not mention any prerequisites or edge cases, which would improve 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 description lists the two parameters (project_name, branch_name) and their exact-match filtering, but this information is already present in the input schema with the same details. Schema description coverage is 0% for the top-level params object, but properties are well-described. The description does not add new meaning 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 clearly states the tool's purpose: generating a weekly project report summarizing completed tasks, key decisions, and next steps. It uses a specific verb ('็ๆ' generate) and resource ('ๅจๆฅ' report), differentiating it from siblings like add_decision or get_summary_by_id.
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. There is no mention of context or exclusions, leaving the agent to infer usage based on the description 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.
10 tool updates
v1.1.0- First observed
add_decision - First observed
get_summary_by_id - First observed
init_session - First observed
list_recent_sessions - First observed
maintenance - First observed
save_summary - First observed
search_summaries - First observed
search_summaries_fts - First observed
update_summary - First observed
weekly_review
TDQS
Scored across 10 tools
Most tools serve distinct purposes, but search_summaries and search_summaries_fts overlap significantly, potentially confusing an agent about which to use for searching summaries.
Names mostly follow verb_noun pattern (add_decision, save_summary) but include a few outliers like maintenance (noun) and longer phrases like get_summary_by_id, deviating from strict consistency.
With 10 tools covering session initialization, CRUD, search, maintenance, and reporting, the count is well-scoped for an AI memory server without being overwhelming.
Covers saving, retrieving, updating, and searching summaries, but lacks delete functionality and has no dedicated tools for retrieving or removing decisions, leaving notable gaps.
Maintenance
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
Persistent memory for AI agents. Search, store, and recall across sessions.
Persistent memory for AI agents โ log and recall conversation context over MCP.
Cross-LLM persistent memory: store context once, recall it from any AI model.
Persistent memory for AI agents. Search and store durable facts, preferences and decisions.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides persistent memory for AI coding agents through the Model Context Protocol, enabling them to store and retrieve project knowledge across sessions.33MIT
- AlicenseNot gradedqualityCmaintenancePersistent, searchable memory for AI agents over the Model Context Protocol, enabling memory storage, full-text search with BM25 ranking, and retrieval across sessions.16MIT
- AlicenseNot gradedqualityCmaintenanceProvides persistent, project-specific memory to AI assistants via the Model Context Protocol, enabling context-aware collaboration across sessions without cloud dependencies.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides persistent memory for AI assistants, enabling context retention across sessions through hybrid search and memory management tools.1MIT