Demo MCP Server
A comprehensive boilerplate Model Context Protocol (MCP) server built with TypeScript using Domain-Driven Design patterns and dynamic component loading.
π Features
Domain-Driven Design: Clean architecture with separated concerns
Dynamic Component Loading: File-based automatic loading of MCP components
TypeScript: Full type safety and modern JavaScript features
Dependency Injection: Modular and testable architecture
Example Components: Ready-to-use tools, resources, and prompts
Comprehensive Logging: Detailed startup and operation logging
Graceful Shutdown: Proper cleanup and resource management
π Project Structure
π οΈ Installation
Clone the repository:
git clone <repository-url> cd demo-mcp-dev-1Install dependencies:
npm installBuild the project:
npm run build
π― Usage
Development Mode
Run the server in development mode with hot reloading:
Production Mode
Build and run the server in production:
Direct Execution
Run the compiled server directly:
π§ Available Tools
Calculator Tools
add- Add two numberssubtract- Subtract two numbersmultiply- Multiply two numbersdivide- Divide two numbers (with zero-division protection)
Text Processing Tools
transform-text- Transform text (uppercase, lowercase, capitalize, reverse, word-count)analyze-text- Analyze text and provide detailed statistics
π Available Resources
System Information
system://info- System and environment informationenv://{varName}- Access environment variablesprocess://info- Node.js process information
Configuration
config://app- Application configurationsettings://{category}/{key}- Dynamic configuration settingshealth://status- Health and status information
π Available Prompts
Code Review Prompts
review-code- Comprehensive code review with focus areasrefactor-code- Code refactoring suggestionsdocument-code- Generate code documentation
Writing Assistance
write-email- Professional email generationwrite-technical-doc- Technical documentation creationsummarize-meeting- Meeting summary generation
ποΈ Architecture
Domain-Driven Design
The project follows DDD principles with clear separation of concerns:
Types: Domain interfaces and contracts
Services: Business logic and operations
Server: Infrastructure and MCP integration
Components: MCP-specific implementations (tools, resources, prompts)
Dynamic Component Loading
The ModuleLoaderService automatically discovers and loads MCP components:
Scans component directories for TypeScript/JavaScript files
Dynamically imports modules using file URLs
Validates module contracts
Registers components with the MCP server
Dependency Injection
The MyMCPServer class uses dependency injection patterns:
Abstract base classes for extensibility
Interface-based dependencies
Configurable service injection
Clean separation between SDK and business logic
π Adding New Components
Adding a New Tool
Create a new file in
src/tools/(e.g.,my-new-tool.ts)Export an MCP module with the required structure:
The tool will be automatically loaded on server startup!
Adding a New Resource
Create a new file in
src/resources/(e.g.,my-resource.ts)Export an MCP module following the same pattern as tools
Use
server.registerResource()in the register function
Adding a New Prompt
Create a new file in
src/prompts/(e.g.,my-prompt.ts)Export an MCP module following the same pattern
Use
server.registerPrompt()in the register function
π§ͺ Testing
Run the test suite:
Run linting:
Type checking:
π Debugging
The server provides comprehensive logging during startup and operation:
Component discovery and loading
Registration success/failure
Server status and configuration
Error details and stack traces
π Configuration
The server is configured in src/index.ts:
π€ Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Built with the Model Context Protocol TypeScript SDK
Inspired by Domain-Driven Design principles
Thanks to the MCP community for excellent documentation and examples
Related MCP Servers
- AsecurityAlicenseAqualityTypeScript-based MCP server designed to enhance code editing experiences by providing features such as hover information, code completion, and diagnostics.Last updated -325MIT License
- AsecurityFlicenseAqualityA template for creating Model Context Protocol (MCP) servers in TypeScript, offering features like container-based dependency injection, a service-based architecture, and integration with the LLM CLI for architectural design feedback through natural language.Last updated -177
- -securityFlicense-qualityA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.Last updated -0
- -securityAlicense-qualityA TypeScript framework for building MCP servers with client session management capabilities, supporting tools definition, authentication, image content, logging, and error handling.Last updated -94,160MIT License