Skip to main content
Glama
Surya07102000

Notes MCP Server

Enhanced MCP Server

A comprehensive Model Context Protocol (MCP) server with centralized communication, service orchestration, load balancing, advanced error handling, real-time WebSocket communication, performance optimization, security features, and comprehensive monitoring capabilities.

๐ŸŽฏ Project Status

โœ… FULLY FUNCTIONAL & PRODUCTION-READY - The enhanced MCP server is complete and running successfully!

  • โœ… 100% Test Success Rate - All 12 end-to-end tests passing

  • โœ… All Phase 1 features implemented and tested

  • โœ… All Phase 2 advanced features implemented and tested

  • โœ… Server starts without errors

  • โœ… All 7 core services + 4 advanced services registered and operational

  • โœ… 5 note management tools available

  • โœ… Load balancing and connection pooling active

  • โœ… Error handling and recovery systems operational

  • โœ… Real-time WebSocket communication working

  • โœ… Performance optimization features active

  • โœ… Security features implemented and tested

  • โœ… Comprehensive monitoring and analytics operational

  • โœ… MCP protocol communication verified

  • โœ… File operations working correctly

  • โœ… Production-ready with comprehensive testing suite

Related MCP server: Notes MCP Server

Features

๐Ÿš€ Core Features (Phase 1)

  • Centralized Communication: Unified communication layer for service orchestration

  • Service Orchestration: Advanced service management and coordination

  • Load Balancing: Multiple load balancing strategies (round-robin, least-connections, weighted, etc.)

  • Connection Pooling: Efficient connection management with health monitoring

  • Modular Architecture: Clean separation of concerns with service-based design

๐Ÿ›ก๏ธ Reliability & Performance

  • Circuit Breaker Pattern: Automatic failure detection and recovery

  • Error Handling: Comprehensive error classification and recovery strategies

  • Request/Response Management: Advanced response formatting and caching

  • Health Monitoring: Real-time service health checks and metrics

  • Graceful Shutdown: Clean service termination with resource cleanup

๐Ÿ”ง Middleware & Configuration

  • Middleware System: Pluggable middleware for request/response processing

  • Configuration Management: Environment-based configuration with validation

  • Rate Limiting: Built-in rate limiting and request throttling

  • CORS Support: Cross-origin resource sharing configuration

  • Logging: Structured logging with Winston

๐ŸŒ Advanced Features (Phase 2)

  • Real-time WebSocket Communication: Live chat, notifications, and room management

  • Performance Optimization: Advanced caching (LRU, TTL), compression, async processing

  • Security Features: JWT authentication, input validation, rate limiting, IP blocking

  • Comprehensive Monitoring: Real-time metrics, system monitoring, business analytics

  • End-to-End Testing: Automated test suite with 100% success rate

๐Ÿ”ง Phase 2 Services

  • WebSocketManager: Real-time communication, chat rooms, notifications

  • PerformanceOptimizer: LRU caching, TTL caching, Gzip compression, async processing

  • SecurityManager: JWT authentication, input validation, rate limiting, IP blocking

  • MonitoringAnalytics: Real-time metrics, system monitoring, business analytics, alerting

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Enhanced MCP Server                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Security Layer (JWT Auth, Input Validation, Rate Limiting)โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Middleware Layer (CORS, Compression, Request Processing)  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Request Handler (MCP Protocol Implementation)             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Service Orchestration Layer                               โ”‚
โ”‚  โ”œโ”€โ”€ Communication Manager                                 โ”‚
โ”‚  โ”œโ”€โ”€ Service Registry                                      โ”‚
โ”‚  โ””โ”€โ”€ Load Balancer                                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Advanced Services Layer (Phase 2)                        โ”‚
โ”‚  โ”œโ”€โ”€ WebSocket Manager (Real-time Communication)          โ”‚
โ”‚  โ”œโ”€โ”€ Performance Optimizer (Caching, Compression)         โ”‚
โ”‚  โ”œโ”€โ”€ Security Manager (Auth, Validation, Monitoring)      โ”‚
โ”‚  โ””โ”€โ”€ Monitoring & Analytics (Metrics, Alerts, Reports)    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Infrastructure Layer                                      โ”‚
โ”‚  โ”œโ”€โ”€ Connection Pool                                       โ”‚
โ”‚  โ”œโ”€โ”€ Error Handler                                         โ”‚
โ”‚  โ””โ”€โ”€ Response Manager                                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Tools Layer (Notes Management)                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Installation

  1. Clone the repository:

