About Dart MCP Server Template
Dart MCP Server Template is a starter repository for developers building MCP-compatible server applications in Dart. It provides server entrypoints for several transports, a basic project structure, and Docker configuration.
Key features
- 01Entrypoints for stdio, SSE, and HTTP streaming
- 02Basic MCP server implementation
- 03Integration with mcp_dart
- 04Docker configuration included
Use cases
- 01Start a Dart MCP server project
- 02Run a server with a selected transport
- 03Build and run the server with Docker
MCP support
The template provides an MCP server implementation that MCP clients can connect to over stdio, SSE, or HTTP streaming.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEDart MCP Server Template
A template repository for creating Dart server applications compatible with MCP (Model Control Protocol). This template provides a starting point with Docker configuration, server implementations, and basic project structure.
About This Template
This template includes:
- A streamable HTTP server implementation for MCP
- Docker configuration for easy deployment
- Basic project structure with lib, bin, and test directories
- Integration with the mcp_dart package
Project Structure and Features
Server Implementation
-
bin/ - Contains executable Dart files to start the server via different transport methods:
dart bin/stdio_server.dart: Start server with standard I/O transport.dart bin/sse_server.dart: Start server with Server-Sent Events transport.dart bin/streamable_http_server.dart: Start server with HTTP streaming transport.- All these executables use the core server implementation defined in
lib/src/server.dart.
-
lib/src/server.dart - Sets up a basic MCP server. This is where the bulk of your custom code will go.
In-Memory Stream Transport
You can connect a Dart client and server entirely in memory using the IOStreamTransport. Here is an end-to-end example.
Using This Template
Clone this repository and manually update the package name:
git clone https://github.com/jhgaylor/dart-mcp-server-template.git my_new_mcp_server
cd my_new_mcp_server
# Update the package name throughout the codebase
find . -type f -name "*.dart" -o -name "pubspec.yaml" | xargs sed -i 's/dart_mcp_server_template/my_new_mcp_server/g'
# Update the package name in the repository URL
find . -type f -name "*.md" -o -name "Dockerfile" | xargs sed -i 's/dart-mcp-server-template/my-new-mcp-server/g'
# Rename the files
find . -type f -name "*dart_mcp_server_template*" | while read file; do mv "$file" "${file//dart_mcp_server_template/my_new_mcp_server}"; done
# Remove the .git directory to start fresh
rm -rf .git
# Initialize a new git repository
git init
Then update the package name in pubspec.yaml and throughout the codebase.
Getting Started
After creating your project from this template:
- Update the
pubspec.yamlwith your project details - Modify the configuration in
lib/src/config.dartas needed - Implement your custom server logic
- Run the server using one of the provided entrypoints:
dart bin/stdio_server.dart(Standard I/O)dart bin/sse_server.dart(Server-Sent Events)dart bin/streamable_http_server.dart(HTTP streaming)
Docker Deployment
This template includes a Dockerfile for easy containerization:
# Build the Docker image
docker build -t my-mcp-server .
# Run the container
docker run -p 3000:3000 my-mcp-server
License
This template is released under the MIT License. When you generate your own application from this template, you are free to choose any license for your project; the template does not impose a specific license on your generated code.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.