Notes MCP Server

Notes MCP Server

Enables note management (create, read, update, delete, list) through MCP, with advanced features including real-time WebSocket communication, performance optimization, security, and monitoring.

Category
访问服务器

README

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

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

  • [x] WebSocket support for real-time communication
  • [x] Authentication and authorization (JWT)
  • [x] API rate limiting and throttling
  • [x] Metrics and monitoring dashboard
  • [x] Performance optimization and caching
  • [x] Comprehensive security features
  • [x] End-to-end testing suite
  • [x] 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

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选