git clone <repository-url>
cd notes-mcp-server
  1. Install dependencies:

npm install
  1. Configure the server (optional):

# The server comes with a default config.json file
# Edit config.json with your settings if needed
  1. Initialize Git repository (if not already done):

git init
git add .
git commit -m "Initial commit: Enhanced MCP Server"

๐Ÿ“ Project Files

Core Files

  • src/server.js - Main server implementation

  • src/config/index.js - Configuration management

  • config.json - Server configuration

  • package.json - Dependencies and scripts

Services

  • src/services/CommunicationManager.js - Service orchestration

  • src/services/ResponseManager.js - Response handling

  • src/services/ErrorHandler.js - Error management

  • src/services/ConnectionPool.js - Connection pooling

  • src/services/LoadBalancer.js - Load balancing

  • src/services/ServiceRegistry.js - Service registry

  • src/services/WebSocketManager.js - Real-time WebSocket communication

  • src/services/PerformanceOptimizer.js - Performance optimization and caching

  • src/services/SecurityManager.js - Security, authentication, and validation

  • src/services/MonitoringAnalytics.js - Monitoring, metrics, and analytics

Tools

  • src/tools/listNotes.js - List notes tool

  • src/tools/readNote.js - Read note tool

  • src/tools/createNote.js - Create note tool

  • src/tools/updateNote.js - Update note tool

  • src/tools/deleteNote.js - Delete note tool

Testing & Documentation

  • tests/run-e2e.js - End-to-end test runner

  • tests/e2e/TestSuite.js - Comprehensive test suite

  • quick-test.js - Quick test script

  • test-simple.js - Advanced test script

  • test-client.js - MCP client for testing

  • README.md - This documentation

  • TESTING_GUIDE.md - Detailed testing instructions

  • PHASE2_FEATURES.md - Phase 2 features documentation

  • .gitignore - Git ignore rules

Auto-Generated

  • notes/ - Notes storage directory (created automatically)

  • node_modules/ - Dependencies (created by npm install)

Quick Start

The server is ready to run out of the box! Simply start it with:

npm start

You should see output like:

2025-09-12T10:12:33.679Z [INFO] Service registered: tool-list-notes (list-notes)
2025-09-12T10:12:33.685Z [INFO] Service registered: tool-read-note (read-note)
2025-09-12T10:12:33.685Z [INFO] Service registered: tool-create-note (create-note)
2025-09-12T10:12:33.685Z [INFO] Service registered: tool-update-note (update-note)
2025-09-12T10:12:33.685Z [INFO] Service registered: tool-delete-note (delete-note)
2025-09-12T10:12:33.686Z [INFO] Service registered: communication-manager (Communication Manager)
2025-09-12T10:12:33.686Z [INFO] Service registered: load-balancer (Load Balancer)
2025-09-12T10:12:33.688Z [INFO] Starting Enhanced MCP Server...
2025-09-12T10:12:34.364Z [INFO] Enhanced MCP Server started successfully
2025-09-12T10:12:34.365Z [INFO] Server: enhanced-notes-mcp-server v2.0.0
2025-09-12T10:12:34.366Z [INFO] Notes directory: ./notes
2025-09-12T10:12:34.367Z [INFO] Registered tools: 5
2025-09-12T10:12:34.367Z [INFO] Registered services: 7

๐Ÿงช Testing

Comprehensive End-to-End Testing

Run the complete test suite with 100% success rate:

npm test

This will verify all 12 test categories:

  • โœ… Server Startup - Server initialization and startup

  • โœ… Service Registration - All 7 core services + 4 advanced services

  • โœ… MCP Protocol Communication - JSON-RPC protocol handling

  • โœ… Tool Execution - All 5 note management tools

  • โœ… File Operations - File creation, reading, and management

  • โœ… Error Handling - Error scenarios and recovery

  • โœ… Performance - Response times and throughput

  • โœ… Security - Authentication and validation features

  • โœ… WebSocket Communication - Real-time communication

  • โœ… Load Balancing - Load distribution and balancing

  • โœ… Monitoring - Metrics collection and analytics

  • โœ… Graceful Shutdown - Clean server termination

Expected Test Results

