Surya07102000/Notes-MCP-Server
If you are the rightful owner of Notes-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Enhanced MCP Server is a robust and fully functional server designed for centralized communication, service orchestration, and advanced error handling.
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
- Clone the repository:
git clone <repository-url>
cd notes-mcp-server
- Install dependencies:
npm install
- Configure the server (optional):
# The server comes with a default config.json file
# Edit config.json with your settings if needed
- 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 implementationsrc/config/index.js- Configuration managementconfig.json- Server configurationpackage.json- Dependencies and scripts
Services
src/services/CommunicationManager.js- Service orchestrationsrc/services/ResponseManager.js- Response handlingsrc/services/ErrorHandler.js- Error managementsrc/services/ConnectionPool.js- Connection poolingsrc/services/LoadBalancer.js- Load balancingsrc/services/ServiceRegistry.js- Service registrysrc/services/WebSocketManager.js- Real-time WebSocket communicationsrc/services/PerformanceOptimizer.js- Performance optimization and cachingsrc/services/SecurityManager.js- Security, authentication, and validationsrc/services/MonitoringAnalytics.js- Monitoring, metrics, and analytics
Tools
src/tools/listNotes.js- List notes toolsrc/tools/readNote.js- Read note toolsrc/tools/createNote.js- Create note toolsrc/tools/updateNote.js- Update note toolsrc/tools/deleteNote.js- Delete note tool
Testing & Documentation
tests/run-e2e.js- End-to-end test runnertests/e2e/TestSuite.js- Comprehensive test suitequick-test.js- Quick test scripttest-simple.js- Advanced test scripttest-client.js- MCP client for testingREADME.md- This documentationTESTING_GUIDE.md- Detailed testing instructionsPHASE2_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 filetext(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 filetext(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
- 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" }]
};
}
};
}
- 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
- Create a service class:
class MyService {
constructor() {
this.name = 'MyService';
this.version = '1.0.0';
}
async healthCheck() {
return true;
}
}
- 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/- Dependenciesnotes/- User notes (contains sensitive data)*.log- Log files.env*- Environment filescoverage/- Test coverage- IDE files (
.vscode/,.idea/) - OS files (
.DS_Store,Thumbs.db) - Temporary files (
*.tmp,*.temp)
📄 License
ISC License
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests if applicable
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Submit a pull request
🆘 Support
For issues and questions:
- Create an issue in the repository
- Check the
TESTING_GUIDE.mdfor 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