Markdown笔记管理服务

一个基于Python和FastMCP SDK的Markdown格式笔记管理服务,支持创建、列表、搜索、更新和删除笔记,并提供AI摘要功能。

  • by sayranovv
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sayranovv/notes-mcp-server

使用说明

📝 备注MCP服务器

用于管理Markdown格式笔记的模型上下文协议(MCP)服务器。使用Python和FastMCP SDK构建。

🌟 特性

  • 创建笔记:创建带有标题、内容和标签的新Markdown注释
  • 列表和筛选器:查看所有笔记或按特定标签筛选
  • 搜索:通过上下文预览在所有笔记中进行全文搜索
  • 更新:将内容附加到带有时间戳的现有笔记中
  • 删除:删除不再需要的笔记
  • 资源:将所有笔记作为单个MCP资源访问
  • AI提示:用于分析和总结笔记的内置提示

📦 安装

先决条件

  • Python 3.10或更高版本
  • 紫外线 包管理器

安装uv

# MacOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Or via pip
pip install uv

再进行

# Using uv (recommended)
uv pip install mcp

# Or using pip
pip install mcp

🚀 快速开始

1.保存服务器

保存 notes_server.py 在您想要的目录中。

2.运行服务器

# Using uv (recommended)
uv run notes_server.py

# Or using python directly
python notes_server.py

3.在Claude Desktop中配置

添加到您的 claude_desktop_config.json:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "notes": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/notes-mcp-server",
        "run",
        "notes_server.py"
      ]
    }
  }
}

Python的替代方案:

{
  "mcpServers": {
    "notes": {
      "command": "python",
      "args": ["/absolute/path/to/notes_server.py"]
    }
  }
}

4.重新启动克劳德桌面

添加配置后,重新启动Claude Desktop以加载MCP服务器。

🛠️ 可用工具

create_note

创建一个带有标题、内容和可选标签的新笔记。

参数:

  • title (string):注释标题
  • content (string):注意Markdown中的内容
  • tags (字符串,可选):逗号分隔的标签

例子:

Create a note titled "Project Ideas" with content "1. Build MCP server\n2. Add search" and tags "work, ideas"

list_notes

列出所有注释及其标题和创建日期。

参数:

  • tag (字符串,可选):按特定标签筛选

例子:

List all notes
List notes with tag "work"

read_note

阅读特定笔记的全部内容。

参数:

  • filename (string):注释的文件名(例如。, 20241106_120000_project_ideas.md)

例子:

Read note "20241106_120000_project_ideas.md"

search_notes

搜索包含特定文本的笔记。

参数:

  • query (string):搜索查询

例子:

Search notes for "Python"

update_note

将内容附加到带有时间戳的现有注释中。

参数:

  • filename (string):注释的文件名
  • content (string):要附加的内容

例子:

Update note "20241106_120000_project_ideas.md" with "3. Implement testing"

delete_note

永久删除笔记。

参数:

  • filename (string):注释的文件名

例子:

Delete note "20241106_120000_old_note.md"

📚 资源

notes://all

将所有笔记作为组合资源访问。可用于上下文感知操作。

💡 提示词

summarize_notes_prompt

生成提示,让AI分析所有笔记并提供:

  1. 主要主题概述
  2. 反复出现的想法或模式
  3. 重要行动项目
  4. 组织建议

📁 文件结构

笔记存储在 notes/ 目录的格式如下:

notes/
├── 20241106_120000_project_ideas.md
├── 20241106_130000_shopping_list.md
└── 20241106_140000_python_notes.md

备注格式

每个注释都是一个包含元数据的Markdown文件:

# Project Ideas

**Created:** 2024-11-06 12:00:00
**Tags:** work, ideas

---

1. Build MCP server
2. Add search functionality
3. Implement testing

🧪 测试

包含一个测试脚本,用于在不连接LLM的情况下验证功能:

python test_notes_server.py

测试脚本将:

  • 创建示例注释
  • 列出和过滤注释
  • 搜索内容
  • 更新和删除笔记
  • 测试所有功能

🔧 配置

Notes目录

默认情况下,笔记存储在 ./notes/。要更改位置,请修改 NOTES_DIR 变量in notes_server.py:

NOTES_DIR = os.path.join(os.path.dirname(__file__), "notes")

文件名生成

注释与时间戳和经过净化的标题一起保存:

  • 格式: YYYYMMDD_HHMMSS_sanitized_title.md
  • 最大标题长度:100个字符
  • 特殊字符被删除
  • 空格转换为下划线

📝 用法示例

创建笔记

"Create a note titled 'Meeting Notes' with content 'Discussed Q4 goals' and tags 'work, meetings'"

查找相关注释

"Search my notes for anything related to 'Python'"

按类别查看注释

"List all notes tagged with 'personal'"

总结笔记

"Use the summarize_notes_prompt to analyze all my notes"

🤝 贡献

欢迎投稿!请随意:

  • 报告错误
  • 建议新功能
  • 提交拉取请求

📄 许可证

这个项目是开源的,可以在MIT许可证下使用。

🔗 资源

⚠️ 局限性

  • 仅基于文本的笔记(无文件附件)
  • 无纸币加密
  • 单笔记目录(无子目录)
  • 仅UTF-8编码

💬 支持

对于问题或疑问:

  1. 检查测试脚本输出以进行调试
  2. 查看笔记目录权限
  3. 确保已安装Python 3.10+
  4. 验证MCP SDK安装

由以下材料制成❤️ 使用 FastMCP