Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Demo MCP Serveradd 15 and 27"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: MCP Server Template
π Project Structure
src/
βββ index.ts # Main entry point
βββ types/ # Type definitions
β βββ index.ts # MCP interfaces and types
βββ services/ # Business logic services
β βββ index.ts # Services barrel export
β βββ module-loader-service.ts # Dynamic module loading
βββ server/ # MCP server wrapper
β βββ index.ts # Server barrel export
β βββ my-mcp-server.ts # Main server implementation
βββ tools/ # MCP tools directory
β βββ index.ts # Auto-loading tools
β βββ calculator-tools.ts # Example arithmetic tools
β βββ text-processing-tools.ts # Example text tools
βββ resources/ # MCP resources directory
β βββ index.ts # Auto-loading resources
β βββ system-info-resources.ts # System information
β βββ config-resources.ts # Configuration data
βββ prompts/ # MCP prompts directory
βββ index.ts # Auto-loading prompts
βββ code-review-prompts.ts # Code analysis prompts
βββ writing-assistance-prompts.ts # Writing help promptsπ οΈ 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:
npm run devProduction Mode
Build and run the server in production:
npm run build
npm startDirect Execution
Run the compiled server directly:
node dist/index.jsπ§ 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:
import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { MCPModule } from "../types/index.js";
async function register(server: McpServer): Promise<void> {
server.registerTool(
"my-tool",
{
title: "My Tool",
description: "Description of what my tool does",
inputSchema: {
param1: z.string().describe("First parameter"),
param2: z.number().describe("Second parameter")
}
},
async ({ param1, param2 }) => ({
content: [
{
type: "text",
text: `Tool result: ${param1} - ${param2}`
}
]
})
);
}
export const myNewTool: MCPModule = {
register,
metadata: {
name: "my-new-tool",
description: "My new tool implementation",
version: "1.0.0",
author: "Your Name"
}
};
export default myNewTool;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:
npm testRun linting:
npm run lintType checking:
npm run type-checkπ 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:
const serverConfig: MCPServerConfig = {
name: "demo-mcp-server",
version: "1.0.0",
capabilities: {
tools: true,
resources: true,
prompts: true,
logging: true
}
};π€ 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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.