Skip to main content
Glama
MemTensor

MemOS

by MemTensor

MCP Server for MemOS API

A Model Context Protocol (MCP) implementation for the MemOS API service. This package provides a command-line interface to interact with MemOS API using MCP standards.

MCP Configuration

To use this package In MCP Client, use the following configuration: (You may need to install Node.js first)

{
  "mcpServers": {
    "memos-api-mcp": {
      "command": "npx",
      "args": ["-y", "@memtensor/memos-api-mcp"],
      "env": {
        "MEMOS_API_KEY": "your-api-key",
        "MEMOS_USER_ID": "your-user-id",
        "MEMOS_CHANNEL": "the-site-where-you-are-seeing-this-document"
      }
    }
  }
}

Configuration Explanation

  • command: Uses npx to run the package

  • args: Arguments passed to npx to run the package

  • env: Environment variables

    • MEMOS_API_KEY: Your Memos API key for authentication (Get your API Key in Dashboard[https://memos-dashboard.openmem.net/cn/apikeys/])

    • MEMOS_USER_ID: Stable per-human identifier. MUST be deterministic and non-PII, and MUST remain the same for the same person across devices/sessions. NEVER reuse across different people. DO NOT use random values, device IDs, or model/chat session IDs. Recommended: SHA-256(lowercase(trim(email))) or your SSO subject/employee ID.

    • MEMOS_CHANNEL: The site where you are seeing this document. Candidate values: MODELSCOPE, MCPSO, MCPMARKETCN, MCPMARKETCOM, GLAMA, PULSEMCP, MCPSERVERS,LOBEHUB,MEMOS(meaning the MemOS official website), GITHUB(meaning this README file)

Available MCP Tools

This package provides the following MCP tools:

  1. add_message

    • Adds a new message to a conversation

    • Parameters:

      • conversation_id: Unique identifier of the conversation associated with the feedback.

      • messages: Array of messages containing role and content information.

        • role: Role of the message sender (user or assistant).

        • content: Message content.

        • chat_time: (Optional) Message timestamp.

  2. search_memory

    • Searches for memories in a conversation.

    • Parameters:

      • query: Text content to search within the memories. The token limit for a single query is 4k.

      • filter: (Optional) Filter conditions, used to precisely limit the memory scope before retrieval.

      • knowledgebase_ids: (Optional) Array specifying the knowledge bases to search.

        • DO NOT USE THIS unless the user explicitly mentions "knowledge base" or "KB".

          1. If the user explicitly asks to search ALL knowledge bases -> pass ["all"].

          1. If the user specifies particular KB IDs -> pass those IDs.

          1. If the user DOES NOT mention knowledge bases -> OMIT this parameter (do not send it).

      • include_preference: (Optional) Enable preference memory recall. Default: true.

      • preference_limit_number: (Optional) Max preference memories to return. Default: 9, max 25.

      • include_tool_memory: (Optional) Enable tool memory recall. Default: false.

      • tool_memory_limit_number: (Optional) Max tool memories to return. Default: 6, max 25.

      • include_skill: (Optional) Enable Skill recall. Default: false.

      • skill_limit_number: (Optional) Max Skills to return. Default: 6, max 25.

      • relativity: (Optional) Relevance threshold (0-1) for recalled memories. A value of 0 disables relevance filtering.

      • conversation_first_message: First user message in the thread (used to generate conversation_id).

      • memory_limit_number: Maximum number of memories that can be recalled. Default: 9, max 25.

  3. delete_memory

    • Delete specific memories by their IDs.

    • Parameters:

      • user_ids: List of user IDs whose memories will be deleted.

      • memory_ids: List of memory IDs to delete.

  4. add_feedback

    • Submit user feedback to the MemOS system.

    • Note: Feedback is applied asynchronously — add_feedback returns immediately (often with a task_id), and the effect may take a short time to appear.

    • Parameters:

      • user_id: The user identifier associated with the feedback.

      • conversation_id: Unique identifier of the conversation associated with the feedback.

      • feedback_content: The specific content of the feedback.

      • agent_id: (Optional) Agent ID associated with the feedback.

      • app_id: (Optional) App ID associated with the feedback.

      • feedback_time: (Optional) Feedback time string (default: current UTC time).

      • allow_public: (Optional) Whether to allow public access (default: false).

      • allow_knowledgebase_ids: (Optional) List of knowledge base IDs allowed to be written to.

  5. get_user_profile

    • Get the user's full memory profile (facts, preferences, and tool trajectories).

    • Parameters:

      • include_preference: (Optional) Whether to include preference memories.

      • include_tool_memory: (Optional) Whether to include tool trajectory memories.

      • current: (Optional) Page number.

      • size: (Optional) Number of entries per page.

  6. create_knowledge_base

    • Create a named knowledge base container.

    • Parameters:

      • knowledgebase_name: Name of the knowledge base.

      • knowledgebase_description: (Optional) Description of the knowledge base.

  7. remove_knowledge_base

    • Remove a knowledge base association.

    • Parameters:

      • knowledgebase_id: Target knowledge base ID.

  8. add_kb_document

    • Upload document(s) to a specified knowledge base.

    • Parameters:

      • knowledgebase_id: Target knowledge base ID.

      • file: Document list.

        • content: Local absolute path, public URL, or Base64 Data URI.

        • file_name: (Optional) File name.

        • mime_type: (Optional) MIME type. Required when content is a local file path.

  9. get_kb_documents

    • Get document metadata in batches by file IDs.

    • Parameters:

      • file_ids: List of document IDs.

  10. delete_kb_documents

  • Delete specified documents from the knowledge base by file IDs.

  • Parameters:

    • file_ids: List of document IDs.

All tools use the same configuration and require the MEMOS_API_KEY environment variable.

Related MCP server: Mem0 Memory MCP Server

Features

  • MCP-compliant API interface

  • Command-line tool for easy interaction

  • Built with TypeScript for type safety

  • Express.js server implementation

  • Zod schema validation

Prerequisites

  • Node.js >= 18

  • npm or pnpm (recommended)

Installation

You can install the package globally using npm:

npm install -g @memtensor/memos-api-mcp

Or using pnpm:

pnpm add -g @memtensor/memos-api-mcp

Usage

After installation, you can run the CLI tool using:

npx @memtensor/memos-api-mcp

Or if installed globally:

memos-api-mcp

Development

  1. Clone the repository:

git clone <repository-url>
cd memos-api-mcp
  1. Install dependencies:

pnpm install
  1. Start development server:

pnpm dev
  1. Build the project:

pnpm build

Available Scripts

  • pnpm build - Build the project

  • pnpm dev - Start development server using tsx

  • pnpm start - Run the built version

  • pnpm inspect - Inspect the MCP implementation using @modelcontextprotocol/inspector

Project Structure

memos-mcp/
├── src/           # Source code
├── build/         # Compiled JavaScript files
├── package.json   # Project configuration
└── tsconfig.json  # TypeScript configuration

Dependencies

  • @modelcontextprotocol/sdk: ^1.0.0

  • express: ^4.19.2

  • zod: ^3.23.8

  • ts-md5: ^2.0.0

Version

Current version: 1.1.0

Available Tools

4 tools
add_feedbackA

Trigger: User wants to MODIFY, UPDATE, or DELETE (without providing IDs) specific memories. Purpose: Modify/Delete existing memories based on natural language feedback. STRICT RULES: 1. USAGE: Use this tool for modifying/updating memories OR deleting memories when NO ID is provided. 2. CONTENT: feedback_content MUST be ONLY the user's intent (e.g., "User wants to modify memory X", "Delete memory about Y"). - FORBIDDEN: Adding non-user-intent info or verbose narratives. - FORBIDDEN: Looking up old memory values to construct a "Change X to Y" request. Just say "User wants Y". 3. RETRY POLICY: FIRE AND FORGET. Call this tool ONCE. - FORBIDDEN: Checking if it worked (searching again). - FORBIDDEN: Retrying if it "failed". - FORBIDDEN: Sleeping and searching. - CRITICAL: If modification seemingly fails, DO NOT attempt to "fix" it by calling delete_memory and add_message. Just stop. 4. DELETION: If user wants to delete but gives no ID, use this tool. Parameters: - conversation_first_message: Used to generate the conversation_id. - feedback_content: The natural language update or feedback (no IDs or technical metadata). - agent_id: Agent ID (optional) - app_id: App ID (optional) - feedback_time: Feedback time string (optional, default current UTC) - allow_public: Whether to allow public access (optional, default false) - allow_knowledgebase_ids: List of allowed knowledge base IDs (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_first_messageYesThe first message sent by the user in the entire conversation thread. Used to generate the conversation_id.
feedback_contentYesThe clear, concise user intent, correction, or feedback. Do NOT include verbose explanations or future instructions.
agent_idNoAgent ID associated with the feedback
app_idNoApp ID associated with the feedback
feedback_timeNoFeedback time string. Default is current UTC time
allow_publicNoWhether to allow public access. Default is false
allow_knowledgebase_idsNoList of knowledge base IDs allowed to be written to

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels. It discloses critical behavioral traits: the tool is a 'FIRE AND FORGET' operation with a strict retry policy (no checking, retrying, or sleeping), it handles deletion without IDs, and it forbids certain agent behaviors (e.g., constructing 'Change X to Y' requests). These details go beyond basic function and guide agent interaction effectively.

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 with clear sections (Trigger, Purpose, STRICT RULES, Parameters) and uses bullet points for readability. While comprehensive, it is slightly verbose due to repetitive emphasis (e.g., multiple 'FORBIDDEN' clauses). Every sentence serves a purpose, but some redundancy could be trimmed for optimal conciseness.

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 tool's complexity (handles modification and deletion without IDs), lack of annotations, and no output schema, the description is highly complete. It covers purpose, usage rules, behavioral constraints, parameter guidelines, and sibling differentiation. The detailed retry policy and content rules address potential agent misunderstandings, making it sufficient for safe and effective use.

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 100%, so the baseline is 3. The description adds minimal value: it reiterates that feedback_content should contain 'only the user's intent' and forbids verbose narratives, which slightly clarifies the schema's 'clear, concise' description. However, it doesn't provide significant additional meaning for other parameters beyond what the schema already documents.

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 the tool's purpose: 'Modify/Delete existing memories based on natural language feedback.' It distinguishes from siblings by specifying usage when 'NO ID is provided' (unlike delete_memory which likely requires IDs) and for modification/update (unlike add_message which creates new memories). The 'Trigger' section reinforces this with specific scenarios.

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

Usage Guidelines5/5

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

The description provides explicit, structured guidelines: STRICT RULE 1 defines when to use (modify/update/delete without IDs) and when not to use (implied: use delete_memory with IDs, add_message for additions). It names alternatives (delete_memory, add_message) in the retry policy and sibling context. The rules clearly demarcate this tool's scope from other tools.

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

add_messageA

Trigger: 1. AUTO-INVOKED: After every answer to save dialogue history. 2. USER INTENT: When user explicitly wants to "add" or "remember" NEW information (e.g., "Add a memory...", "Remember that...", "New memory..."). Purpose: Save dialogue history (REQUIRED) and record NEW memories. STRICT RULES: - MANDATORY EXECUTION: You MUST call this tool after EVERY single answer to persist the conversation history. This is NOT optional. - ALWAYS use this tool for NEW memories. - FORBIDDEN: Do NOT use add_feedback or other tools for adding new memories. - FORBIDDEN: Do NOT use this tool to modify/update existing memories. - CRITICAL: NEVER use this tool as part of a modification workaround (e.g. "delete old + add new"). If a modification fails, just report the failure. Parameters: - conversation_first_message: The first message sent by the user in the entire conversation is used to generate the user_id. - messages: Array containing BOTH: 1. { role: "user", content: "user's question or new info" } 2. { role: "assistant", content: "your complete response" } Notes: - Client/orchestrator MUST call this after every answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_first_messageYesThe first message sent by the user in the entire conversation thread. Used to generate the conversation_id.
messagesYesArray of messages containing role and content information

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes critical behavioral traits: the mandatory auto-invocation pattern ('AUTO-INVOKED: After every answer'), strict rules about what it can/cannot do (e.g., no modifications), and operational constraints ('CRITICAL: NEVER use this tool as part of a modification workaround'). It doesn't mention performance characteristics like rate limits or error handling, but provides substantial behavioral context beyond basic functionality.

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 appropriately sized but not optimally structured. It uses clear section headers (Trigger, Purpose, STRICT RULES, Parameters, Notes), which helps organization. However, it contains some redundancy (e.g., repeating the mandatory execution in multiple places) and could be more streamlined. Every sentence earns its place, but the formatting could be more efficient.

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 tool's complexity (mandatory invocation pattern, strict rules about memory handling) and the absence of both annotations and output schema, the description provides complete contextual information. It covers purpose, triggers, strict operational rules, parameter expectations, and notes about client/orchestrator requirements. This is sufficient for an agent to understand when and how to use this tool correctly in the broader system context.

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 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema: it clarifies that conversation_first_message is 'used to generate the user_id' (though schema says 'conversation_id'), and specifies that messages array must contain both user and assistant roles. However, these details are largely redundant with the schema's descriptions and required fields.

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 the tool's purpose: 'Save dialogue history (REQUIRED) and record NEW memories.' It distinguishes from siblings by specifying it's for new memories only, not modifications (unlike add_feedback) or deletions (unlike delete_memory). The verb 'save' and resource 'dialogue history/memories' are specific.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use rules: 'MANDATORY EXECUTION: You MUST call this tool after EVERY single answer' and 'ALWAYS use this tool for NEW memories.' It also specifies when-not-to-use: 'FORBIDDEN: Do NOT use `add_feedback` or other tools for adding new memories' and 'FORBIDDEN: Do NOT use this tool to modify/update existing memories.' It names the alternative tool (add_feedback) and provides clear exclusions.

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

delete_memoryA

Trigger: User provides specific ID(s) to delete. Purpose: Delete memories by ID. STRICT RULES: 1. BATCHING: If multiple IDs are provided, call this tool ONCE with all IDs. 2. FORBIDDEN: Do NOT call multiple times. Do NOT enter search-delete loops. 3. FORBIDDEN: Do not use this tool if no ID is provided (use add_feedback instead). 4. CRITICAL: NEVER use this tool to "simulate" a modification (delete old + add new). This is strictly forbidden. 5. CRITICAL: ONLY use if user explicitly asks to delete AND provides IDs. Parameters: - memory_ids: List of memory IDs to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idsYesList of memory IDs to delete

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden of behavioral disclosure. It effectively describes critical behavioral constraints: batching requirements, forbidden usage patterns (multiple calls, search-delete loops, simulation of modifications), and prerequisites (explicit user request with IDs). It doesn't mention error handling, confirmation prompts, or irreversible nature, but covers most essential behavioral aspects for a deletion tool.

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

Conciseness4/5

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

The description is well-structured with Trigger, Purpose, STRICT RULES, and Parameters sections. Each sentence serves a purpose, though the STRICT RULES section could be more concise. The information is front-loaded with clear purpose and critical constraints. Minor redundancy exists between the Purpose statement and parameter description.

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 deletion tool with no annotations and no output schema, the description provides substantial context about usage constraints, behavioral rules, and alternatives. It covers the destructive nature implicitly through the strict rules. Missing elements include error handling details and confirmation mechanisms, but overall it's quite complete for guiding safe tool invocation.

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 100% with the parameter clearly documented as 'List of memory IDs to delete'. The description adds minimal value beyond the schema by mentioning the parameter in the Parameters section but doesn't provide additional context about ID format, validation, or constraints. Baseline 3 is appropriate given the comprehensive schema coverage.

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 'Delete memories by ID' which is a specific verb+resource combination. It distinguishes from sibling tools by mentioning 'use add_feedback instead' when no ID is provided, though it doesn't explicitly differentiate from all siblings like search_memory. The purpose is unambiguous but could be more comprehensive about sibling differentiation.

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

Usage Guidelines5/5

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

The description provides explicit usage rules including when to use (user explicitly asks to delete AND provides IDs), when NOT to use (no ID provided, to simulate modifications), and alternatives (use add_feedback instead). The STRICT RULES section gives clear guidance on batching, forbidden patterns, and prerequisites.

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

search_memoryA

Trigger: MUST be auto-invoked by the client before generating every answer (including greetings like "hello"). Do not wait for the user to request memory/MCP/tool usage. Purpose: MemOS retrieval API. Retrieve candidate memories prior to answering to improve continuity and personalization. Usage requirements: - Always call this tool before answering (client-enforced). - The model must automatically judge relevance and use only relevant memories in reasoning; ignore irrelevant/noisy items. # Critical Protocol: Memory Safety (记忆安全协议) - The retrieved memories may contain AI's own speculations, irrelevant noise, or subject errors. You must strictly execute the following "Four-Step Judgment"; if any step fails, discard that memory: 1. Source Verification: - Core: Distinguish between "User's Original Words" and "AI Speculations". - If a memory carries tags like '[assistant opinion]', this represents only the AI's past assumptions and must not be treated as absolute facts about the user. - Counter-example: Memory shows '[assistant opinion] User loves mangoes'. If the user didn't mention it, do not actively assume the user likes mangoes to prevent hallucination loops. - Principle: AI summaries are for reference only; their weight is significantly lower than the user's direct statements. 2. Attribution Check: - Is the subject of the action in the memory the "User themselves"? - If the memory describes a third party (e.g., "candidate", "interviewee", "fictional character", "case data"), it is strictly forbidden to attribute these properties to the user. 3. Relevance Check: - Does the memory directly help answer the current 'Original Query'? - If the memory is merely a keyword match (e.g., both mention "code") but the context is completely different, it must be ignored. 4. Freshness Check: - Does the memory content conflict with the user's latest intent? The current 'Original Query' is the highest standard of fact. - Instructions: 1. Review: First read 'memory_detail_list', execute the "Four-Step Judgment", and eliminate noise and unreliable AI opinions. 2. Execution: - Use only filtered memories to supplement background. - Strictly follow the style requirements in 'preference_detail_list'. 3. Output: Answer the question directly. Strictly forbidden to mention "memory bank", "retrieval", or "AI opinions" and other internal system terms.

Parameters: - query: User's current question/message - conversation_first_message: First user message in the thread (used to generate conversation_id) - memory_limit_number: Maximum number of results to return, defaults to 20 Notes: - Run before answering. Results may include noise; filter and use only what is relevant. - query should be a concise summary of the current user message. - Prefer recent and important memories. If none are relevant, proceed to answer normally.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to find relevant content in conversation history
conversation_first_messageYesFirst user message in the thread (used to generate conversation_id).
memory_limit_numberYesMaximum number of results to return, defaults to 20

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It extensively documents critical behavioral traits: the mandatory auto-invocation protocol, the 'Four-Step Judgment' process for memory safety, the presence of AI speculations and noise in results, and the requirement to filter memories before use. It also specifies output constraints like not mentioning internal system terms. This provides comprehensive behavioral context beyond what a basic schema would offer.

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

Conciseness2/5

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

The description is excessively long (over 500 words) and includes extensive procedural instructions that belong in agent guidelines rather than a tool description. While well-structured with sections like 'Purpose', 'Usage requirements', 'Critical Protocol', and 'Parameters', it contains significant redundancy and over-specification that doesn't earn its place in a tool description. The core purpose and usage could be communicated in 20% of this length.

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 complexity of memory retrieval with safety protocols and no output schema, the description provides substantial context about what the tool does, how to use it, and how to handle results. It covers the retrieval purpose, mandatory invocation pattern, memory safety protocols, parameter usage, and result handling. The main gap is the lack of output schema documentation, but the description compensates by explaining how to process the returned memories.

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 100%, so the schema already documents all three parameters. The description adds some additional context about 'query' ('should be a concise summary of the current user message') and 'memory_limit_number' ('defaults to 20'), but these details are largely redundant with the schema. The description doesn't add significant semantic value beyond what the structured schema provides.

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 the purpose as 'MemOS retrieval API. Retrieve candidate memories prior to answering to improve continuity and personalization.' This is a specific verb ('retrieve') + resource ('memories') combination that clearly distinguishes it from sibling tools like add_feedback, add_message, and delete_memory which perform different operations.

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

Usage Guidelines5/5

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

The description provides explicit usage requirements: 'MUST be auto-invoked by the client before generating every answer (including greetings like "hello"). Do not wait for the user to request memory/MCP/tool usage.' It also specifies when to proceed without memories: 'If none are relevant, proceed to answer normally.' This gives clear guidance on when and how to use this tool versus alternatives.

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

Tool Schema Changelog

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

  1. 4 tool updatesv1.0.0
    • First observedadd_feedback
    • First observedadd_message
    • First observeddelete_memory
    • First observedsearch_memory

TDQS

A4.3/5.0
Disambiguation4/5

The tools have distinct primary purposes: add_message for new memories, add_feedback for modifications/deletions without IDs, delete_memory for deletions with IDs, and search_memory for retrieval. However, add_feedback and delete_memory both handle deletion (one without IDs, one with), which could cause minor confusion about which to use when the user intent is deletion but IDs are ambiguous. The descriptions help clarify this boundary.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case: add_feedback, add_message, delete_memory, search_memory. The verbs (add, delete, search) are clear and aligned with their actions, and the nouns (feedback, message, memory) relate coherently to the domain of memory management.

Tool Count5/5

With 4 tools, this server is well-scoped for its purpose of memory operations. It covers the essential CRUD-like functions: create (add_message), read (search_memory), update/delete without IDs (add_feedback), and delete with IDs (delete_memory). The count is lean and each tool has a clear, non-redundant role in the workflow.

Completeness4/5

The tool set provides strong coverage for memory lifecycle operations: adding new memories, searching, and deletion (with and without IDs). The update functionality is handled indirectly via add_feedback for modifications, which is reasonable. A minor gap is the lack of a direct 'update_memory' tool for explicit modifications with IDs, but add_feedback covers this in a natural language way, and agents can work around this limitation.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MemTensor/memos-api-mcp'

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