Skip to main content

Muninn

PyPI version Python 3.11+ License: MIT

"Odin feared losing Muninn more than Huginn — losing memory is worse than losing thought."

Cross-tool project memory for AI assistants. Muninn (MOO-nin) is an MCP server that gives Claude, ChatGPT, Cursor, and other AI tools shared, persistent, project-structured memory.

The Problem

Every tool switch = context reset. Every session = re-explanation from scratch.

  • 2 hours brainstorming in Claude Desktop → switch to Claude Code → blank slate
  • Research in ChatGPT → switch to Cursor → copy-paste everything
  • Come back tomorrow → "this project is X, tech stack is Y, we're at Z..." again

How Muninn Solves It

Save in Claude Desktop    →  "Save this to ouri-app"
Switch to Claude Code     →  muninn_recall("ouri-app") → full context loaded
Research in ChatGPT       →  "Save findings to ouri-app"
Come back next week       →  Everything remembered

Zero copy-paste. Zero re-explanation. Works across any MCP-compatible tool.

Quick Start

Install

# From PyPI (recommended)
pip install muninn-mcp            # basic (stdio only)
pip install muninn-mcp[http]      # with HTTP transport
pip install muninn-mcp[all]       # everything

# From source (development)
git clone https://github.com/ilwonyoon/muninn.git
cd muninn
pip install -e ".[dev]"

Connect to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "muninn": {
      "command": "/path/to/muninn/.venv/bin/python",
      "args": ["-m", "muninn.server"]
    }
  }
}

Restart Claude Desktop. Start saving memories.

Connect to Claude Code

claude mcp add muninn -- /path/to/muninn/.venv/bin/python -m muninn.server

Remote Access (HTTP Transport)

For Claude Web/Mobile, ChatGPT, or remote access:

# Basic (no auth — local dev only)
muninn --transport http --port 8000

# With authentication (recommended)
export MUNINN_API_KEY="your-secret-key"
muninn --transport http --host 0.0.0.0 --port 8000

Endpoint: http://localhost:8000/mcp

For public access, expose via ngrok or Cloudflare Tunnel:

ngrok http 8000
# Then add the HTTPS URL to claude.ai or ChatGPT as a remote MCP server

Tools

Tool Purpose
muninn_save Save memory to a project
muninn_recall Load project context with depth filtering
muninn_search Full-text search across all memories
muninn_status List all projects with overview
muninn_manage Delete/update memories, manage projects

Depth System

Muninn uses a 4-level depth system that works for any project type:

Depth Question Use For
0 "What is this?" 10-second project overview. Always loaded. Create first.
1 "To continue" Resume work next session. Key decisions, current state.
2 "To go deeper" Detailed analysis, specs, research. Loaded on request.
3 "Just in case" Archive, raw data, logs. Rarely loaded.
muninn_recall(depth=0)  →  Project summaries only (~500 chars)
muninn_recall(depth=1)  →  Above + working context (default)
muninn_recall(depth=2)  →  Above + deep details
muninn_recall(depth=3)  →  Everything

Example Usage

In any AI tool connected to Muninn:

User: "Save this to ouri-app: voice journaling app for Korean millennials,
       React Native + Whisper API, freemium model"

→ muninn_save(project="ouri-app", content="...", depth=0)
→ Saved to ouri-app (memory: a1b2c3d4)
User: "What are my projects?"

→ muninn_status()
→ ouri-app    active  today       memories: 9
   muninn     active  today       memories: 15
   glpuri     paused  2 weeks ago memories: 23
User: "Load ouri-app context"

→ muninn_recall(project="ouri-app")
→ ## ouri-app (active)
  - [summary] (a1b2c3d4) Voice journaling app for Korean millennials...
  - [context] (b2c3d4e5) Tech stack: React Native + Whisper API...
  - [context] (c3d4e5f6) Revenue model: freemium with 5min/day limit...
  Context: 2,341 / 8,000 chars | 9 memories loaded

Data Storage

Default: ~/.local/share/muninn/muninn.db
Override: MUNINN_DB_PATH=/path/to/custom.db

SQLite with WAL mode. Single file. Back up with cp muninn.db muninn.db.bak.

Development

# Install with dev deps
pip install -e ".[dev]"

# Run tests (132+ tests)
python -m pytest tests/ -v

# Run the server (stdio)
python -m muninn.server

# Run the server (HTTP)
python -m muninn.server --transport http --port 8000

Architecture

src/muninn/
  server.py      # MCP entry point (stdio + HTTP)
  auth.py        # Bearer token auth middleware
  tools.py       # 5 MCP tool functions
  store.py       # SQLite with FTS5 full-text search
  models.py      # Frozen dataclasses
  formatter.py   # LLM-readable output formatting

Platform Support

Platform Transport Status
Claude Desktop (Mac) stdio Working
Claude Code stdio Working
Cursor stdio Working
Claude Web/Mobile HTTP Ready (needs hosting)
ChatGPT Web HTTP Ready (needs hosting)
ChatGPT Mac — No MCP support yet

License

MIT

Metadata

Release files for muninn-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muninn-mcp 0.2.0
File Size Uploaded Provenance
muninn_mcp-0.2.0.tar.gz 109.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for muninn-mcp 0.2.0
File Interpreter ABI Platform
muninn_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 136.4 kB

Release files / muninn_mcp-0.2.0.tar.gz

Download URL muninn_mcp-0.2.0.tar.gz
Size 109.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ef392d8dcedd11b8e97b6e33cc2b058dd0f0b70ed42bf3b5a972c6b455d609f1
BLAKE2b-256 checksum
How to use checksums
567a07c38f4493c46fe5a2632d26a38bb1755e4d66870d8cee29dc41305bb847
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release files / muninn_mcp-0.2.0-py3-none-any.whl

Download URL muninn_mcp-0.2.0-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
756af37ab87f339f505b965b4a854c2117895df7859b639a1f6246e551b92dbf
BLAKE2b-256 checksum
How to use checksums
d3bc9d208e97d0b009ee0b705b3c797b77b7f3f2d144cc39e739b0b475e030f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Security for muninn-mcp 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page