MCP Notes Server

MCP Notes Server

A server for managing notes with full CRUD operations, tagging, and search, compatible with Claude Desktop.

Category
访问服务器

README

MCP Notes Server

A Model Context Protocol (MCP) server for managing notes with full CRUD operations, tagging, and search capabilities.

Features

  • ✅ Create, read, update, and delete notes
  • ✅ Tag-based organization and filtering
  • ✅ Full-text search across notes
  • ✅ Persistent storage (JSON file-based)
  • ✅ Resource exposure via MCP protocol
  • ✅ Compatible with Claude Desktop

Setup Instructions

Prerequisites

  • Python 3.12 or higher
  • pip package manager

Installation

  1. Clone or download this repository

    cd "d:\Projects\AI Engineering course\MCP Server"
    
  2. Install dependencies

    pip install -r requirements.txt
    
  3. Configure Claude Desktop

    Edit your Claude Desktop configuration file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json

    Add the notes server configuration:

    {
      "mcpServers": {
        "notes": {
          "command": "python",
          "args": [
            "d:\\Projects\\AI Engineering course\\MCP Server\\server.py"
          ]
        }
      }
    }
    

    Note: Adjust the path to match your actual installation directory.

  4. Restart Claude Desktop

    After updating the configuration, completely quit and restart Claude Desktop for the changes to take effect.

Available Tools

1. create_note

Creates a new note with content and optional metadata.

Parameters:

  • content (required): The content of the note
  • title (optional): Title for the note (defaults to first line of content)
  • tags (optional): Array of tags for categorization

Example:

{
  "content": "Remember to buy groceries tomorrow",
  "title": "Shopping Reminder",
  "tags": ["personal", "todo"]
}

2. list_notes

Lists all notes with optional filtering and pagination.

Parameters:

  • tag (optional): Filter notes by specific tag
  • limit (optional): Maximum number of notes to return

Example:

{
  "tag": "work",
  "limit": 5
}

3. get_note

Retrieves the full content of a specific note.

Parameters:

  • note_id (required): The ID of the note to retrieve

Example:

{
  "note_id": "1"
}

4. update_note

Updates an existing note's content, title, or tags.

Parameters:

  • note_id (required): The ID of the note to update
  • content (optional): New content for the note
  • title (optional): New title for the note
  • tags (optional): New list of tags

Example:

{
  "note_id": "1",
  "title": "Updated Title",
  "tags": ["work", "important"]
}

5. delete_note

Deletes a note by ID.

Parameters:

  • note_id (required): The ID of the note to delete

Example:

{
  "note_id": "1"
}

6. search_notes

Searches notes by keyword in title or content.

Parameters:

  • query (required): Search keyword or phrase
  • tag (optional): Optional tag filter to narrow search

Example:

{
  "query": "meeting",
  "tag": "work"
}

Available Resources

1. note://{note_id}

Provides direct access to individual notes via URI.

Example: note://1

2. notes://list

Provides a JSON list of all notes with metadata.

Example: notes://list

Example Dialogues

Example 1: Creating and Managing a Todo List

User: Create a note for my grocery shopping list with items: milk, eggs, bread, and cheese.

Claude: I'll create a shopping list note for you.

[Uses create_note tool with content and tags]

Response: ✓ Note created successfully!

  • ID: 1
  • Title: Grocery Shopping List
  • Tags: shopping, personal

User: Show me all my notes.

Claude: Let me list all your notes.

[Uses list_notes tool]

Response: Found 1 note(s):

  • ID: 1 | Grocery Shopping List [shopping, personal] Items needed: milk, eggs, bread, and cheese

User: Add apples to my shopping list.

Claude: I'll update your shopping list to include apples.

[Uses update_note tool with note_id: "1"]

Response: ✓ Note 1 updated successfully! Updated fields: content

Example 2: Work Notes and Search

User: Create a note about tomorrow's team meeting at 10 AM. Tag it as work and important.

Claude: I'll create a note for your team meeting.

[Uses create_note tool]