๐Ÿš€ Enhanced MCP Server - End-to-End Test Runner
================================================
๐Ÿงช Starting End-to-End Test Suite
=====================================
๐Ÿ” Running: Server Startup
โœ… Server Startup: PASSED (2454ms)
๐Ÿ” Running: Service Registration
โœ… Service Registration: PASSED (1ms)
๐Ÿ” Running: MCP Protocol Communication
โœ… MCP Protocol Communication: PASSED (12ms)
๐Ÿ” Running: Tool Execution
โœ… Tool Execution: PASSED (7ms)
๐Ÿ” Running: File Operations
โœ… File Operations: PASSED (2006ms)
๐Ÿ” Running: Error Handling
โœ… Error Handling: PASSED (4ms)
๐Ÿ” Running: Performance
โœ… Performance: PASSED (2017ms)
๐Ÿ” Running: Security
โœ… Security: PASSED (4ms)
๐Ÿ” Running: WebSocket Communication
โœ… WebSocket Communication: PASSED (1009ms)
๐Ÿ” Running: Load Balancing
โœ… Load Balancing: PASSED (1ms)
๐Ÿ” Running: Monitoring
โœ… Monitoring: PASSED (1ms)
๐Ÿ” Running: Graceful Shutdown
โœ… Graceful Shutdown: PASSED (13ms)

๐Ÿ“Š Test Results Summary
========================
โœ… Passed: 12
โŒ Failed: 0
๐Ÿ“ˆ Success Rate: 100.0%

๐ŸŽ‰ All tests passed! The enhanced MCP server is working perfectly.

Quick Testing

For quick verification:

node quick-test.js

Advanced Testing

For detailed testing:

node test-simple.js

Usage

Start the Server

# Production mode
npm start

# Development mode with auto-reload
npm run dev

# Health check
npm run health

Configuration

The server can be configured via config.json or environment variables:

{
  "server": {
    "name": "enhanced-notes-mcp-server",
    "version": "2.0.0",
    "maxConnections": 100,
    "timeout": 30000
  },
  "services": {
    "orchestration": {
      "enabled": true,
      "maxConcurrentRequests": 50,
      "requestTimeout": 10000
    }
  },
  "middleware": {
    "rateLimit": {
      "enabled": true,
      "windowMs": 900000,
      "maxRequests": 100
    }
  }
}

Environment Variables

  • PORT: Server port (default: 3000)

  • HOST: Server host (default: localhost)

  • LOG_LEVEL: Logging level (default: info)

  • NOTES_DIR: Notes directory path (default: ./notes)

API Reference

MCP Tools

The server provides the following MCP tools:

list-notes

List all available notes.

Parameters: None

Response:

{
  "content": [
    {
      "type": "text",
      "text": "[\"note1.txt\", \"note2.txt\"]"
    }
  ]
}

read-note

Read the content of a specific note.

Parameters:

  • noteName (string): Name of the note file

Response:

{
  "content": [
    {
      "type": "text",
      "text": "Note content here..."
    }
  ]
}

create-note

Create a new note.

Parameters:

  • noteName (string): Name of the note file

  • text (string): Content of the note

Response:

{
  "content": [
    {
      "type": "text",
      "text": "Note 'noteName' created successfully."
    }
  ]
}

update-note

Update an existing note.

Parameters:

  • noteName (string): Name of the note file

  • text (string): New content of the note

Response:

{
  "content": [
    {
      "type": "text",
      "text": "Note 'noteName' updated successfully."
    }
  ]
}

delete-note

Delete a note.

Parameters:

  • noteName (string): Name of the note file

Response:

{
  "content": [
    {
      "type": "text",
      "text": "Note 'noteName' deleted successfully."
    }
  ]
}

Service Management

Service Registry

The server maintains a registry of all available services:

// Get all services
const services = serviceRegistry.getAllServices();

// Get services by type
const toolServices = serviceRegistry.getServicesByType('tool');

// Get service health
const health = serviceRegistry.getRegistryHealth();

Load Balancing

Multiple load balancing strategies are supported:

  • Round Robin: Distributes requests evenly

  • Least Connections: Routes to service with fewest active connections

  • Weighted Round Robin: Considers service weights

  • Least Response Time: Routes to fastest responding service

  • Priority Based: Routes based on service priority

  • Random: Random selection

// Set load balancing strategy
loadBalancer.setStrategy('least-connections');

Health Monitoring

The server provides comprehensive health monitoring:

// Get overall health status
const health = server.getHealthStatus();

