A production-ready Model Context Protocol (MCP) server that provides AI assistants with intelligent access to Mem.ai's knowledge management platform.
- π§ Intelligent Memory: Save and process content with Mem It's AI-powered organization
- π Note Management: Create, read, and delete structured markdown notes
- π Collections: Organize notes into searchable collections
- π Type-Safe: Full type hints and Pydantic validation
- β‘ Async/Await: High-performance async I/O throughout
- π― Clean API: Simple, intuitive interface for AI assistants
- π‘οΈ Production-Ready: Comprehensive error handling and logging
- π§ͺ Well-Tested: Full test suite with pytest
- Python 3.10 or higher
- A Mem.ai account
- Mem.ai API key (get one here)
- Clone the repository:
git clone https://github.com/yourusername/mcp-mem.ai.git
cd mcp-mem.ai- Install dependencies:
pip install -e .- Set up your environment:
cp .env.example .env
# Edit .env and add your MEM_API_KEYfastmcp run src/mcp_mem/server.pyAdd to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"mem": {
"command": "python",
"args": ["-m", "mcp_mem.server"],
"env": {
"MEM_API_KEY": "your_api_key_here"
}
}
}
}from mcp_mem import mcp
# Run the server
mcp.run()Save and automatically process any content type with AI-powered organization.
Parameters:
input(required): Content to save (text, HTML, markdown, etc.)instructions(optional): Processing instructionscontext(optional): Additional context for organizationtimestamp(optional): ISO 8601 timestamp
Example:
mem_it(
input="Just had a great meeting with the product team about Q1 roadmap...",
instructions="Extract key action items and decisions",
context="Product Planning"
)Create a markdown-formatted note with explicit control over content and organization.
Parameters:
content(required): Markdown-formatted contentcollection_ids(optional): List of collection UUIDscollection_titles(optional): List of collection titles
Example:
create_note(
content="""# Team Standup - Jan 15, 2024
## Completed
- Feature X shipped to production
- Bug fixes for issue #123
## In Progress
- Working on Feature Y
- Code review for PR #456
## Blockers
- Waiting for API access
""",
collection_titles=["Team Meetings", "Engineering"]
)Retrieve a note's full content and metadata by ID.
Parameters:
note_id(required): UUID of the note
Example:
read_note("01961d40-7a67-7049-a8a6-d5638cbaaeb9")Permanently delete a note by ID.
Parameters:
note_id(required): UUID of the note
Example:
delete_note("01961d40-7a67-7049-a8a6-d5638cbaaeb9")Create a new collection to organize related notes.
Parameters:
title(required): Collection titledescription(optional): Markdown-formatted description
Example:
create_collection(
title="Project Apollo",
description="""# Project Apollo
All notes related to the Apollo project including:
- Meeting notes
- Technical specifications
- Customer feedback
"""
)Delete a collection (notes remain, just unassociated).
Parameters:
collection_id(required): UUID of the collection
Example:
delete_collection("5e29c8a2-c73b-476b-9311-e2579712d4b1")Configuration is done via environment variables. Copy .env.example to .env and customize:
# Required: Your Mem.ai API key
MEM_API_KEY=your_api_key_here
# Optional: Custom API endpoint (default: https://api.mem.ai/v2)
MEM_API_BASE_URL=https://api.mem.ai/v2
# Optional: Request timeout in seconds (default: 30)
MEM_REQUEST_TIMEOUT=30
# Optional: Enable debug logging (default: false)
MEM_DEBUG=falsesrc/mcp_mem/
βββ __init__.py # Package initialization
βββ models.py # Pydantic data models
βββ client.py # Mem.ai API client
βββ server.py # MCP server implementation
models.py: Pydantic models for request/response validationclient.py: Async HTTP client wrapper for Mem.ai APIserver.py: FastMCP server with tool implementations
Run the test suite:
# Install dev dependencies
pip install -e ".[dev]"
# Run all tests
pytest
# Run with coverage
pytest --cov=mcp_mem --cov-report=html
# Run specific test file
pytest tests/test_client.pyThe server provides clear, actionable error messages:
MemAuthenticationError: Invalid or missing API keyMemNotFoundError: Resource (note/collection) not foundMemValidationError: Invalid request parametersMemAPIError: General API errors
All errors are logged and returned with helpful context to the AI assistant.
See the examples/ directory for complete usage examples:
basic_usage.py: Simple examples of each tooladvanced_usage.py: Complex workflows and patterns
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Mem.ai - Intelligent memory platform
- Mem.ai API Documentation
- Model Context Protocol
- FastMCP - MCP server framework
- Meeting Notes: Automatically process and organize meeting transcripts
- Research: Save and categorize research papers, articles, and findings
- Customer Feedback: Collect and organize customer conversations
- Knowledge Base: Build a searchable knowledge repository
- Personal Memory: Keep track of ideas, thoughts, and learnings
MemAuthenticationError: MEM_API_KEY environment variable or api_key parameter is required
Solution: Set your MEM_API_KEY in the .env file or environment.
httpx.ReadTimeout: timeout
Solution: Increase MEM_REQUEST_TIMEOUT in your .env file.
MemValidationError: invalid UUID format
Solution: Ensure note/collection IDs are valid UUIDs from Mem.ai.