Nemo
An MCP server that enables users to transform AI conversations into a structured, searchable knowledge base by saving ideas, code snippets, bookmarks, and reminders. It supports persistent storage through Supabase or PostgreSQL and includes webhook integrations for automating workflows with external tools.
README
🧠 Nemo — MCP Server
Turn your AI conversations into a structured, searchable knowledge base.
An MCP (Model Context Protocol) server that lets you save conversations, ideas, code snippets, bookmarks, and reminders directly from Claude, ChatGPT, or any MCP-compatible AI assistant.
📁 Repository Layout
src/— Runtime server codedb/— Public database schema and migrationsdocs/— Product-facing public docsnotes/— Public work-in-progress notes, mockups, and experiments
✨ What It Does
You're chatting with Claude on your phone and the conversation is brilliant. Instead of losing it, you say:
"Save this in Nemo under DevOps, tag it docker and kubernetes"
Claude calls your MCP server, and your knowledge is stored, categorized, and searchable forever.
Available Tools
| Tool | Description |
|---|---|
nemo_save_knowledge |
Save a conversation, idea, snippet, or note |
nemo_search_knowledge |
Full-text search through your knowledge base |
nemo_get_knowledge |
Retrieve a specific entry by ID |
nemo_delete_knowledge |
Delete an entry |
nemo_list_categories |
List all categories with counts |
nemo_add_reminder |
Add a reminder with due date and priority |
nemo_list_reminders |
List pending (or all) reminders |
nemo_complete_reminder |
Mark a reminder as done |
nemo_save_bookmark |
Save a URL with tags and description |
nemo_search_bookmarks |
Search through saved bookmarks |
nemo_list_bookmarks |
List bookmarks by category |
nemo_stats |
Dashboard with counts and categories |
🏗️ Two Deployment Options
Option A: Supabase (Recommended)
Best if you want a managed database with a free tier, REST API for future apps (Flutter, web), and zero database maintenance.
Your Phone → Claude App → Your VPS (MCP Server) → Supabase Cloud (PostgreSQL)
Option B: Self-Hosted (Docker)
Best if you want full data ownership, everything on your VPS, no external dependencies.
Your Phone → Claude App → Your VPS (Docker: MCP Server + PostgreSQL)
🚀 Quick Start — Option A: Supabase
1. Create a Supabase Project
- Go to supabase.com and create a free project
- Go to SQL Editor and run the contents of
db/schema.sql - Go to Settings → API and copy your:
- Project URL (e.g.,
https://abc123.supabase.co) - Service Role Key (⚠️ keep this secret!)
- Project URL (e.g.,
2. Deploy on Your VPS
# Clone the repo
git clone https://github.com/gabriellangon/nemo-mcp.git
cd nemo-mcp
# Install dependencies
npm install
# Build
npm run build
# Configure
cp .env.example .env
# Edit .env with your Supabase credentials:
# STORAGE_TYPE=supabase
# SUPABASE_URL=https://your-project.supabase.co
# SUPABASE_SERVICE_KEY=your-service-role-key
# Test it
node dist/index.js
# Should see: 🧠 Nemo MCP server running on http://0.0.0.0:3100/mcp
3. Keep It Running with pm2
npm install -g pm2
pm2 start dist/index.js --name nemo-mcp
pm2 save
pm2 startup # Auto-start on reboot
4. Set Up HTTPS with Nginx
# Install certbot if not already done
sudo apt install certbot python3-certbot-nginx
# Get SSL certificate
sudo certbot --nginx -d nemo.yourdomain.com
# Copy nginx config
sudo cp nginx.conf /etc/nginx/sites-available/nemo-mcp
# Edit the domain name in the file
sudo ln -s /etc/nginx/sites-available/nemo-mcp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
🚀 Quick Start — Option B: Self-Hosted (Docker)
# Clone the repo
git clone https://github.com/gabriellangon/nemo-mcp.git
cd nemo-mcp
# Configure
cp .env.example .env
# Edit .env:
# STORAGE_TYPE=postgres
# DB_PASSWORD=your-secure-password
# Launch everything
docker compose up -d
# Check logs
docker compose logs -f mcp
Then set up nginx + HTTPS the same way as Option A.
🔌 Connect to Claude
Claude.ai (Web & Mobile)
- Go to Settings → Integrations → MCP
- Add a new integration:
- URL:
https://nemo.yourdomain.com/mcp
- URL:
- Start chatting and say things like:
- "Save this conversation in my brain under the category 'devops'"
- "What did I save about Docker?"
- "Add a reminder for next Friday to review the PR"
- "Bookmark this link: https://..."
Claude Desktop (Local)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"nemo": {
"command": "node",
"args": ["/path/to/nemo-mcp/dist/index.js"],
"env": {
"TRANSPORT": "stdio",
"STORAGE_TYPE": "supabase",
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_KEY": "your-service-role-key"
}
}
}
}
🔗 Webhooks — Connect to Make, Zapier, n8n
Nemo can send events to external services whenever something happens. This lets you build automations like:
- Save to Notion — Every new knowledge entry creates a page in your Notion database
- Google Calendar — New reminders automatically create calendar events
- Slack notifications — Get pinged when you save something important
- Google Sheets — Log all bookmarks to a spreadsheet
- Email digest — Trigger a daily summary via n8n
Quick Setup with Make
- In Make, create a new scenario with a Webhook trigger
- Copy the webhook URL (e.g.
https://hook.eu2.make.com/abc123...) - Add it to your
.env:WEBHOOK_URL=https://hook.eu2.make.com/abc123... - Restart the MCP server
- Now every time you save something via Claude, Make receives the event
Webhook Events
| Event | Triggered when | Data included |
|---|---|---|
knowledge.saved |
New knowledge entry saved | id, title, category, tags, content_preview, source |
knowledge.deleted |
Knowledge entry deleted | id |
reminder.created |
New reminder added | id, title, due_date, priority, description |
reminder.completed |
Reminder marked as done | id |
bookmark.saved |
New bookmark saved | id, url, title, tags, category, description |
Payload Format
Every webhook receives a JSON POST with this structure:
{
"event": "knowledge.saved",
"timestamp": "2025-03-15T14:30:00.000Z",
"data": {
"id": "uuid-here",
"title": "Docker multi-stage builds",
"category": "devops",
"tags": ["docker", "ci-cd"],
"content_preview": "First 300 characters...",
"source": "claude-chat"
}
}
Multiple Webhooks
You can send different events to different services:
WEBHOOKS_JSON='[
{
"url": "https://hook.eu2.make.com/xxx",
"events": ["knowledge.saved", "bookmark.saved"],
"name": "Make - Notion sync"
},
{
"url": "https://hooks.zapier.com/yyy",
"events": ["reminder.created"],
"name": "Zapier - Google Calendar"
},
{
"url": "https://n8n.yourdomain.com/webhook/zzz",
"events": ["*"],
"name": "n8n - Log everything"
}
]'
Security
Add a shared secret for HMAC signature verification:
WEBHOOK_SECRET=your-secret-here
Each request includes an X-Nemo-Signature header with a sha256= HMAC of the payload body. Verify this in your automation to ensure the request comes from your Nemo server.
📱 Future Ideas
- Flutter app to browse your knowledge base (connects directly to Supabase)
- Vector search with pgvector for semantic "find things similar to..."
- Image storage via Supabase Storage
- Export to Markdown/Obsidian
- Daily digest of reminders via email
🛠️ Development
# Install dependencies
npm install
# Development mode (auto-reload)
npm run dev
# Build for production
npm run build
# Run tests (coming soon)
npm test
📄 License
MIT — Use it, fork it, make it yours.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器