A FastMCP-based MCP (Model Context Protocol) server implementation for Memos, allowing AI assistants to interact with the Memos note-taking system through the MCP protocol.
- 📝 Create Memos - Create new memos with Markdown support
- 📖 Read Memos - Get detailed information about specific memos
- ✏️ Update Memos - Modify existing memo content and properties
- 🗑️ Delete Memos - Remove specified memos
- 📋 Get Recent Memos - Retrieve a list of recent memos
- 🔐 Authentication - Optional static token verification support
- 🐳 Docker Support - Docker and Docker Compose configurations provided
Before starting the service, you need to set the following environment variables:
| Variable Name | Description | Example |
|---|---|---|
MEMOS_SERVER_URL |
URL of the Memos server | https://memos.example.com |
MEMOS_API_KEY |
Memos API key | your-api-key-here |
| Variable Name | Description | Default | Example |
|---|---|---|---|
MEMOS_MCP_AUTH_TOKEN |
MCP server authentication token | None | abcdefghijklmnopqrstuvwxyz |
-
Clone the repository
git clone <repository-url> cd memos-mcp
-
Install dependencies
uv sync
-
Set environment variables
export MEMOS_SERVER_URL="https://your-memos-server.com" export MEMOS_API_KEY="your-api-key" # Optional: Set authentication token export MEMOS_MCP_AUTH_TOKEN="your-auth-token"
-
Start the service
uv run main.py
The service will start at http://localhost:8000 with the MCP endpoint at http://localhost:8000/mcp.
-
Using Docker Compose (Recommended)
# Set environment variables export MEMOS_SERVER_URL="https://your-memos-server.com" export MEMOS_API_KEY="your-api-key" # Start the service docker-compose up -d
-
Using Docker directly
docker build -t memos-mcp . docker run -p 8000:8000 \ -e MEMOS_SERVER_URL="https://your-memos-server.com" \ -e MEMOS_API_KEY="your-api-key" \ memos-mcp
- Protocol: HTTP
- Endpoint:
http://localhost:8000/mcp - Port: 8000
Create a new memo
- Parameters:
content(string): Memo content with Markdown supportvisibility(string, optional): Visibility setting, defaults toVISIBILITY_UNSPECIFIEDPRIVATE: PrivatePROTECTED: ProtectedPUBLIC: PublicVISIBILITY_UNSPECIFIED: Unspecified
Update an existing memo
- Parameters:
memo_resource_name(string): Memo resource name (e.g.,memos/123or123)content(string, optional): New memo contentstate(string, optional): Memo stateSTATE_UNSPECIFIED: UnspecifiedACTIVE: ActiveARCHIVED: Archived
visibility(string, optional): Visibility settingpinned(boolean, optional): Whether the memo is pinned
Delete a memo
- Parameters:
memo_resource_name(string): Resource name of the memo to delete
Get detailed information about a specific memo
- Returns: Information including state, content, visibility, creation time, update time, tags, pinned status, and attachments
Get a list of recent memos
- Returns: A list of recent memos, each containing name, state, content, and visibility
memos-mcp/
├── main.py # Main service file
├── pyproject.toml # Project configuration
├── Dockerfile # Docker configuration
├── docker-compose.yaml # Docker Compose configuration
└── README.md # Project documentation
- Python >= 3.13
- fastmcp >= 2.12.2
- requests >= 2.32.5
- Ensure uv is installed
- Clone the repository and install dependencies:
uv sync
- Set environment variables and run:
uv run main.py
This project is licensed under the MIT License. See the LICENSE file for details.
Issues and Pull Requests are welcome!