MemOS
MemOS MCP Server provides a memory management interface for AI conversations, enabling persistent memory storage, retrieval, and management across sessions.
Add Messages (
add_message): Save conversation history and record new memories to persist dialogue context across sessions.Search Memory (
search_memory): Retrieve relevant memories before generating responses for personalized, context-aware answers based on past interactions and preferences.Delete Memory (
delete_memory): Delete specific memories by ID, with support for batch deletion in a single call.Add Feedback (
add_feedback): Submit natural language feedback to modify, update, or delete existing memories, especially when no specific memory ID is available.Get User Profile (
get_user_profile): Retrieve a user's full memory profile including facts, preferences, and tool trajectory memories, with pagination support.Create Knowledge Base (
create_knowledge_base): Create a named knowledge base container with an optional description for organizing documents.Remove Knowledge Base (
remove_knowledge_base): Disassociate and delete an existing knowledge base by its ID.Add KB Document (
add_kb_document): Upload documents to a knowledge base via local file path, public URL, or Base64 Data URI.Get KB Documents (
get_kb_documents): Retrieve document metadata in batches using file IDs.Delete KB Documents (
delete_kb_documents): Remove specified documents from a knowledge base using their file IDs.
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., "@MemOSsearch for our discussion about vacation plans last month"
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.
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: Usesnpxto run the packageargs: Arguments passed to npx to run the packageenv: Environment variablesMEMOS_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:
add_messageAdds 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 (userorassistant).content: Message content.chat_time: (Optional) Message timestamp.
search_memorySearches 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".
If the user explicitly asks to search ALL knowledge bases -> pass
["all"].
If the user specifies particular KB IDs -> pass those IDs.
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.
delete_memoryDelete 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.
add_feedbackSubmit user feedback to the MemOS system.
Note: Feedback is applied asynchronously —
add_feedbackreturns immediately (often with atask_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.
get_user_profileGet 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.
create_knowledge_baseCreate a named knowledge base container.
Parameters:
knowledgebase_name: Name of the knowledge base.knowledgebase_description: (Optional) Description of the knowledge base.
remove_knowledge_baseRemove a knowledge base association.
Parameters:
knowledgebase_id: Target knowledge base ID.
add_kb_documentUpload 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 whencontentis a local file path.
get_kb_documentsGet document metadata in batches by file IDs.
Parameters:
file_ids: List of document IDs.
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-mcpOr using pnpm:
pnpm add -g @memtensor/memos-api-mcpUsage
After installation, you can run the CLI tool using:
npx @memtensor/memos-api-mcpOr if installed globally:
memos-api-mcpDevelopment
Clone the repository:
git clone <repository-url>
cd memos-api-mcpInstall dependencies:
pnpm installStart development server:
pnpm devBuild the project:
pnpm buildAvailable Scripts
pnpm build- Build the projectpnpm dev- Start development server using tsxpnpm start- Run the built versionpnpm 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 configurationDependencies
@modelcontextprotocol/sdk: ^1.0.0express: ^4.19.2zod: ^3.23.8ts-md5: ^2.0.0
Version
Current version: 1.1.0
Available Tools
4 toolsadd_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)
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_first_message | Yes | The first message sent by the user in the entire conversation thread. Used to generate the conversation_id. | |
| feedback_content | Yes | The clear, concise user intent, correction, or feedback. Do NOT include verbose explanations or future instructions. | |
| agent_id | No | Agent ID associated with the feedback | |
| app_id | No | App ID associated with the feedback | |
| feedback_time | No | Feedback time string. Default is current UTC time | |
| allow_public | No | Whether to allow public access. Default is false | |
| allow_knowledgebase_ids | No | List of knowledge base IDs allowed to be written to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_first_message | Yes | The first message sent by the user in the entire conversation thread. Used to generate the conversation_id. | |
| messages | Yes | Array of messages containing role and content information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_ids | Yes | List of memory IDs to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find relevant content in conversation history | |
| conversation_first_message | Yes | First user message in the thread (used to generate conversation_id). | |
| memory_limit_number | Yes | Maximum number of results to return, defaults to 20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.0- First observed
add_feedback - First observed
add_message - First observed
delete_memory - First observed
search_memory
TDQS
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.
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.
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.
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
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
Universal memory runtime for AI agents — episodic, semantic, and procedural memory.
Memory system for AI agents with semantic search. Store and recall memories with ease.
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI applications to use advanced memory management capabilities through the memU AI framework. Supports storing conversation memories, semantic retrieval, multi-user management, and memory statistics via standardized MCP protocol.3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to store and retrieve memories with user-specific context using Mem0, allowing them to maintain conversation history and make informed decisions based on past interactions.1171ISC
- FlicenseNot gradedqualityCmaintenanceLong-term Memory for AI. On Device. Secure. Coding tools, AI Agents. Instant Recall. Precise.-
- AlicenseNot gradedqualityCmaintenanceProvides persistent long-term memory for AI agents with semantic search and activation-based decay. Enables AI systems to remember across sessions through layered memory architecture and automatic context-aware retrieval.31MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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