MCP Memory Tracker
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., "@MCP Memory Trackersave that I prefer coffee over tea in the mornings"
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 Memory Tracker
A Model Context Protocol (MCP) server that provides persistent memory capabilities using OpenAI's vector stores. This allows AI assistants to save and search through memories across conversations.
Features
Save Memories: Store text-based memories in OpenAI vector stores
Search Memories: Semantic search through saved memories using natural language queries
Persistent Storage: Memories are stored in OpenAI's cloud infrastructure
MCP Compatible: Works with any MCP-compatible client (like Claude Desktop)
Related MCP server: Mem0 MCP Server
Prerequisites
Python 3.8+
OpenAI API key
UV package manager (recommended) or pip
Installation
Clone the repository:
git clone <repository-url>
cd mcp-memory-trackerInstall dependencies:
# Using UV (recommended)
uv sync
# Or using pip
pip install -r requirements.txtSet up environment variables: Create a
.envfile in the project root:
OPENAI_API_KEY=your_openai_api_key_hereUsage
Running the MCP Server
# Using UV
uv run server.py
# Or using Python directly
python server.pyAvailable Tools
save_memory(memory: str)
Saves a text memory to the vector store.
Parameters:
memory(string): The text content to save
Returns:
{
"status": "saved",
"vector store id": "vs_xxxxx"
}Example:
save_memory("I met John at the coffee shop on Main Street. He's a software engineer who loves hiking.")search_memories(query: str)
Searches through saved memories using semantic search.
Parameters:
query(string): Natural language search query
Returns:
{
"status": "success",
"results": ["matching memory content..."]
}Example:
search_memories("Who did I meet at the coffee shop?")Integration with MCP Clients
Claude Desktop
Add this server to your Claude Desktop configuration:
{
"mcpServers": {
"memory-tracker": {
"command": "uv",
"args": ["run", "/path/to/mcp-memory-tracker/server.py"],
"env": {
"OPENAI_API_KEY": "your_api_key_here"
}
}
}
}Other MCP Clients
This server implements the standard MCP protocol and should work with any compatible client. Refer to your client's documentation for configuration details.
How It Works
Vector Store Management: The server automatically creates and manages an OpenAI vector store named "memories"
Memory Storage: When you save a memory, it's uploaded as a text file to the vector store
Semantic Search: The search functionality uses OpenAI's vector search capabilities to find relevant memories based on meaning, not just keywords
Configuration
The server uses the following constants that can be modified in server.py:
VECTOR_STORE_NAME: Name of the OpenAI vector store (default: "memories")
Dependencies
fastmcp: MCP server frameworkopenai: OpenAI Python SDKpython-dotenv: Environment variable management
Troubleshooting
Common Issues
"OPENAI_API_KEY not found": Make sure your
.envfile is properly configured"'SyncPage' object has no attribute...": This indicates an API response structure issue - check your OpenAI SDK version
File upload errors: Ensure your OpenAI API key has vector store permissions
Debug Mode
Add print statements to see detailed responses:
print(f"Vector store ID: {vector_store.id}")
print(f"Search results: {results}")Contributing
Fork the repository
Create a feature branch
Make your changes
Submit a pull request
License
[Add your license here]
Support
For issues and questions:
Check the troubleshooting section
Review OpenAI API documentation
Check MCP protocol documentation
Available Tools
2 toolssave_memoryC
Save a memory to the vector store.
| Name | Required | Description | Default |
|---|---|---|---|
| memory | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to 'Save' but doesn't mention whether this is a write operation, what permissions are needed, if it's idempotent, or what happens on success/failure. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.
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 extremely concise with a single sentence that directly states the tool's purpose. There's no wasted language or unnecessary elaboration, making it efficiently front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It doesn't address behavioral aspects like side effects, error conditions, or return values, leaving the agent with insufficient context for reliable 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 0%, so the description must compensate for the undocumented parameter. It mentions 'memory' but doesn't explain what constitutes a valid memory, its format, length constraints, or how it's stored. The description adds minimal semantic value beyond the parameter name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save') and target resource ('a memory to the vector store'), providing a specific verb+resource combination. However, it doesn't differentiate from its sibling 'search_memories' beyond the obvious action difference, so it doesn't fully distinguish from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its sibling 'search_memories' or any other alternatives. It lacks context about prerequisites, appropriate scenarios, or exclusions, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memoriesC
Search the vector store for memories that match the query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions searching a 'vector store' which hints at semantic matching, but doesn't disclose details like return format, pagination, error handling, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on behavior, parameters, and expected results, making it inadequate for a tool that performs a non-trivial search operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds little. It mentions 'query' but doesn't explain what constitutes a valid query (e.g., keywords, natural language), its format, or how matching works, leaving parameter meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search') and resource ('vector store for memories'), making the purpose understandable. It doesn't explicitly distinguish from the sibling 'save_memory', but the verb 'Search' versus 'save' provides implicit 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 no guidance on when to use this tool versus alternatives or in what context. It mentions 'match the query' but doesn't specify scenarios, prerequisites, or exclusions, leaving usage ambiguous.
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.
2 tool updates
v1.0.0- Changed
save_memory1 field changed- added
Input schema / titleAdded value: +"save_memoryArguments"
- Changed
search_memories1 field changed- added
Input schema / titleAdded value: +"search_memoriesArguments"
2 tool updates
- First observed
save_memory - First observed
search_memories
TDQS
The two tools have clearly distinct purposes: one saves memories and the other searches memories. There is no overlap or ambiguity between these operations, making it easy for an agent to select the correct tool based on the intended action.
Both tools follow a consistent verb_noun pattern (save_memory, search_memories) with clear, descriptive verbs. The naming is uniform and predictable, adhering to snake_case throughout without any deviations.
With only two tools, the server feels thin for a memory tracker domain. While save and search are core operations, typical memory systems might also include update, delete, list, or clear functions. The count is too low for comprehensive coverage, limiting agent capabilities.
The tool surface is significantly incomplete for a memory tracker. It lacks essential operations like updating or deleting memories, listing all memories, or managing memory categories. This creates dead ends for agents trying to perform full lifecycle management of memories.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
An MCP memory server. One memory your agents share — across models, devices and apps.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides AI agents with persistent memory capabilities through Mem0, allowing them to store, retrieve, and semantically search memories.681MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that integrates AI assistants with Mem0.ai's persistent memory system, allowing models to store, retrieve, search, and manage different types of memories.16MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides persistent memory capabilities for AI agents using Mem0, enabling storage, search, and management of contextual information across conversations with support for multiple backends and LLM providers.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI assistants persistent memory across conversations, storing and retrieving user preferences and behaviors using vector search.22MIT
Appeared in Searches
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/akaiserg/mcp-memory-tracker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server