Memos
Single-binary self-hosted memo timeline with an OpenAPI-derived MCP endpoint at /mcp.
Memos is a Go single binary for short-form notes: a chronological markdown timeline with tags, attachments, pins, comments, reactions, and selective sharing. The server exposes a REST and gRPC API and, since 2026, a curated MCP endpoint at /mcp built from the same OpenAPI spec, so an agent authenticates with an access token and drives memos in-process against the API.
- you want a private micro-journal an agent can post to and read back with one access token
- you want a Twitter-style work log for a small team on one container with zero telemetry
- MCP tools are a curated allowlist over the API: admin, users, and webhooks stay out of reach
- MCP uses Streamable HTTP at /mcp and needs an access token from the user's settings
- Env var names are taken from usememos.com docs by the sourcing pass; re-verify against cmd/memos/main.go
Last activity Sep 3, 2026. Fit: adaptable 3, operable 3.
Adaptable: what is yours to change
Make it yours
Config only7 things to edit
No config file: the binary reads flags or MEMOS_* env vars. MEMOS_PORT and MEMOS_DATA set the listener and data directory; MEMOS_DRIVER and MEMOS_DSN move it from SQLite to MySQL or Postgres; MEMOS_MODE selects prod or dev; MEMOS_INSTANCE_URL sets the public URL. Everything else is workspace settings in the UI.
- Env vars
MEMOS_MODEMEMOS_PORTMEMOS_DATAMEMOS_DRIVERMEMOS_DSNMEMOS_INSTANCE_URL- Config files
docker-compose.yml- Prompt files
- none
- Accounts you need
- none
Source
- github.com/usememos/memos
- MIT license
- Last commit Sep 3, 2026
- 62,737 stars
Operable: what an agent can drive
Interface
OfficialMCP serverpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 9 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Create, update, and delete memos | Reachable | catalog.go allowlist: MemoService_CreateMemo, UpdateMemo, DeleteMemo |
| List and search memos | Reachable | MemoService_ListMemos, GetMemo |
| Attach files | Reachable | AttachmentService_CreateAttachment, ListAttachments, DeleteAttachment; MemoService_SetMemoAttachments |
| Comment on memos | Reachable | MemoService_CreateMemoComment, ListMemoComments |
| React to memos | Reachable | MemoService_UpsertMemoReaction, ListMemoReactions, DeleteMemoReaction |
| Link memos to each other | Reachable | MemoService_SetMemoRelations, ListMemoRelations |
| Tag and pin | Reachable | tags are inline #hashtags in content; pinned is a memo field on UpdateMemo |
| Set visibility (private, workspace, public) | Reachable | visibility field on the memo resource |
| Memo view statistics | Reachable | MemoViewService_ListMemoViews |
| Users, workspace settings, webhooks, shortcuts | Not reachable | not in the curated allowlist; only AuthService_GetCurrentUser is exposed |
Code stack
- Languages
- GoTypeScript
- Frameworks
- EchogRPC-GatewayReact
- Package manager
- go modules, pnpm
- Database
- SQLiteMySQLPostgreSQL
- Hosting target
- dockerbinary
- Built
- Mixed (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: self-hosted web app, Docker quick start | 95% |
| executionModel | no model in the stack | 95% |
| operability | server/router/mcp/README.md: OpenAPI-driven MCP endpoint at /mcp using the official Go SDK; catalog.go allowlist | 95% |
| effort | MEMOS_* env vars documented at usememos.com/docs; no config file | 70% |
| editions | MIT; README 'zero telemetry'; no paid edition | 95% |
| active | pushedAt 2026-09-03 | – |
| provenance | AGENTS.md at root; project from 2021 | 40% |
| reach | 90% |
Open questions
- Confirm MEMOS_* names in cmd/memos/main.go (docs deploy page did not list them)
- Is the /mcp endpoint enabled by default or behind a workspace setting?
Sources
- github.com/usememos/memos sourcing:notes-knowledge:curated
- github.com/usememos/memos/tree/main/server/router/mcp analysis