智能笔记服务器

一个基于Model Context Protocol (MCP)的AI笔记服务器,支持通过自然对话保存、搜索和组织笔记。

  • by rushxbh910
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 rushxbh910/advanced_mcp_server_from_scratch

使用说明

备注MCP服务器

人工智能驱动的“第二大脑” 模型上下文协议(MCP) 服务器。将其连接到Claude Desktop、Cursor或任何兼容MCP的客户端,并通过自然对话开始保存、搜索和组织笔记。

现场演示: https://mcp-proj-production.up.railway.app/mcp


它的作用

你可以自然地与你的AI助手交谈。它在幕后调用正确的工具。

你说 会发生什么
“保存注释:始终使用pgvector余弦距离” 注释已保存+嵌入,用于语义搜索
“查找我关于数据库的笔记” 在所有笔记中进行矢量相似性搜索
“我的待办事项是什么?” 提取标记为任务/待办事项的笔记
“为今天制作我的单口相声” 过去24小时内创建的笔记报告
“将我的笔记组织成主题” K-Means按主题对笔记进行分组
“用我的项目智慧来审查这段代码” 将所有笔记作为AI上下文加载

技术栈

层 技术
MCP框架 FastMCP
数据库 PostgreSQL+ pg向量
嵌入件 sentence-transformers (all-MiniLM-L6-v2)
聚类 scikit-learn K-Means
认证 停止 JWT(OAuth 2.0)
部署 Docker+ 铁路

工具

工具 说明
add_note 保存笔记。URL是自动抓取的。自动检测到TODO。嵌入以进行搜索。
get_my_notes 按类别列出所有笔记。
search_notes 使用pgvector余弦距离进行语义向量搜索。
update_note 编辑笔记并自动重新嵌入。
delete_note 按ID删除注释
extract_todos 列出标记为任务/行动项的所有笔记。
generate_standup_report 过去24小时的笔记,格式为单口相声。
organize_my_notes K-Means聚类,按主题自动对笔记进行分类。

资源: note://{id} --将特定注释直接读入AI上下文。
提示: project_onboarding --将所有笔记作为AI系统上下文注入。


使用托管实例

不想部署自己的?直接连接到实时服务器:

  1. 将此添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
  "mcpServers": {
    "notes": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp-proj-production.up.railway.app/mcp"]
    }
  }
}
  1. 重新启动Claude Desktop——就是这样。无需注册,无需部署。

注: 托管实例需要邀请才能获得隔离的工作区。如果没有身份验证,所有用户共享相同的笔记池。要请求访问权限,请在此仓库上打开一个问题。


部署您自己的实例

看 部署.md 完整的指南。简短版本:

  1. 分叉此回购
  2. 创建一个 铁路 项目→ 从GitHub部署→ 添加PostgreSQL插件
  3. 设置环境变量(请参见 .env.example)
  4. Railway构建Docker镜像并自动部署

Dockerfile在构建时预下载嵌入模型,没有冷启动延迟。


在本地运行

要求: Python 3.12+, 紫外线,Docker

git clone https://github.com/your-username/advanced-mcp-server-from-scratch
cd advanced-mcp-server-from-scratch

cp .env.example .env
# Edit .env: set DATABASE_URL and AUTH_ENABLED=false for local dev

docker compose up db -d          # Start PostgreSQL only
uv run python main.py            # Start the MCP server

服务器运行于 http://localhost:8000/mcp.


连接到克劳德桌面

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

{
  "mcpServers": {
    "notes": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-railway-domain.up.railway.app/mcp"]
    }
  }
}

重新启动克劳德桌面。笔记工具将在每次对话中提供。

光标/其他MCP客户端: 在MCP设置中使用相同的URL。


多用户隔离

随着 AUTH_ENABLED=true 每个用户在连接之前都通过OAuth进行身份验证。他们的笔记是完全隔离的,存储在他们的Stytch用户ID下。没有用户可以看到其他人的笔记。

看 部署.md 了解Stytch设置步骤。


环境变量

变量 描述
DATABASE_URL PostgreSQL连接字符串
AUTH_ENABLED true 为了要求Stytch认证, false 对于dev
BASE_URL 此服务器的公共URL(用于OAuth元数据)
STYTCH_DOMAIN 您的Stytch项目域名
STYTCH_PROJECT_ID 您的Stytch项目ID
ALLOWED_ORIGINS 逗号分隔的CORS源(空白=允许所有)
PORT 服务器端口(默认 8000)

看 .env.example 对于模板。