npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

memora-mcp

v1.0.3

Published

MCP server for saving and retrieving prompts, memories and plans

Readme

memora-mcp

MCP server for saving and retrieving prompts, memories, and plans. Gives your AI agent a persistent knowledge repository that survives across sessions.

Installation

npx memora-mcp

Tools (17)

Memories — facts, decisions, and context

| Tool | Description | | ------------------ | --------------------------------------------------------------------------------------------- | | save_memory | Persist a fact, decision, observation, or context that should survive across sessions | | get_memory_by_id | Fetch the full content of a memory by its exact ID | | list_memories | List saved memories (id, title, summary, tags — content omitted). Supports tag filter + pagination | | update_memory | Partially update a memory — omitted fields are preserved | | delete_memory | Permanently delete a memory |

Prompts — reusable instructions and templates

| Tool | Description | | ------------------ | --------------------------------------------------------------------------------------------- | | save_prompt | Save a reusable instruction, system prompt, or template | | get_prompt_by_id | Fetch the full text of a prompt by its exact ID | | list_prompts | List saved prompts (id, title, summary, tags — content omitted). Supports tag filter + pagination | | update_prompt | Partially update a prompt — bump version when making breaking changes | | delete_prompt | Permanently delete a prompt |

Plans — multi-step implementation plans and ADRs

| Tool | Description | | --------------- | ------------------------------------------------------------------------------------------ | | save_plan | Save a structured, multi-step implementation plan or architectural decision record | | get_plan_by_id| Fetch the full content of a plan by its exact ID | | list_plans | List saved plans (id, title, summary, tags — content omitted). Supports tag filter + pagination | | update_plan | Partially update a plan — use to mark steps complete or revise scope | | delete_plan | Permanently delete a plan |

Global search

| Tool | Description | | --------------------- | ------------------------------------------------------------------------------------------------- | | search_knowledge | Free-text search across all items (memories, prompts, plans). Matches title, summary, content, and tags | | get_recent_knowledge| Retrieve the most recently updated items across all types — useful at session start to regain context |

Configuration

Claude Desktop

Add to your claude_desktop_config.json:

With external API (recommended for production)

{
  "mcpServers": {
    "memora": {
      "command": "npx",
      "args": ["-y", "memora-mcp"],
      "env": {
        "STORAGE_TYPE": "http",
        "SAVE_PROMPT_API_URL": "https://your-api.com",
        "API_KEY": "your-api-key-here"
      }
    }
  }
}

With local JSON file (no API required)

{
  "mcpServers": {
    "memora": {
      "command": "npx",
      "args": ["-y", "memora-mcp"],
      "env": {
        "STORAGE_TYPE": "json"
      }
    }
  }
}

Data is stored at ~/.save-prompt/data.json.

With local Markdown files (human-readable, git-friendly)

{
  "mcpServers": {
    "memora": {
      "command": "npx",
      "args": ["-y", "memora-mcp"],
      "env": {
        "STORAGE_TYPE": "markdown"
      }
    }
  }
}

Each item is stored as an individual .md file at ~/.save-prompt/items/<uuid>.md with YAML frontmatter for metadata and a markdown body for content. Files are human-readable and can be edited directly or committed to git.

VS Code / Cursor

Add to your .vscode/mcp.json (or user settings):

{
  "servers": {
    "memora": {
      "command": "npx",
      "args": ["-y", "memora-mcp"],
      "env": {
        "STORAGE_TYPE": "json"
      }
    }
  }
}

Environment Variables

| Variable | Required | Default | Description | | --------------------- | ---------------------- | ------- | ----------------------------------- | | STORAGE_TYPE | No | http | http, json, or markdown | | SAVE_PROMPT_API_URL | If STORAGE_TYPE=http | — | API base URL | | API_KEY | If STORAGE_TYPE=http | — | Sent as x-api-key header | | API_TIMEOUT | No | 10000 | HTTP request timeout in milliseconds |

API Contract

When using STORAGE_TYPE=http, your API must implement:

| Method | Path | Description | | -------- | ----------------------- | ---------------------------------------- | | POST | /knowledge-items | Create item | | GET | /knowledge-items/:id | Get by ID (404 if not found) | | GET | /knowledge-items | List with filters (see query params below) | | PATCH | /knowledge-items/:id | Partial update | | DELETE | /knowledge-items/:id | Delete |

List query parameters:

| Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | type | string | Filter by prompt, memory, or plan | | tags | string | Comma-separated tags (ALL must match) | | query | string | Free-text search across title, summary, content, and tags | | limit | number | Max items to return (1–100) | | offset | number | Items to skip for pagination | | orderBy | string | createdAt, updatedAt, or title |

KnowledgeItem schema:

{
  "id": "uuid",
  "type": "prompt | memory | plan",
  "title": "string",
  "summary": "string (max 500 chars, optional) — shown in list views",
  "content": "string (markdown, JSON, or plain text)",
  "tags": ["string"],
  "version": "string",
  "createdAt": "ISO8601",
  "updatedAt": "ISO8601"
}

List and search responses omit content for context efficiency. Use get_*_by_id to fetch the full content of a specific item.

Development

npm install
npm run build
npm test

License

MIT