mcp-server-ddd-template
README.md
# š MCP Server DDD Template
This repository is a **template implementation** of a Model Context Protocol (MCP) server in Node.js/TypeScript, designed to demonstrate a clean, layered architecture using Domain-Driven Design (DDD) principles. It provides tools to obtain Bitcoin-related information via external APIs.
## ⨠Key Features
- **šļø Template Project:** This codebase serves as a reference template for structuring MCP servers with DDD, ready for customization and production use.
- **š MCP Protocol:** Communicates via _stdio_ using the MCP protocol (`@modelcontextprotocol/sdk`).
- **šļø Layered DDD Architecture:** Clear separation of domain, application, infrastructure, and interface layers.
- **ā” TypeScript:** Fully typed with modern TypeScript for better development experience.
## š Project Structure
```
src/
āāā domain/ # šļø Domain models and response interfaces
ā āāā models/
ā āāā responses/
ā āāā ** interfaces responses **
āāā infrastructure/ # š External API clients and request services
ā āāā interfaces/
ā ā āāā IApiClient.ts
ā āāā services/
ā āāā clients/
ā ā āāā ** client api
ā āāā requests/
ā āāā ** requests services **
āāā application/ # āļø Business logic and helpers
ā āāā services/
ā ā āāā ** services implementation **
ā āāā helpers/
ā āāā ** helpers **
āāā interface/ # š® Controllers (MCP tool registration)
ā āāā controllers/
ā āāā base/
ā ā āāā BaseToolsController.ts
ā āāā **controllers to inteface**
ā āāā index.ts
āāā shared/ # š Shared types/parameters
ā āāā parameters/
ā āāā **interfaces parameters**
āāā main.ts # š Application entry point
```
## š Getting Started
```bash
git clone https://github.com/alexandresanlim/mcp-server-ddd-template.git
cd mcp-server-ddd-template
npm install
npm run build
```
## šÆ Usage
After building, you can run the server directly:
```bash
node build/main.js
```
Or, if registered as a binary (for example, `mcp-server-ddd-template`):
```bash
npm link
mcp-server-ddd-template
```
The server will start on standard output (_stdio_) and wait for MCP requests.
## š ļø Available Tools in this sample
- **š° get-recommended-fees**: Get recommended Bitcoin transaction fees from Mempool.space
- **š ping**: Simple health check endpoint
## š Integration Example
To use this MCP server as a tool provider in a client (e.g., Claude client), you can either reference a local build or use the published npm package.
### š Using Local Build Path
```json
"btc-server": {
"command": "node",
"args": [
"{your project path}/mcp-server-ddd-template/build/main.js"
]
}
```
## š ļø Development
### Build Commands
```bash
# Build for Unix/Linux/macOS
npm run build
# Build for Windows
npm run build:windows
# Run the server
npm run server
```
### Dependencies
- **@modelcontextprotocol/sdk**: MCP protocol implementation
- **zod**: Runtime type validation
- **typescript**: Type safety and compilation
## š¤ Contributing
Pull requests are welcome! Feel free to open issues or suggest improvements for this template repository.
ā **Star this repository if you find it helpful!**TDQS
A3.8/5.0
Scored across 3 tools
Disambiguation5/5
Each tool targets a distinct purpose: block details, health check, and fee recommendations. There is no overlap or ambiguity.
Naming Consistency5/5
All tools follow a consistent 'get-' prefix with hyphenated lowercase naming, forming a clear pattern.
Tool Count4/5
Three tools is a reasonable count for a minimal Bitcoin service, though the server's purpose as a template might justify even fewer.
Completeness3/5
The set covers block retrieval, health checking, and fee recommendations, but lacks common Bitcoin operations like transaction handling, making it somewhat incomplete for a full service.
Maintenance
ActivityInactive
ResponsivenessNo issues