// Get service-specific health
const serviceHealth = serviceRegistry.getRegistryHealth();
const loadBalancerHealth = loadBalancer.getHealthStatus();

Error Handling

The server implements sophisticated error handling:

Error Types

  • Service Errors: SERVICE_NOT_FOUND, SERVICE_UNAVAILABLE, SERVICE_TIMEOUT

  • Validation Errors: VALIDATION_ERROR, INVALID_PARAMETERS

  • Authentication Errors: UNAUTHORIZED, FORBIDDEN

  • System Errors: INTERNAL_ERROR, RESOURCE_EXHAUSTED

  • Circuit Breaker Errors: CIRCUIT_BREAKER_OPEN

Recovery Strategies

  • Retry: Automatic retry with exponential backoff

  • Fallback: Graceful degradation with fallback responses

  • Circuit Breaker: Automatic service isolation on failure

Monitoring and Metrics

Response Statistics

const stats = responseManager.getResponseStats();
// Returns: total, successful, failed, successRate, averageResponseTime

Error Metrics

const errorStats = errorHandler.getErrorMetrics();
// Returns: total, byType, byService, recent errors

Connection Pool Stats

const poolStats = connectionPool.getStats();
// Returns: total, available, busy, utilization percentage

Development

Project Structure

enhanced-notes-mcp-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”‚   โ””โ”€โ”€ index.js              # Configuration management
โ”‚   โ”œโ”€โ”€ middleware/
โ”‚   โ”‚   โ””โ”€โ”€ index.js              # Middleware system
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”œโ”€โ”€ CommunicationManager.js  # Service orchestration
โ”‚   โ”‚   โ”œโ”€โ”€ ResponseManager.js       # Response handling
โ”‚   โ”‚   โ”œโ”€โ”€ ErrorHandler.js          # Error management
โ”‚   โ”‚   โ”œโ”€โ”€ ConnectionPool.js        # Connection pooling
โ”‚   โ”‚   โ”œโ”€โ”€ LoadBalancer.js          # Load balancing
โ”‚   โ”‚   โ”œโ”€โ”€ ServiceRegistry.js       # Service registry
โ”‚   โ”‚   โ”œโ”€โ”€ WebSocketManager.js      # Real-time WebSocket communication
โ”‚   โ”‚   โ”œโ”€โ”€ PerformanceOptimizer.js  # Performance optimization and caching
โ”‚   โ”‚   โ”œโ”€โ”€ SecurityManager.js       # Security, authentication, validation
โ”‚   โ”‚   โ””โ”€โ”€ MonitoringAnalytics.js   # Monitoring, metrics, analytics
โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”œโ”€โ”€ listNotes.js         # List notes tool
โ”‚   โ”‚   โ”œโ”€โ”€ readNote.js          # Read note tool
โ”‚   โ”‚   โ”œโ”€โ”€ createNote.js        # Create note tool
โ”‚   โ”‚   โ”œโ”€โ”€ updateNote.js        # Update note tool
โ”‚   โ”‚   โ””โ”€โ”€ deleteNote.js        # Delete note tool
โ”‚   โ”œโ”€โ”€ logger.js                # Logging configuration
โ”‚   โ””โ”€โ”€ server.js                # Main server implementation
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ e2e/
โ”‚   โ”‚   โ””โ”€โ”€ TestSuite.js         # Comprehensive end-to-end test suite
โ”‚   โ””โ”€โ”€ run-e2e.js               # End-to-end test runner
โ”œโ”€โ”€ notes/                       # Notes storage directory (auto-created)
โ”œโ”€โ”€ config.json                  # Server configuration
โ”œโ”€โ”€ package.json                 # Project dependencies and scripts
โ”œโ”€โ”€ README.md                    # This documentation
โ”œโ”€โ”€ TESTING_GUIDE.md            # Detailed testing instructions
โ”œโ”€โ”€ PHASE2_FEATURES.md          # Phase 2 features documentation
โ”œโ”€โ”€ quick-test.js               # Quick test script
โ”œโ”€โ”€ test-simple.js              # Advanced test script
โ”œโ”€โ”€ test-client.js              # MCP client for testing
โ””โ”€โ”€ .gitignore                  # Git ignore rules

Available Scripts

# Start the server
npm start

# Start with auto-reload (development)
npm run dev

# Run comprehensive end-to-end tests
npm test

# Run quick test
npm run test:quick

# Run simple test
npm run test:simple

