quickmemo-mcp
# QuickMemo MCP Server πβ‘
[](https://www.python.org/)
[](https://modelcontextprotocol.io/)
[](LICENSE)
[](https://smithery.ai/)
[](tests/)
**QuickMemo MCP** is a sleek, minimalistic, and unique Model Context Protocol (MCP) server that provides AI assistants with a fast, structured scratchpad and context memo engine.
Built cleanly using the official Python MCP SDK, QuickMemo showcases all **three core MCP primitives**β**Tools**, **Resources**, and **Prompts**βin an elegant, zero-bloat codebase
---
## π Key Highlights
- β‘ **Minimalist & Zero-Bloat**: Under 150 lines of clean, readable Python code.
- π― **All 3 MCP Primitives**:
- **Tools**: Save, list, search, filter, retrieve, and delete context memos.
- **Resources**: Real-time markdown digest (`memo://all`) and dynamic telemetry (`memo://stats`).
- **Prompts**: Ready-to-use prompt templates for note reviews and daily standup generation.
- π **Zero Configuration Required**: Instant out-of-the-box local persistent JSON storage (`~/.quickmemo/memos.json`).
- π **Marketplace & Registry Ready**: Preconfigured with `smithery.yaml` and `Dockerfile` for one-click deployment to Smithery and Glama.
- π **Universal Compatibility**: Works seamlessly with Claude Desktop, Cursor, Antigravity IDE, Windsurf, and custom MCP clients.
---
## π Project Structure
```
quickmemo-mcp/
βββ docs/ # Learning documentation & reports
β βββ EXISTING_MCP_EXPERIENCE.md # Hands-on write-up evaluating Context7 & Playwright
β βββ MCP_FUNDAMENTALS.md # Complete MCP protocol & architecture guide
βββ src/
β βββ quickmemo/ # MCP Server package (<150 LOC)
β βββ __init__.py # Package exports
β βββ __main__.py # Executable entrypoint
β βββ server.py # Core server (Tools, Resources, Prompts)
βββ tests/
β βββ demo_client.py # Live interactive demonstration script
β βββ test_server.py # Pytest unit & integration test suite
βββ Dockerfile # Containerized deployment manifest
βββ LICENSE # MIT License
βββ pyproject.toml # Package configuration & dependencies
βββ README.md # Quickstart & user documentation
βββ smithery.yaml # Smithery registry manifest
```
---
## π Architecture Overview
```
+-------------------------------------------------------------------------------+
| MCP CLIENT |
| (Claude Desktop / Cursor IDE / Antigravity / Custom AI) |
+-------------------------------------------------------------------------------+
β²
β JSON-RPC 2.0 (stdio)
βΌ
+-------------------------------------------------------------------------------+
| QUICKMEMO MCP SERVER |
| |
| [TOOLS] [RESOURCES] [PROMPTS] |
| β’ add_memo β’ memo://all (Digest) β’ review_notes |
| β’ list_memos β’ memo://stats (JSON) β’ daily_standup |
| β’ search_memos |
| β’ get_memo / delete_memo |
+-------------------------------------------------------------------------------+
β
βΌ
Local JSON Storage Engine
(~/.quickmemo/memos.json)
```
---
## π οΈ MCP Primitives Catalog
### 1. Tools (Model-Controlled Functions)
| Tool Name | Parameters | Description |
| :--- | :--- | :--- |
| `add_memo` | `title: str`, `content: str`, `category?: str`, `tags?: list[str]` | Saves a new memo or snippet with optional category and tags. |
| `list_memos` | `category?: str`, `tag?: str` | Lists saved memos with optional category and tag filtering. |
| `get_memo` | `memo_id: str` | Retrieves full content and metadata for a specific memo. |
| `search_memos` | `query: str` | Performs keyword search across title, content, tags, and category. |
| `delete_memo` | `memo_id: str` | Deletes a memo by ID. |
| `clear_memos` | *None* | Empties the memo store. |
### 2. Resources (Dynamic Context Streams)
| Resource URI | MIME Type | Description |
| :--- | :--- | :--- |
| `memo://all` | `text/markdown` | Formatted dynamic markdown digest of all stored memos. |
| `memo://stats` | `application/json` | Real-time statistics (total memos, categories breakdown, tag distribution). |
### 3. Prompts (Pre-Engineered Workflow Templates)
| Prompt Name | Arguments | Description |
| :--- | :--- | :--- |
| `review_notes` | `category?: str` | Synthesizes saved memos into key takeaways and an actionable checklist. |
| `daily_standup` | *None* | Converts recent memos into a standard 3-part daily standup report. |
---
## π‘ AI Assistant Workflows & Use Cases
1. **π§ Multi-Step Code Refactoring Scratchpad**:
- The LLM stores tentative architecture decisions and checklist items as memos (`category: "refactor"`).
- Allows long-horizon task continuity without overflowing working memory.
2. **π Session Handover & Context Preservation**:
- Before ending a chat session, ask the AI: *"Save a summary memo of today's progress and active blockers."*
- Start the next session with *"Retrieve memos tagged 'blockers' to resume work."*
3. **π Real-Time Daily Standup Generation**:
- Trigger the `daily_standup` prompt to instantly consolidate team notes, bug findings, and feature progress into a formatted report.
---
## π Quickstart & Installation
### Option 1: Local Setup with `uv` (Recommended)
```bash
# Clone the repository
git clone https://github.com/Abdullah-Zafarr/quickmemo-mcp.git
cd quickmemo-mcp
# Install dependencies and package in editable mode
uv pip install -e .
# Run test suite
uv run pytest -v
# Run the interactive demo
uv run python tests/demo_client.py
```
### Option 2: Running Directly via CLI
```bash
# Run server over stdio
quickmemo
```
---
## π Client Configuration
### Claude Desktop
Add QuickMemo to your `claude_desktop_config.json`:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"quickmemo": {
"command": "uvx",
"args": ["--from", "quickmemo", "quickmemo"]
}
}
}
```
### Cursor IDE
Add to `.cursor/mcp.json` in your workspace:
```json
{
"mcpServers": {
"quickmemo": {
"command": "quickmemo"
}
}
}
```
### Antigravity IDE
Add to your project's `.agents/mcp_config.json` or global MCP settings:
```json
{
"mcpServers": {
"quickmemo": {
"command": "quickmemo"
}
}
}
```
### Windsurf & VS Code (Roo Code / Continue)
Add QuickMemo under your MCP server settings:
```json
{
"mcpServers": {
"quickmemo": {
"command": "uv",
"args": ["run", "quickmemo"]
}
}
}
```
---
## βοΈ Deploying to Smithery / Glama
This repository is pre-configured for the **Smithery** registry with `smithery.yaml` and `Dockerfile`.
### Install via Smithery CLI
```bash
npx -y @smithery/cli install quickmemo --client claude
```
### Manual Registry Deployment
1. Push your repository to GitHub.
2. Visit [Smithery.ai](https://smithery.ai) and sign in.
3. Import your GitHub repository. Smithery automatically detects `smithery.yaml` and deploys your MCP server.
---
## π§ͺ Testing
Run the automated test suite:
```bash
uv run pytest -v
```
Output:
```
tests/test_server.py::TestMemoStore::test_add_and_get PASSED [ 12%]
tests/test_server.py::TestMemoStore::test_list_and_filter PASSED [ 25%]
tests/test_server.py::TestMemoStore::test_search PASSED [ 37%]
tests/test_server.py::TestMemoStore::test_delete_and_clear PASSED [ 50%]
tests/test_server.py::TestServerTools::test_tool_workflow PASSED [ 62%]
tests/test_server.py::TestServerTools::test_clear_memos_tool PASSED [ 75%]
tests/test_server.py::TestServerResourcesAndPrompts::test_resources PASSED [ 87%]
tests/test_server.py::TestServerResourcesAndPrompts::test_prompts PASSED [100%]
============================== 8 passed in 1.10s ==============================
```
---
## βοΈ Environment Configuration & Storage Customization
By default, QuickMemo persists memos at `~/.quickmemo/memos.json`. You can customize the storage path by setting the `QUICKMEMO_STORAGE` environment variable:
```bash
# Custom storage path example
export QUICKMEMO_STORAGE="/path/to/my_custom_memos.json"
quickmemo
```
---
## β Troubleshooting & FAQs
- **Server not connecting in Claude Desktop or Cursor?**
- Ensure `uv` or `quickmemo` is available in your system's `PATH`.
- Check that the path to `quickmemo` is executable and python version >= 3.10 is installed.
- **Where are my memos stored?**
- Run the `memo://stats` resource in your client to view the exact active `storage_path`.
- **How to run tests locally?**
- Execute `uv run pytest -v` from the repository root to verify all 8 unit & integration tests pass.
---
## π Deliverables & Learning Documentation
- π **Existing MCP Hands-On Evaluation**: [`docs/EXISTING_MCP_EXPERIENCE.md`](docs/EXISTING_MCP_EXPERIENCE.md)
- π **MCP Architecture & Fundamentals Guide**: [`docs/MCP_FUNDAMENTALS.md`](docs/MCP_FUNDAMENTALS.md)
- π» **Interactive Live Demo Script**: [`tests/demo_client.py`](tests/demo_client.py)
- βοΈ **Smithery Configuration**: [`smithery.yaml`](smithery.yaml)
---
## π License
MIT License Β© 2026 QuickMemo MCP Contributors.
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: create, list, get, search, delete, and clear. No two tools overlap in functionality, so an agent can easily select the correct one.
All tool names follow the verb_noun pattern consistently (add_memo, list_memos, get_memo, search_memos, delete_memo, clear_memos). The naming is uniformly snake_case with clear verbs and a common noun.
Six tools is well-scoped for a memo management server. Each tool covers a core operation without being excessive or too sparse.
The tool surface covers create, read (list/get/search), and delete (single and all). The only noticeable gap is the lack of an update or edit operation, which could be a minor limitation but does not interrupt the main workflow.