Demo MCP Server
Click on "Deploy 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 Server add 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 TypeScript
π 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
Available Tools
6 toolsaddAddition ToolB
Add two numbers together
Inputs: a (required), b (required).
analyze-textText AnalyzerC
Analyze text and provide statistics
Inputs: text (required).
divideDivision ToolC
Divide two numbers
Inputs: a (required), b (required).
multiplyMultiplication ToolC
Multiply two numbers
Inputs: a (required), b (required).
subtractSubtraction ToolC
Subtract two numbers
Inputs: a (required), b (required).
transform-textText TransformerC
Transform text case and format
Inputs: text (required), operation (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no overlap: mathematical operations (add, subtract, multiply, divide) are separate from text operations (analyze-text, transform-text). The descriptions reinforce this separation, making tool selection unambiguous.
The naming is mostly consistent with clear verb-based patterns: mathematical tools use simple verbs (add, subtract, multiply, divide), while text tools use hyphenated verb-noun forms (analyze-text, transform-text). The minor deviation is the mix of simple verbs and hyphenated forms, but all names are readable and follow logical conventions.
With 6 tools, the count is well-scoped for a demo server covering basic mathematical and text operations. Each tool earns its place by addressing a core function without redundancy, making the set manageable and purposeful.
The tool set covers fundamental operations in two domains: mathematics (addition, subtraction, multiplication, division) and text (analysis, transformation). A minor gap is the lack of more advanced text or math functions, but for a demo server, the coverage is sufficient for basic workflows without dead ends.
Maintenance
Related MCP Connectors
Nifty's MCP server β exposes tasks, projects, messages, and files as tools for AI agents.
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. Thisβ¦
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automatiβ¦
Related MCP Servers
- -licenseBqualityNot gradedmaintenanceA boilerplate project for quickly developing Model Context Protocol (MCP) servers using TypeScript SDK. Includes example tools for calculations and greetings, plus system information resources.23-
- -licenseNot gradedqualityNot gradedmaintenanceA production-ready TypeScript MCP server providing basic tools (add, echo, timestamp), resources (server info, greetings, data access), and prompt templates (analyze, code-review, summarize). Serves as a foundation for building custom MCP servers with extensible architecture.512 npm-
- AlicenseBqualityDmaintenanceA boilerplate project for quickly developing Model Context Protocol (MCP) servers using TypeScript SDK. Includes example tools like calculator and greeting functions, plus system information resources.3ISC
- AlicenseNot gradedqualityDmaintenanceA boilerplate project for quickly developing MCP servers using TypeScript SDK, featuring example tools (calculator, greeting) and resources with Zod schema validation.ISC