Response: ✓ Note created successfully!

  • ID: 2
  • Title: Team Meeting - Tomorrow at 10 AM
  • Tags: work, important

User: Create another note: "Review Q4 budget proposal before Friday meeting" with work and finance tags.

Claude: Creating your budget review note.

[Uses create_note tool]

Response: ✓ Note created successfully!

  • ID: 3
  • Title: Review Q4 budget proposal before Friday meeting
  • Tags: work, finance

User: Find all my notes about meetings.

Claude: I'll search for notes containing "meeting".

[Uses search_notes tool with query: "meeting"]

Response: Found 2 note(s) matching 'meeting':

  • ID: 2 | Team Meeting - Tomorrow at 10 AM [work, important] Discuss project updates and timeline...
  • ID: 3 | Review Q4 budget proposal before Friday meeting [work, finance] Review Q4 budget proposal before Friday meeting

Example 3: Organizing with Tags

User: Show me all my work-related notes.

Claude: I'll list all notes tagged with "work".

[Uses list_notes tool with tag: "work"]

Response: Found 2 note(s):

  • ID: 2 | Team Meeting - Tomorrow at 10 AM [work, important] Discuss project updates and timeline...
  • ID: 3 | Review Q4 budget proposal before Friday meeting [work, finance] Review Q4 budget proposal before Friday meeting

User: Delete the meeting note, I don't need it anymore.

Claude: I'll delete note ID 2.

[Uses delete_note tool with note_id: "2"]

Response: ✓ Note 'Team Meeting - Tomorrow at 10 AM' (ID: 2) deleted successfully.


User: What notes do I still have?

Claude: Let me show you your remaining notes.

[Uses list_notes tool]

Response: Found 2 note(s):

  • ID: 1 | Grocery Shopping List [shopping, personal] Items needed: milk, eggs, bread, cheese, and apples
  • ID: 3 | Review Q4 budget proposal before Friday meeting [work, finance] Review Q4 budget proposal before Friday meeting

Known Limitations

  1. Single-User Design: The server stores notes in a local JSON file without user authentication or multi-user support.

  2. No Concurrent Access Protection: Multiple simultaneous operations may lead to race conditions. The server is designed for single-client (Claude Desktop) usage.

  3. Limited Storage Capacity: Uses JSON file storage which may become slow with thousands of notes. Not suitable for large-scale note databases.

  4. No Attachment Support: Currently only supports text content. Images, files, or rich media are not supported.

  5. Basic Search: Search is case-insensitive substring matching. No support for regex, fuzzy matching, or advanced query syntax.

  6. No Note History: Updates overwrite existing content without maintaining version history or undo capability.

  7. No Export/Import: Currently no built-in functionality to export notes to other formats (Markdown, PDF, etc.) or import from external sources.

  8. Tags Are Case-Sensitive: Tags like "Work" and "work" are treated as different tags.

  9. No Nested Tags or Hierarchies: Flat tag structure only; no support for tag hierarchies or nested categories.

  10. Storage File Location: The notes_storage.json file is created in the same directory as server.py. Make sure this directory is writable.

Troubleshooting

Server Not Showing Up in Claude Desktop

  1. Verify the path in claude_desktop_config.json is correct and uses absolute paths
  2. Check that Python 3.12+ is in your PATH
  3. Restart Claude Desktop completely (quit and reopen)
  4. Check Claude Desktop logs for errors

Notes Not Persisting

  1. Ensure the server directory is writable
  2. Check if notes_storage.json is being created in the correct location
  3. Verify no permission errors in the console output

Tool Calls Failing

  1. Verify all required parameters are provided
  2. Check note IDs are valid strings (not integers)
  3. Ensure the MCP package is properly installed

Technical Details

  • Protocol: Model Context Protocol (MCP)
  • Transport: stdio (standard input/output)
  • Storage: JSON file (notes_storage.json)
  • Python Version: 3.12+
  • Dependencies: mcp (official MCP Python SDK)

License

This project is provided as-is for educational purposes.

Contributing

Feel free to submit issues or pull requests to improve the server functionality.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选