memos-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TZ | No | Process timezone used for interpreting dates, e.g. Asia/Shanghai. | |
| MEMOS_URL | Yes | The URL of the Memos instance, e.g. https://memos.example.com (trailing /api/v1 is ignored). | |
| MEMOS_TOKEN | No | Personal access token. Prefer the environment variable over the CLI argument. | |
| MEMOS_MCP_HOST | No | HTTP listen host, default 127.0.0.1. | |
| MEMOS_MCP_PORT | No | HTTP listen port, default 8787. | |
| MEMOS_READ_ONLY | No | When true, only registers tools that do not modify Memos. | |
| MEMOS_FILE_ROOTS | No | Comma-separated directory whitelist restricting local paths for upload/download/export. | |
| MEMOS_TIMEOUT_MS | No | Request timeout in milliseconds, default 30000. | |
| MEMOS_TOKEN_FILE | No | Read the personal access token from a file (useful for Docker secrets). | |
| MEMOS_MCP_TRANSPORT | No | Transport mode: stdio (default) or http. | |
| MEMOS_DISABLED_TOOLS | No | Comma-separated list of tools to hide, e.g. delete_memo,delete_attachment. | |
| MEMOS_DEFAULT_VISIBILITY | No | Default visibility for new memos; if unset, uses your Memos preference default. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_overviewA | Orientation in one call: who you are signed in as, the Memos instance and version, memo/task/tag statistics, recent activity, spaces you belong to, and saved views (with their filters). Call this first when you need context. |
| search_memosA | Find memos by keywords, tags, time range, pinned state, visibility, content properties, space or saved view, newest first. By default searches only your own active (non-archived) memos. Each result shows the memo id, time, visibility, tags and a one-line snippet; set full_content=true to get complete Markdown (useful for summarizing). Use next_page_token to page. |
| get_memoB | Read one memo in full: Markdown content, metadata (times, visibility, pinned, space, tags, open tasks), attachments, linked memos and comments. |
| create_memoA | Create a new memo from Markdown. Tags are written inline as #tag (or pass |
| update_memoA | Change memo properties — visibility, pinned, archived, space, creation time — and/or replace the ENTIRE content. For small text changes prefer edit_memo_content so the rest of the memo is not rewritten. Only the fields you pass are changed. |
| edit_memo_contentA | Make a targeted edit without resending the whole memo: append text at the end, prepend it at the start, or replace an exact snippet. append/prepend join with a single newline (start |
| delete_memoA | Permanently delete a memo. This cannot be undone. Prefer update_memo with archived=true unless the user explicitly asked to delete. |
| add_commentA | Add a comment to a memo. The comment gets the same visibility (and space) as the memo unless you set one. |
| link_memosA | Manage a memo's references to other memos (shown as linked memos in Memos). action=add keeps existing links, remove deletes the given ones, set replaces the whole list. |
| share_memoA | Create a secret share link that lets anyone with the URL read the memo without signing in. Optionally make it expire. Revoke links in the Memos web UI. |
| list_todosA | Collect task-list items ("- [ ] …") across your memos, grouped by memo, with each task's number for set_task_status. By default shows only open tasks from active memos; narrow with keywords, tags, time range or space. |
| set_task_statusA | Mark one task-list item in a memo as done or not done. Identify it by its number from list_todos/get_memo order (task_index) or by a unique piece of its text (task_text). |
| list_tagsA | List the tags used in your active memos with how many memos carry each. Parent tags count their children (#work includes #work/project). |
| rename_tagA | Rename a tag across all of your memos (active and archived) by rewriting "#old" to "#new" in their content; child tags follow (#old/x → #new/x). Code blocks and URLs are left alone, and each memo keeps its "updated" time. Runs as a preview unless dry_run=false — show the preview to the user first. |
| upload_attachmentA | Upload a local file ( |
| list_attachmentsA | List attachments of one memo, or search all your attachments by file name, MIME type or unlinked status, newest first. |
| read_attachmentA | Open an attachment: images come back as viewable pictures (a ≤600px preview unless full_size=true), text files as text. To store the original file locally use download_attachment. |
| download_attachmentA | Save the original file of an attachment to a local path. Existing files are not overwritten unless overwrite=true. |
| delete_attachmentA | Permanently delete an attachment file (it disappears from its memo). Cannot be undone. |
| export_memosA | Back up memos to a local folder. format=markdown writes one .md file per memo (YAML front matter with id, times, tags, visibility; attachments downloaded next to it) and accepts the same filters as search_memos — handy for Obsidian or offline analysis. format=zip saves the official Memos export archive of ALL your memos (filters ignored), which Memos can import again. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-review | Review the memos written on one day: summary, open to-dos, follow-ups. |
| weekly-report | Turn one week of memos into a structured weekly report. |
| tidy-tags | Find duplicate, misspelled or inconsistent tags and propose a clean-up plan. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools target distinct resources and actions, and descriptions clarify boundaries (e.g., read_attachment vs download_attachment). The only real overlap is update_memo vs edit_memo_content, which both modify memo content, though the descriptions differentiate their intended use cases.
All tool names use consistent snake_case and follow a verb_noun pattern (e.g., create_memo, list_tags, set_task_status). The pattern extends even to multi-word nouns like edit_memo_content and upload_attachment.
20 tools is on the heavy side but each covers a distinct operation across memos, attachments, tags, tasks, comments, links, and sharing. The set feels comprehensive rather than redundant, though slightly over the ideal 3-15 range.
Core memo lifecycle (create, read, update, delete, search, edit, share, export) is well covered, along with attachments, tags, and tasks. Minor gaps exist—no tools for deleting or editing comments, revoking share links, or managing spaces/saved views—but these are either delegated to the web UI or less critical for agent workflows.