Skip to main content
Glama
zhanpu89

ai-memory-mcp

by zhanpu89

๐Ÿง  AI Memory MCP

Persistent session memory for AI assistants โ€” store, search and retrieve conversation summaries via the Model Context Protocol.

Python MCP License: MIT Tests


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 start

Then 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 + all-MiniLM-L6-v2 (optional)

Multi-project

Filter by project_name + branch_name

Task lifecycle

pending โ†’ in_progress โ†’ completed / blocked / abandoned

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

save_summary

Persist a new session summary

update_summary

Update status / content

add_decision

Record a key technical decision

search_summaries

Keyword / FTS5 / vector search

search_summaries_fts

Dedicated FTS5 full-text search

get_summary_by_id

Exact lookup by session ID

list_recent_sessions

List latest sessions

init_session

Restore context at session start

weekly_review

Generate Markdown weekly report

maintenance

Rebuild index, VACUUM, persist vectors


Configuration

All settings are optional โ€” sensible defaults work out of the box.

Env var

Default

Description

AI_MEMORY_DB_PATH

~/.ai-memory/ai_memory.db

SQLite database path

AI_MEMORY_MODEL_PATH

~/.ai-memory/models

Embedding model cache

AI_MEMORY_HOST

127.0.0.1

HTTP server bind address

AI_MEMORY_PORT

8000

HTTP server port

Create ~/.ai-memory/.env to persist settings:

AI_MEMORY_DB_PATH=/custom/path/ai_memory.db
AI_MEMORY_PORT=9000

Docker

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 -f

The 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 --http

Project 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.toml

Testing

24 passed in 7s
pytest tests/unit/test_mcp_server.py -v

All 24 unit tests cover: save/update/search/FTS/vector/decisions/maintenance/init/review/schema.


Requirements

  • Python 3.10+

  • mcp >= 1.6.0

  • python-dotenv >= 1.0.0

Optional (vector search):

  • chromadb >= 0.6.0

  • sentence-transformers >= 3.0.0


License

MIT ยฉ AI Memory Team

Available Tools

10 tools
add_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}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_idA
Read-onlyIdempotent

ๆ นๆฎ session_id ็ฒพ็กฎๆŸฅ่ฏขๅ•ๆกๆ‘˜่ฆ่ฎฐๅฝ•ใ€‚

Args: params (GetSummaryByIdInput): ๅŒ…ๅซ๏ผš - session_id (str): ็›ฎๆ ‡ไผš่ฏ ID

Returns: Dict: {"success": bool, "data": Dict}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_sessionA
Read-onlyIdempotent

ไผš่ฏๅฏๅŠจๆ—ถ่ฐƒ็”จ๏ผŒ่ฟ”ๅ›žๆœ€่ฟ‘ 3 ๅคฉๅ†…่ฟ›่กŒไธญ็š„ไปปๅŠกๅˆ—่กจ๏ผŒๅธฎๅŠฉๆขๅคไธŠไธ‹ๆ–‡ใ€‚

Args: params (InitSessionInput): ๅŒ…ๅซ๏ผš - project_name (Optional[str]): ้กน็›ฎๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้… - branch_name (Optional[str]): ๅˆ†ๆ”ฏๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้…

Returns: Dict: {"success": bool, "data": List[Dict], "prompt": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_sessionsA
Read-onlyIdempotent

ๅˆ—ๅ‡บๆœ€่ฟ‘็š„ไผš่ฏๆ‘˜่ฆ๏ผŒๆ”ฏๆŒๆŒ‰้กน็›ฎๅ’Œๅˆ†ๆ”ฏ่ฟ‡ๆปคใ€‚

Args: params (ListRecentSessionsInput): ๅŒ…ๅซ๏ผš - limit (int): ๆœ€ๅคง่ฟ”ๅ›žๆกๆ•ฐ๏ผŒ้ป˜่ฎค 10 - project_name (Optional[str]): ้กน็›ฎๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้… - branch_name (Optional[str]): ๅˆ†ๆ”ฏๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้…

Returns: Dict: {"success": bool, "data": List[Dict]}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

maintenanceA
Idempotent

ๆ‰ง่กŒๆ•ฐๆฎๅบ“็ปดๆŠค๏ผš้‡ๅปบ FTS5 ๅ…จๆ–‡็ดขๅผ•ใ€ๅŽ‹็ผฉๆ•ฐๆฎๅบ“๏ผŒๅนถๆŒไน…ๅŒ–ๅ‘้‡ๅญ˜ๅ‚จใ€‚

Returns: Dict: {"success": bool, "message": str}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's purpose: 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.

Usage Guidelines3/5

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}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_summariesB
Read-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]}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_ftsA
Read-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]}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

Given the tool has an output schema (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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_summaryA
Idempotent

ๆ›ดๆ–ฐๅทฒๆœ‰ไผš่ฏๆ‘˜่ฆ็š„็Šถๆ€ๆˆ–ๅ†…ๅฎน๏ผŒๅŒๆญฅๆ›ดๆ–ฐๅ…จๆ–‡็ดขๅผ•ใ€‚

Args: params (UpdateSummaryInput): ๅŒ…ๅซ๏ผš - session_id (str): ่ฆๆ›ดๆ–ฐ็š„ไผš่ฏ ID - new_status (Optional[TaskStatus]): ๆ–ฐ็Šถๆ€ - updated_content (Optional[str]): ๆ–ฐ็š„ๆ‘˜่ฆๅ†…ๅฎน

Returns: Dict: {"success": bool, "message": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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_reviewA
Read-onlyIdempotent

็”Ÿๆˆๆœฌๅ‘จ้กน็›ฎๅ‘จๆŠฅ๏ผŒๆฑ‡ๆ€ปๅฎŒๆˆไปปๅŠกใ€ๅ…ณ้”ฎๅ†ณ็ญ–ๅ’Œไธ‹ไธ€ๆญฅๅปบ่ฎฎใ€‚

Args: params (WeeklyReviewInput): ๅŒ…ๅซ๏ผš - project_name (Optional[str]): ้กน็›ฎๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้… - branch_name (Optional[str]): ๅˆ†ๆ”ฏๅ็งฐ่ฟ‡ๆปค๏ผŒ็ฒพ็กฎๅŒน้…

Returns: Dict: {"success": bool, "data": {"report": str}}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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

The description clearly states the tool's purpose: 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.

Usage Guidelines2/5

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.

  1. 10 tool updatesv1.1.0
    • First observedadd_decision
    • First observedget_summary_by_id
    • First observedinit_session
    • First observedlist_recent_sessions
    • First observedmaintenance
    • First observedsave_summary
    • First observedsearch_summaries
    • First observedsearch_summaries_fts
    • First observedupdate_summary
    • First observedweekly_review

TDQS

A3.8/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

With 10 tools covering session initialization, CRUD, search, maintenance, and reporting, the count is well-scoped for an AI memory server without being overwhelming.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent memory for AI coding agents through the Model Context Protocol, enabling them to store and retrieve project knowledge across sessions.
    33
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent, searchable memory for AI agents over the Model Context Protocol, enabling memory storage, full-text search with BM25 ranking, and retrieval across sessions.
    16
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent memory for AI assistants, enabling context retention across sessions through hybrid search and memory management tools.
    1
    MIT