memoo-mcp
MCP server for Memoo knowledge graph RAG, enabling search, Q&A, graph traversal, and episode management via the Memoo REST API.
README
memoo-mcp
TypeScript MCP server for Memoo — knowledge graph RAG over the Memoo REST API.
Auth: API key only (moo_sk…). No JWT. No OAuth.
This package is the canonical Memoo MCP implementation. The Go gateway in the Memoo monorepo (api/cmd/mcp-gateway, npm @hinha/memoo) is deprecated for new installs.
Quick start
make install
make check # typecheck + test
make build
# Stdio (Cursor / Claude / Codex) — recommended
make stdio ARGS='--memoo-base-url https://memoo.hinha.web.id --memo-namespace <uuid> --timeout 600s'
# Optional HTTP (Streamable HTTP, path fixed at /mcp)
make serve
# → http://127.0.0.1:8787/mcp
Or via npm:
npm install && npm run build
MEMOO_API_KEY=moo_sk_xxx npm run stdio -- \
--memoo-base-url https://memoo.hinha.web.id \
--memo-namespace 0b00322d-f6ed-45b7-a2e8-b7059f71de34 \
--timeout 600s
Copy .env.example → .env for local development. See make help for all targets.
Host compatibility (Cursor / Claude / Codex / OpenCode)
Primary transport is stdio via @modelcontextprotocol/sdk — the same shape as notion-bank-mcp and the deprecated Go gateway. All of these hosts work with command + args + env:
| Host | Config location | Notes |
|---|---|---|
| Cursor | .cursor/mcp.json or Settings → MCP |
Use mcp.json.example |
| Claude Desktop | claude_desktop_config.json |
Same mcpServers JSON |
| Claude Code | project/user MCP settings | Stdio; install skill under .claude/skills/ if desired |
| Codex | MCP / tools config (stdio) | Same flags as Cursor |
| OpenCode | MCP server block (command/args/env) |
Stdio recommended; HTTP url only if host supports Streamable HTTP |
Compatible: stdio + Zod tool schemas + SERVER_INSTRUCTIONS on initialize.
HTTP (make serve → /mcp): optional; requires Bearer moo_sk…. Prefer stdio for local agents.
Cursor / Claude / Codex / OpenCode config
Same flag shape as the legacy Go gateway. See mcp.json.example:
{
"mcpServers": {
"memoo": {
"command": "node",
"args": [
"/Users/hinha/Projects/hinha/memoo-mcp/dist/index.js",
"--memoo-base-url",
"https://memoo.hinha.web.id",
"--memo-namespace",
"0b00322d-f6ed-45b7-a2e8-b7059f71de34",
"--timeout",
"600s"
],
"env": {
"MEMOO_API_KEY": "moo_sk_xxx"
}
}
}
}
Or via env only (e.g. npx once published):
{
"mcpServers": {
"memoo": {
"command": "npx",
"args": ["-y", "memoo-mcp@latest"],
"env": {
"MEMOO_API_KEY": "moo_sk_xxx",
"MEMOO_NAMESPACE": "0b00322d-f6ed-45b7-a2e8-b7059f71de34",
"MEMOO_BASE_URL": "https://memoo.hinha.web.id",
"MEMOO_TIMEOUT": "600s"
}
}
}
}
Namespace resolution
--memo-namespace / MEMOO_NAMESPACE accepts a UUID or name.
On stdio boot the server calls GET /api/v1/namespaces/{id} (detail), resolves the canonical name, and uses that as the tool default. It does not call list-namespaces for setup.
When a default is configured, agents should omit namespace on tools and should not call memoo_list_namespaces unless the user asks to switch/list other namespaces.
CLI flags
| Flag | Env | Description |
|---|---|---|
--api-key |
MEMOO_API_KEY |
Required for stdio (moo_sk…) |
--memo-namespace |
MEMOO_NAMESPACE |
Required for stdio (UUID or name) |
--memoo-base-url |
MEMOO_BASE_URL |
Default https://memoo.hinha.web.id |
--timeout |
MEMOO_TIMEOUT |
Go-style duration (600s, 5m) or ms |
--timeout-ms |
MEMOO_TIMEOUT_MS |
Timeout in milliseconds |
--api-key-prefix |
MEMOO_API_KEY_PREFIX |
Default moo_sk |
HTTP-only: MEMOO_HOST / MEMOO_PORT (default 127.0.0.1:8787). MCP HTTP path is fixed at /mcp (not configurable). Optional MEMOO_ALLOWED_ORIGINS for CORS Origin allowlist.
Tools
| Tool | Purpose |
|---|---|
search / fetch |
Host compatibility search / episode fetch |
memoo_list_namespaces |
List namespaces (only when discovering / switching) |
memoo_list_episodes |
List episodes |
memoo_search |
Filtered knowledge search |
memoo_ask |
RAG Q&A |
memoo_graph_traverse |
Graph hops from entity_uuid |
memoo_temporal_query |
Point-in-time query |
memoo_create_episode |
Always async → job_id (summarize first; word max = API plan episode_content_words) |
memoo_get_job_status |
Required after every create — poll until completed/failed |
memoo_delete_episode |
Delete episode |
Resources
memoo://namespacesmemoo://healthmemoo://episodes/{namespace}/{id}
HTTP serve
npm run serve
- MCP endpoint:
http://127.0.0.1:8787/mcp(fixed path) - Health:
GET /health - Auth:
Authorization: Bearer moo_sk…(or process envMEMOO_API_KEY)
Skills
MCP tools and skills are separate:
| Piece | What it does |
|---|---|
| memoo-mcp (MCP server) | Registers tools (memoo_search, memoo_ask, …) the agent can call |
Skill (SKILL.md) |
Playbook that teaches the agent when/how to explore a Memoo namespace |
The MCP protocol does not install skills. You copy the skill folder into your agent’s skills directory (or point the host at it).
Shipped skill:
skills/exploring-knowledge-graph/SKILL.md
Name / slash command: exploring-knowledge-graph → often invoked as /exploring-knowledge-graph.
Prerequisites
- Install and enable memoo-mcp (stdio config above) with a valid
MEMOO_API_KEYand--memo-namespace/MEMOO_NAMESPACE. - Restart or reload the MCP server in the host after changing MCP config.
Install the skill
From a clone of this repo (REPO = absolute path to memoo-mcp):
Claude Code
# Personal (all projects)
mkdir -p ~/.claude/skills
cp -R "$REPO/skills/exploring-knowledge-graph" ~/.claude/skills/
# Or project-only (commit with the app repo)
mkdir -p .claude/skills
cp -R "$REPO/skills/exploring-knowledge-graph" .claude/skills/
Cursor
# Personal
mkdir -p ~/.cursor/skills
cp -R "$REPO/skills/exploring-knowledge-graph" ~/.cursor/skills/
# Or project-only
mkdir -p .cursor/skills
cp -R "$REPO/skills/exploring-knowledge-graph" .cursor/skills/
Codex / OpenCode / multi-agent
Many hosts also honor a shared layout:
mkdir -p .agents/skills
cp -R "$REPO/skills/exploring-knowledge-graph" .agents/skills/
Check your host docs if it uses a different path. Structure must stay:
…/skills/exploring-knowledge-graph/SKILL.md
Symlink instead of copy (keeps the skill in sync with this repo):
ln -s "$REPO/skills/exploring-knowledge-graph" ~/.claude/skills/exploring-knowledge-graph
How to use
- Confirm Memoo MCP tools are available in the host (e.g.
memoo_search,memoo_ask). - Automatic: ask something that matches the skill description, for example:
- “Explore how auth evolved in this Memoo namespace”
- “Trace dependencies around payment in the knowledge graph”
- Explicit (Claude Code and hosts with slash skills):
Then add your topic, e.g./exploring-knowledge-graph/exploring-knowledge-graph authentication architecture. - The agent should:
- Use the configured default namespace (skip
memoo_list_namespacesunless you ask to switch) - Call Memoo tools (
memoo_search→memoo_graph_traverse→memoo_list_episodes/fetch→memoo_ask) - Answer in the skill’s exploration format (entities, relationships, timeline, insights)
- Use the configured default namespace (skip
Update / remove
# Update after pulling memoo-mcp
cp -R "$REPO/skills/exploring-knowledge-graph" ~/.claude/skills/
# Remove
rm -rf ~/.claude/skills/exploring-knowledge-graph
Docs
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。