# Run MCP client test
node test-client.js

# Health check
npm run health

# Start monitoring dashboard
npm run monitor

# Security audit
npm run security

Adding New Tools

  1. Create a new tool file in src/tools/:

export default function myTool(DATA_DIR) {
  return {
    name: "my-tool",
    description: "Description of my tool",
    aliases: ["myTool", "my_tool"],
    inputSchema: {
      type: "object",
      properties: {
        param1: { type: "string", description: "Parameter description" }
      },
      required: ["param1"]
    },
    execute: async ({ param1 }) => {
      // Tool implementation
      return {
        content: [{ type: "text", text: "Tool result" }]
      };
    }
  };
}
  1. Register the tool in src/server.js:

import myTool from "./tools/myTool.js";

// Add to toolsList
this.toolsList = [
  // ... existing tools
  myTool(this.dataDir),
];

Adding New Services

  1. Create a service class:

class MyService {
  constructor() {
    this.name = 'MyService';
    this.version = '1.0.0';
  }
  
  async healthCheck() {
    return true;
  }
}
  1. Register the service:

serviceRegistry.registerService({
  id: 'my-service',
  name: 'My Service',
  type: 'custom',
  version: '1.0.0',
  healthCheck: async () => myService.healthCheck()
});

๐Ÿ”ง Git Setup

Initialize Git Repository

# Initialize git repository
git init

# Add all files
git add .

# Create initial commit
git commit -m "Initial commit: Enhanced MCP Server with centralized communication and service orchestration"

# Add remote origin (replace with your repository URL)
git remote add origin <your-repository-url>

# Push to remote
git push -u origin main

Git Workflow

# Check status
git status

# Add specific files
git add src/server.js

# Commit changes
git commit -m "Update server implementation"

# Push changes
git push origin main

# Create feature branch
git checkout -b feature/new-tool

# Merge feature branch
git checkout main
git merge feature/new-tool

What's Ignored by Git

The .gitignore file excludes:

  • node_modules/ - Dependencies

  • notes/ - User notes (contains sensitive data)

  • *.log - Log files

  • .env* - Environment files

  • coverage/ - Test coverage

  • IDE files (.vscode/, .idea/)

  • OS files (.DS_Store, Thumbs.db)

  • Temporary files (*.tmp, *.temp)

๐Ÿ“„ License

ISC License

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Make your changes

  4. Add tests if applicable

  5. Commit your changes: git commit -m 'Add amazing feature'

  6. Push to the branch: git push origin feature/amazing-feature

  7. Submit a pull request

๐Ÿ†˜ Support

For issues and questions:

  • Create an issue in the repository

  • Check the TESTING_GUIDE.md for troubleshooting

  • Review the logs for error details

๐ŸŽฏ Roadmap

โœ… Completed Features

  • WebSocket support for real-time communication

  • Authentication and authorization (JWT)

  • API rate limiting and throttling

  • Metrics and monitoring dashboard

  • Performance optimization and caching

  • Comprehensive security features

  • End-to-end testing suite

  • Real-time analytics and monitoring

๐Ÿš€ Future Enhancements

  • Database integration for persistent storage

  • Docker containerization

  • Kubernetes deployment manifests

  • GraphQL API support

  • Microservices architecture

  • Distributed caching (Redis)

  • Message queuing (RabbitMQ/Apache Kafka)

  • Advanced AI/ML integration

  • Multi-tenant support

  • Advanced reporting and dashboards

Available Tools

5 tools
create-noteB

Create a new note. Aliases: createNote, create_note

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe note content
noteNameYesThe file name of the note

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states 'Create a new note' and gives no information about return values, side effects, error conditions, or whether existing notes are overwritten. This is a significant gap for a mutation operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single precise sentence plus an alias list, with no filler or redundant content. It is front-loaded and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool being simple with well-documented parameters, the description omits the return value/response format (no output schema exists) and any caveats such as duplicate handling. With sibling tools present, it also lacks guidance on when to choose this over update-note. The description is not complete enough for an agent to confidently invoke and handle the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete descriptions for both parameters (noteName and text), so schema coverage is 100%. The tool description adds no additional parameter-specific meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new note' uses a specific verb and resource, clearly distinguishing it from sibling tools like list-notes, read-note, update-note, and delete-note. The aliases provided are extra but harmless.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for creating new notes, but it does not explicitly state when to use it over update-note, nor does it mention any exclusions or alternatives. The distinction is only implicit via the verb 'create'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-noteB

