1. Conduid
  2. Productivity
  3. Muninn
MCP server · Productivity

Muninn

AI-native macOS menu bar dictation with a post-recording text pipeline.

59Fair

Scored 7 days ago · breakdown

About Muninn

Muninn is an MCP server published by ilwonyoon in the Productivity category: aI-native macOS menu bar dictation with a post-recording text pipeline.

The repository has 1 stars and 0 forks, with the last commit 7 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

Claude Code
claude mcp add muninn -- npx -y @vanilla-game/muninn-mcp
npx
npx -y @vanilla-game/muninn-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (6)

muninn_manage`muninn_manage(action: Literal["set_status", "create_project", "delete_project"], project: str, status: str \

Parameters not published.

muninn_recall`muninn_recall(project: str \

Parameters not published.

muninn_save`muninn_save(project: str, content: str) -> str`

Parameters not published.

muninn_search`muninn_search(query: str) -> str`

Parameters not published.

muninn_status`muninn_status() -> str`

Parameters not published.

muninn_sync`muninn_sync(project: str) -> str`

Parameters not published.

Ask AI

✦

Ask AI about Muninn

Powered by Claude · Grounded in docs

I know everything about Muninn. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

3 checks have not been run yet.

Releases

v0.3.0-stablev0.3.0-stable

README

Muninn

PyPI version

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

Muninn is a personal MCP memory server for cross-client project continuity.

It is document-first: each project has one structured markdown document stored in projects.summary, and MCP tools save/recall/search those project documents directly.

Primary clients: Claude Code CLI, Claude Desktop, ChatGPT Mac App, Codex CLI

5-Minute Quickstart

1) Install

pip install muninn-mcp

Optional extras:

pip install "muninn-mcp[http]"    # HTTP transport support
pip install "muninn-mcp[github]"  # GitHub sync dependencies
pip install "muninn-mcp[all]"     # all optional deps

2) Configure one client (Claude Code example)

claude mcp add muninn -- uvx muninn-mcp

If you prefer local Python instead of uvx:

claude mcp add muninn -- muninn

3) First save (must be structured markdown)

In the client chat, send:

Save this to project "muninn-demo":

# Muninn Demo

## Overview
Personal MCP memory server for project continuity across tools.

## Key Decisions
- Use project-level markdown one-pager, not atomic memory writes.

## Current Status
- Initial setup complete.

## Open Questions
- What sections should be mandatory in every project document?

muninn_save rejects plain text without ## headers.

4) Recall it

Ask:

Recall muninn-demo

You should get the saved project document back.

Current Architecture

  • Document-first MCP model: muninn_save replaces the entire projects.summary document for a project.
  • 6 MCP tools: muninn_save, muninn_recall, muninn_search, muninn_status, muninn_manage, muninn_sync.
  • Search is keyword-only: no semantic/vector search path in MCP tools.
  • Storage: SQLite/libSQL with WAL mode; FTS5 tables are present in schema.
  • Transport: stdio (default) and streamable HTTP.
  • Dashboard: Next.js + React + Tailwind app in web/ (localhost workflow).

MCP Tools Reference (Actual Signatures)

Tool Signature Behavior
muninn_save muninn_save(project: str, content: str) -> str Save or replace a project's markdown document. Auto-creates project if missing. Requires markdown with ## headers.
muninn_recall muninn_recall(project: str | None = None) -> str Recall one project's document, or all active project documents when project is omitted.
muninn_search muninn_search(query: str) -> str Keyword search across project documents.
muninn_status muninn_status() -> str Status overview of projects.
muninn_manage muninn_manage(action: Literal["set_status", "create_project", "delete_project"], project: str, status: str | None = None, value: str | None = None) -> str Manage project lifecycle.
muninn_sync muninn_sync(project: str) -> str Sync linked GitHub repo (commits/issues/PRs) into memory for that project.

muninn_manage actions

Action Required Notes
set_status project, status status must be one of active, paused, idea, archived.
create_project project Optional value sets display name.
delete_project project Irreversible delete of project and its data.

muninn_sync prerequisites

  • Project must exist.
  • Project must have github_repo set (via dashboard or REST API).
  • GITHUB_TOKEN is recommended for private repos and rate limits.

Client Configuration Examples

Claude Code CLI

claude mcp add muninn -- uvx muninn-mcp

Claude Desktop

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

{
  "mcpServers": {
    "muninn": {
      "command": "uvx",
      "args": ["muninn-mcp"]
    }
  }
}

Codex CLI

codex mcp add muninn -- uvx muninn-mcp
codex mcp list

ChatGPT Mac App (HTTP connector)

  1. Start Muninn in HTTP mode:
MUNINN_API_KEY=your-secret-key muninn --transport http --host 127.0.0.1 --port 8000
  1. In ChatGPT Mac App, add a custom MCP connector to:
http://127.0.0.1:8000/
  1. Use bearer auth with the same key.

For remote/public access, run with a public URL and appropriate auth settings.

Running The Server

# stdio (default)
muninn

# HTTP
muninn --transport http --host 127.0.0.1 --port 8000

# HTTP with public URL (OAuth issuer host)
muninn --transport http --host 0.0.0.0 --port 8000 --public-url https://your-domain.example

# Reset data and instructions file
muninn --reset

HTTP auth mode priority:

  1. MUNINN_OWNER_PASSWORD → OAuth 2.0
  2. MUNINN_API_KEY → Bearer token
  3. Neither set → no auth (local dev only)

Dashboard (Localhost)

# terminal 1: Muninn server
muninn --transport http --port 8000

# terminal 2: dashboard
cd web
npm install
npm run dev

Open http://localhost:3000.

Data & Environment

  • Default DB path: ~/.local/share/muninn/muninn.db
  • Override DB path: MUNINN_DB_PATH=/path/to/muninn.db
  • OAuth PIN auth: MUNINN_OWNER_PASSWORD
  • Bearer auth: MUNINN_API_KEY
  • GitHub sync auth: GITHUB_TOKEN

Development

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

# Run tests
python -m pytest tests/ -v

# Run server module directly
python -m muninn.server
python -m muninn.server --transport http --port 8000

Architecture

src/muninn/
  server.py       # FastMCP entry point (stdio + HTTP, CLI args)
  tools.py        # 6 MCP tool functions (document-first)
  store.py        # SQLite/libSQL store, WAL, FTS5 tables
  formatter.py    # LLM-readable formatter output
  models.py       # Dataclasses and validation
  auth.py         # Bearer middleware (HTTP)
  api.py          # Dashboard REST routes
  github_sync.py  # GitHub commits/issues/PR sync

License

MIT

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Muninn

How do I install Muninn?

Run claude mcp add muninn -- npx -y @vanilla-game/muninn-mcp, then add the server to your MCP client's configuration.

Is Muninn safe to use with an AI agent?

Its trust score is 59 out of 100 (fair). It passes 2 of the 3 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Muninn still maintained?

The last commit was 7 months ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.