Notes MCP Server
README.md
# 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:
```bash
git clone <repository-url>
cd notes-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Configure the server (optional):
```bash
# The server comes with a default config.json file
# Edit config.json with your settings if needed
```
4. Initialize Git repository (if not already done):
```bash
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:
```bash
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:
```bash
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:
```bash
node quick-test.js
```
### Advanced Testing
For detailed testing:
```bash
node test-simple.js
```
## Usage
### Start the Server
```bash
# 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:
```json
{
"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:**
```json
{
"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:**
```json
{
"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:**
```json
{
"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:**
```json
{
"content": [
{
"type": "text",
"text": "Note 'noteName' updated successfully."
}
]
}
```
#### `delete-note`
Delete a note.
**Parameters:**
- `noteName` (string): Name of the note file
**Response:**
```json
{
"content": [
{
"type": "text",
"text": "Note 'noteName' deleted successfully."
}
]
}
```
## Service Management
### Service Registry
The server maintains a registry of all available services:
```javascript
// 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
```javascript
// Set load balancing strategy
loadBalancer.setStrategy('least-connections');
```
### Health Monitoring
The server provides comprehensive health monitoring:
```javascript
// 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
```javascript
const stats = responseManager.getResponseStats();
// Returns: total, successful, failed, successRate, averageResponseTime
```
### Error Metrics
```javascript
const errorStats = errorHandler.getErrorMetrics();
// Returns: total, byType, byService, recent errors
```
### Connection Pool Stats
```javascript
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
```bash
# 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/`:
```javascript
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" }]
};
}
};
}
```
2. Register the tool in `src/server.js`:
```javascript
import myTool from "./tools/myTool.js";
// Add to toolsList
this.toolsList = [
// ... existing tools
myTool(this.dataDir),
];
```
### Adding New Services
1. Create a service class:
```javascript
class MyService {
constructor() {
this.name = 'MyService';
this.version = '1.0.0';
}
async healthCheck() {
return true;
}
}
```
2. Register the service:
```javascript
serviceRegistry.registerService({
id: 'my-service',
name: 'My Service',
type: 'custom',
version: '1.0.0',
healthCheck: async () => myService.healthCheck()
});
```
## ๐ง Git Setup
### Initialize Git Repository
```bash
# 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
```bash
# 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
TDQS
A3.9/5.0
Scored across 5 tools
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
ResponsivenessNo issues