返回市场
笔记管理器

笔记管理器

作者:9Ninety29 星标更新:2025-05-02

项目介绍

📝 MCP Notes

MCP Notes 封面图片

✨ 概述

MCP Notes 服务器 是一个基于 MCP 协议构建的简单笔记应用程序。其目的是让用户能够利用 AI 模型记录和查看复杂的笔记和任务,例如个人想法、笔记、灵感和见解。它不需要创建项目文件,允许用户记录任何内容而不将其公开在项目中。

该项目包括两个服务器:一个使用模型上下文协议(MCP)进行 AI 驱动的笔记管理的 Node.js 服务器,以及一个提供用户友好界面以手动与笔记互动的 Web 服务器。

注意: 此项目需要 DynamoDB 来存储笔记。您需要一个 AWS 账户来使用它。AWS 提供了慷慨的 DynamoDB 免费层级,使其适合频繁的个人使用且无需费用。


🎯 核心功能

  • 🖥️ 双服务器架构: 使用 MCP 服务器进行 AI 驱动的笔记管理和 Web 服务器提供用户界面
  • 🤖 AI 助力的笔记记录: 通过 AI 交互记录想法、见解和任务
  • 🗂️ 全面的笔记管理: 通过 AI 或 Web 界面创建、列出、检索、更新和删除笔记
  • 📋 可靠的存储: 使用 AWS DynamoDB 进行安全高效的笔记存储
  • 🔐 灵活的身份验证: 支持通过连接字符串或环境变量使用 AWS 凭证
  • 📝 独立于项目: 存储个人笔记而不影响项目文件或结构

🤖 模型支持

您可以使用任何支持函数调用的模型,只要您的客户端支持 MCP。以下模型已经过测试并确认可以工作:

  • Claude 3.5 系列
  • Gemini 1.5 和 2.0 系列
  • GPT-4 系列
  • Mistral 大型
  • Grok-2
  • DeepSeek Chat

🛠️ 安装

推荐

直接运行 npxbunx,参见下面的例子。

替代方案

  1. 确保您的系统上已安装 Node.js
  2. 克隆此仓库并安装依赖项:npm install
  3. 如下配置 Claude Desktop 或其他工具

⚙️ 凭证配置

连接字符串

dynamodb://<access_key>:<secret_key>@<region>/<table>

示例:dynamodb://AKIAXXXXXXXX:SKXXXXXXXX@us-east-1/mcp-notes

环境变量

  1. 导出 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  2. 在 URI 中提供不带凭证的连接信息:dynamodb://us-east-1/mcp-notes

🤖 工具集成

Claude Desktop

将以下片段添加到 claude_desktop_config.json

{
  "mcpServers": {
    "mcp-notes": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "mcp-notes",
        "mcp-notes-server",
        "--dynamodb",
        "dynamodb://access_key:secret_key@region/table"
      ]
    }
  }
}

或本地磁盘上的文件:

{
  "mcpServers": {
    "mcp-notes": {
      "command": "node",
      "args": [
        "file://path/to/notes-mcp-server.js",
        "--dynamodb",
        "dynamodb://access_key:secret_key@region/table"
      ]
    }
  }
}

Cody

注意: 目前,Cody 对 MCP 服务器的支持有限。
它仅允许一个服务器连接,并且无法进行工具调用。您需要使用 Web 界面来创建和管理笔记,然后在 AI 聊天对话中引用它们。

将以下片段添加到您的 VS Code 设置中:

{
  "openctx.providers": {
    "https://openctx.org/npm/@openctx/provider-modelcontextprotocol": {
      "nodeCommand": "node",
      "mcp.provider.uri": "file://path/to/notes-mcp-server.js",
      "mcp.provider.args": [
        "--dynamodb",
        "dynamodb://access_key:secret_key@region/table"
      ]
    }
  }
}

或者使用 npx(不保证能工作):

{
  "openctx.providers": {
    "https://openctx.org/npm/@openctx/provider-modelcontextprotocol": {
      "nodeCommand": "node",
      "mcp.provider.uri": "file:///usr/local/bin/npx",
      "mcp.provider.args": [
        "-y",
        "-p",
        "mcp-notes",
        "mcp-notes-server",
        "--dynamodb",
        "dynamodb://access_key:secret_key@region/table"
      ]
    }
  }
}

Cline

将以下片段添加到 cline_mcp_settings.json

您会在“新建任务”按钮旁边找到一个“MCP 服务器”图标,然后有一个“编辑 MCP 设置”按钮来打开此文件。

{
  "mcpServers": {
    "mcp-notes": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "mcp-notes",
        "mcp-notes-server",
        "--dynamodb",
        "dynamodb://access_key:secret_key@region/table"
      ]
    }
  }
}

🚀 运行 Web 服务器

Web 服务器提供了一个用户友好的界面来管理您的笔记。您可以启动 Web 界面来管理您的笔记,为 AI 添加新笔记,或修改 AI 生成笔记的部分内容。

npx -p mcp-notes mcp-notes-web-server --dynamodb "dynamodb://access_key:secret_key@region/table"
bun src/notes-web-server.ts --dynamodb "dynamodb://access_key:secret_key@region/table"

另外,您可以使用 npm run build 编译,然后运行 node dist/notes-mcp-server.jsnode dist/notes-web-server.js

然后在浏览器中导航到 http://localhost:3100 查看笔记。


🔧 可用的 MCP 工具

listNotes

  • 输入: { tags?: string[] }
  • 输出: 所有笔记的数组,可选按标签过滤。

getNote

  • 输入: { id: string }
  • 输出: 匹配给定 ID 的单个笔记对象,如果没有匹配则返回“未找到”消息。

writeNote

  • 输入: { id: string, title: string, summary: string, tags: string[], content: string }
  • 输出: 成功确认消息。

deleteNote

  • 输入: { id: string }
  • 输出: 删除确认消息 🚮。

📝 数据结构

笔记使用以下结构存储:

  • id:笔记的唯一标识符。它应该是描述性的,并带有随机数字后缀,如“会议笔记-1362”。
  • title:笔记的标题。
  • summary:笔记内容的简短摘要。
  • tags:与笔记关联的标签数组(例如,["会议", "项目X"])。
  • content:笔记的主要内容。

📸 截图

Claude Desktop

✅ 完整功能

Claude Desktop 中 MCP Notes 工具调用的截图 Claude Desktop 中 MCP Notes 资源的截图

Cody

✅ 通过资源提及笔记

❎ 不支持工具调用

Cody 中 MCP Notes 的截图

Cline

✅ 完整功能,支持工具调用

❓ 资源似乎不起作用;需要帮助。

<img src="./assets/screenshot-cline-tool-calling.png" alt="Cline 中 MCP Notes 的截图" style="max-height: 1200px;">