Muninn
"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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| muninn_mcp-0.2.0.tar.gz | 109.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.