MCP HubMCP Hub
9Ninety

MCPNotes

by: 9Ninety

A simple note-taking MCP server for recording and managing notes with AI models.

21created 22/12/2024
Visit
AI
notes

πŸ“ŒOverview

Purpose: MCP Notes Server aims to facilitate the recording and management of complex notes and tasks, leveraging AI models while maintaining simplicity and privacy.

Overview: MCP Notes Server is a note-taking application built on the Model Context Protocol (MCP). It includes a dual-server architecture, consisting of a Node.js server for AI-driven note management and a web server that offers a user-friendly interface for manual note interactions. The application uses AWS DynamoDB for secure note storage, with a focus on flexible personal note management without public project dependencies.

Key Features:

  • Dual Server Architecture: Comprises an MCP server for AI-driven note management and a web server for user interaction, enhancing usability.

  • AI-Powered Note Taking: Facilitates the recording of thoughts and tasks through AI interactions, promoting efficiency in note management.

  • Comprehensive Note Management: Offers a full suite of note operations (create, list, retrieve, update, delete) via both AI and web interfaces, ensuring versatile user access.

  • Reliable Storage: Utilizes AWS DynamoDB for secure and efficient note storage, providing reliability and scalability.

  • Flexible Authentication: Supports connection via AWS credentials or environment variables, simplifying configuration for users.

  • Project-Independent: Allows personal note storage independent of project files, enhancing user privacy and flexibility in note-taking.


πŸ“ MCP Notes

✨ Overview

MCP Notes Server is a simple note-taking application built on the MCP protocol. It enables users to record and view complex notes and tasks while utilizing AI models for personal thoughts, inspirations, and insights. It does not rely on project files, allowing users to record any content privately.

This project includes two servers: a Node.js server using the Model Context Protocol (MCP) for AI-driven note management and a web server that provides a user-friendly interface for manual note interaction.

Note: This project requires AWS DynamoDB for note storage. An AWS account is needed, but DynamoDB has a generous free tier for personal use.


🎯 Core Features

  • πŸ–₯️ Dual Server Architecture: MCP server for AI-driven note management and Web server for user interface
  • πŸ€– AI-Powered Note Taking: Record thoughts, insights, and tasks via AI interactions
  • πŸ—‚οΈ Comprehensive Note Management: Create, list, retrieve, update, and delete notes via AI or web interface
  • πŸ“‹ Reliable Storage: Secure note storage with AWS DynamoDB
  • πŸ” Flexible Authentication: Support for AWS credentials via connection strings or environment variables
  • πŸ“ Project-Independent: Store personal notes without affecting project files or structure

πŸ€– Model Support

Compatible with any model supporting function calls as long as the client supports MCP. Tested models include:

  • Claude 3.5 Series
  • Gemini 1.5 and 2.0 Series
  • GPT-4 Series
  • Mistral Large
  • Grok-2
  • DeepSeek Chat

πŸ› οΈ Installation

Recommended:
Run directly with npx or bunx.

Alternative:

  1. Ensure Node.js is installed.
  2. Clone the repository and install dependencies: npm install
  3. Configure tools like Claude Desktop as described.

βš™οΈ Credential Configuration

Connection String

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

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

Environment Variables

  1. Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
  2. Use connection URI without credentials:
    dynamodb://us-east-1/mcp-notes

πŸ€– Integration with Tools

Claude Desktop

Add to 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"
      ]
    }
  }
}

Alternatively, run from local file:

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

Cody

Currently limited MCP server support:

  • Only one server connection.
  • Cannot make tool calls.
  • Use web interface to create/manage notes, then reference them in AI chat.

Add to VS Code settings:

{
  "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"
      ]
    }
  }
}

Alternatively, use with npx (not guaranteed):

{
  "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

Add to cline_mcp_settings.json:

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

πŸš€ Running Web Servers

Launch the web interface to manage notes:

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

or

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

Alternatively, compile and run:

npm run build
node dist/notes-mcp-server.js
node dist/notes-web-server.js

Open your browser at http://localhost:3100 to view and manage notes.


πŸ”§ Available MCP Tools

listNotes

  • Input: { tags?: string[] }
  • Output: Array of notes, optionally filtered by tags.

getNote

  • Input: { id: string }
  • Output: Note object matching the ID or "not found" message.

writeNote

  • Input: { id: string, title: string, summary: string, tags: string[], content: string }
  • Output: Success confirmation.

deleteNote

  • Input: { id: string }
  • Output: Deletion confirmation message.

πŸ“ Data Structure

Notes are structured as:

  • id: Unique identifier (e.g., "meeting-notes-1362")
  • title: Note title
  • summary: Short summary
  • tags: Array of tags (e.g., ["meeting", "project-x"])
  • content: Main note content