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:
- Install dependencies:
- Build the project:
🎯 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
A comprehensive TypeScript boilerplate MCP server featuring domain-driven design and dynamic component loading. Provides example tools for calculations and text processing, system resources, and writing assistance prompts.
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 -324MIT 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 -117
- -securityFlicense-qualityA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.Last updated -1
- -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 -51,200MIT License