Delete an existing note. Aliases: deleteNote, delete_note

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNameYesThe file name of the note

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the deletion action without mentioning that deletion is permanent, irreversible, or any error behavior if the note does not exist. This is minimal, leaving the agent uninformed about consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence ('Delete an existing note.') plus an aliases note. No unnecessary words; every word earns its place. It is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with a single parameter and no output schema, the description is complete in terms of syntax but lacks critical context such as irreversibility, permission requirements, or return behavior. Given there are no annotations, the description should compensate, but it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the sole parameter (noteName) with a clear description ('The file name of the note'), achieving 100% schema description coverage. The tool description adds no additional parameter information, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes an existing note, using the verb 'delete' and resource 'note'. This distinguishes it from siblings (list-notes, read-note, create-note, update-note) which perform different actions. The aliases also aid recognition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like update-note or create-note. There is no mention of prerequisites, side effects, or exclusions. Usage is only implied by the verb 'delete'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-notesA

List all note file names. Aliases: listNotes, list_notes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It discloses the core behavior (lists all note file names) but does not specify details such as ordering, potential size limits, or return format. The read-only nature is implied by 'list' but not confirmed, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, with the primary meaning in the first and useful alias information in the second. There is no waste; every token provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers the essential purpose. It does not explicitly state the return type (e.g., array of strings) or any edge-case behavior, but these are highly inferable from the name. Slightly more explicit return info would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is an empty object. Per the baseline rule, the description need not add parameter details. The description adds no parameter-specific semantics, which is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('all note file names'), which is specific and distinct from sibling tools that operate on individual notes. Even without the title, the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (to enumerate note file names) but does not explicitly state when to use this tool versus alternatives. It does not mention exclusions or directly reference sibling tools, leaving the agent to infer based on the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read-noteA

Read the content of a note. Aliases: readNote, read_note

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNameYesThe file name of the note

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic read operation and does not mention return format, error behavior, permissions, or side effects, leaving the agent with limited transparency beyond the obvious read nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with aliases appended, front-loading the key purpose with no wasted words. It is appropriately sized for a simple read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one fully described parameter and no output schema, the description is mostly complete. However, it does not explicitly describe the return value (e.g., note content format), which would enhance completeness. Overall, it is adequate for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, so the baseline is 3. The description adds no extra meaning to 'noteName' beyond the schema's 'The file name of the note', so the score remains at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads the content of a note, using the specific verb 'Read' with a clear resource. Aliases are provided for discoverability, and the purpose is distinct from sibling tools like create, update, delete, and list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through its purpose statement: use this when you need to read a note's content. However, it does not explicitly mention when to avoid it or mention alternative tools, leaving the guidance implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-noteB

Update an existing note. Aliases: updateNote, update_note

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe new note content
noteNameYesThe file name of the note

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It hints that the note must already exist, but does not explain whether it overwrites the entire content, how it handles missing notes, or what the response contains. This is minimal for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no fluff, plus a useful alias list. Every word earns its place, and the main information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters fully documented in the schema. However, behavioral details like overwrite semantics and error handling are absent, and no annotations exist to compensate. This is sufficient for a basic update but leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters (noteName, text) described in the input schema. The description adds no extra meaning beyond the schema, which already clarifies the parameters. Baseline is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'Update an existing note.' This distinguishes it from sibling tools like create-note, delete-note, and read-note, which all handle different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as create-note or read-note. It also omits conditions like requiring the note to already exist, despite implying this with 'existing.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv2.0.0
    • First observedcreate-note
    • First observeddelete-note
    • First observedlist-notes
    • First observedread-note
    • First observedupdate-note

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct action on notes: list, read, create, update, delete. There is no overlap or ambiguity about which tool to use for a given task.

Naming Consistency5/5

All tool names follow a consistent verb-noun pattern (list-notes, read-note, create-note, update-note, delete-note). The aliases also maintain the same pattern across different conventions.

Tool Count5/5

Five tools is perfectly scoped for a notes management server, covering all essential operations without unnecessary extras. Each tool earns its place in the CRUD lifecycle.

Completeness5/5

The tool surface provides full CRUD coverage (create, read, update, delete) plus listing, leaving no obvious dead ends. For a notes server, this is a complete lifecycle.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Surya07102000/Notes-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server