Nemo-MCP服务器
将您的AI对话转化为结构化、可搜索的笔记。
一 MCP(模型上下文协议) 该服务器允许您直接从Claude、ChatGPT或任何兼容MCP的AI助手保存笔记、对话摘要、想法、代码片段、书签和提醒。
免责声明
该项目是实验性的,尚未准备好投入生产使用。
MCP端点尚未得到保护:身份验证和授权尚未实现,因此默认情况下访问不受保护。不要按原样公开此服务器。
在将其用于生产环境之前,您至少应该在HTTP端点周围添加身份验证、访问控制、适当的秘密管理、速率限制和基本的安全强化。
仓库的规划
src/--运行时服务器代码db/--公共数据库模式和迁移docs/--面向产品的公共文档notes/--公共工程进展笔记、模型和实验
它做什么
你正在用手机和克劳德聊天,谈话很精彩。而不是失去它,你说:
*“将此保存在DevOps下的Nemo中,标记为docker和kubernetes”*
Claude调用您的MCP服务器,稍后您的笔记将被存储、分类和搜索。
可用工具
| 工具 | 说明 |
|---|---|
nemo_save_note | 保存对话、想法、片段或笔记 |
nemo_search_notes | 搜索您保存的笔记 |
nemo_get_note | 按ID检索特定钞票 |
nemo_delete_note | 删除注释 |
nemo_list_categories | 列出所有有计数的类别 |
nemo_add_reminder | 添加带有截止日期和优先级的提醒 |
nemo_list_reminders | 列出待处理(或所有)提醒 |
nemo_complete_reminder | 将提醒标记为已完成 |
nemo_save_bookmark | 保存带有标签和描述的URL |
nemo_search_bookmarks | 搜索已保存的书签 |
nemo_list_bookmarks | 按类别列出书签 |
nemo_stats | 带有计数和类别的仪表板 |
两种部署选项
选项A:Supabase(推荐)
如果你想要一个带有免费层的托管数据库,那么最好是为未来的应用程序(Flutter、web)提供REST API,并且零数据库维护。
Your Phone → Claude App → Your VPS (MCP Server) → Supabase Cloud (PostgreSQL)选项B:自托管(Docker)
如果你想要完全的数据所有权,一切都在你的VPS上,没有外部依赖关系,那就最好了。
Your Phone → Claude App → Your VPS (Docker: MCP Server + PostgreSQL)搜索语言
默认情况下,注释的全文搜索配置为法语。
如果你的大部分笔记都是另一种语言的,请更新文本搜索配置,使其与你的目标语言相匹配 db/schema.sql, db/migrations/003_add_notes_search_vector.sql, src/services/supabase-adapter.ts,以及 src/services/postgres-adapter.ts.
______________________________________________________________________
快速入门--选项A:Supabase
1.创建一个Supabase项目
- 首选 网站 supabase.com 并创建一个免费项目
- 首选 SQL编辑器 并运行以下内容
db/schema.sql - 首选 设置→ API 并复制您的:
- 项目URL(例如。, https://abc123.supabase.co) - 服务角色密钥(保密!)
2.在您的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/mcp3.保持pm2运行
npm install -g pm2
pm2 start dist/index.js --name nemo-mcp
pm2 save
pm2 startup # Auto-start on reboot4.使用Nginx设置HTTPS
# 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______________________________________________________________________
快速入门——选项B:自托管(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然后按照选项A的方式设置nginx+HTTPS。
______________________________________________________________________
联系克劳德
Claude.ai(网络和移动)
- 首选 设置→ 集成→ MCP
- 添加新集成:
- 统一资源定位符: https://nemo.yourdomain.com/mcp
- 开始聊天,说以下话:
- *“将此对话保存在我的大脑中的‘devops’类别下”* - *“我为Docker节省了什么?”* - *“添加下周五的提醒以查看PR”* - *“将此链接加入书签:https://..."*
克劳德桌面(本地)
添加到您的 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——连接到制造,Zapier,n8n
每当有事情发生时,Nemo都可以向外部服务发送事件。这使您可以构建以下自动化:
- 保存到Notion --每个新笔记都会在您的Notion数据库中创建一个页面
- Google 日历 --新提醒会自动创建日历事件
- 松弛通知 --保存重要内容时被ping到
- 谷歌表格 --将所有书签记录到电子表格中
- 电子邮件摘要 --通过n8n触发每日摘要
使用Make快速设置
- 在Make中,使用 网络钩子 触发
- 复制webhook URL(例如。
https://hook.eu2.make.com/abc123...) - 将其添加到您的
.env:
WEBHOOK_URL=https://hook.eu2.make.com/abc123...- 重新启动MCP服务器
- 现在,每次你通过克劳德保存东西时,Make都会收到事件
Webhook事件
| 事件 | 触发时间 | 包含数据 |
|---|---|---|
note.saved | 已保存新笔记 | id、标题、类别、标签、content_preview、来源 |
note.deleted | 注释已删除 | id |
reminder.created | 新增提醒 | id、标题、到期日期、优先级、描述 |
reminder.completed | 标记为已完成的提醒 | id |
bookmark.saved | 已保存新书签 | id、url、标题、标签、类别、描述 |
负载格式
每个webhook都会收到一个具有以下结构的JSON POST:
{
"event": "note.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"
}
}多个Webhooks
您可以将不同的事件发送到不同的服务:
WEBHOOKS_JSON='[
{
"url": "https://hook.eu2.make.com/xxx",
"events": ["note.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"
}
]'安全
添加用于HMAC签名验证的共享密钥:
WEBHOOK_SECRET=your-secret-here每个请求都包含一个 X-Nemo-Signature 带有a的标题 sha256= 有效载荷主体的HMAC。在自动化中验证这一点,以确保请求来自您的Nemo服务器。
______________________________________________________________________
未来想法
- Flutter应用程序 浏览您的笔记(直接连接到Supabase)
- 向量搜索 使用pgvector进行语义“查找与…相似的内容”
- 图像存储 通过Supabase存储
- 出口 转Markdown/黑曜石
- 每日摘要 通过电子邮件发送提醒
______________________________________________________________________
发展
# Install dependencies
npm install
# Development mode (auto-reload)
npm run dev
# Build for production
npm run build
# Run tests (coming soon)
npm test许可证
麻省理工学院——使用它,分叉它,让它成为你的。
