dart_node_mcp
MCP (Model Context Protocol) server bindings for Dart on Node.js. Build AI tool servers that can be used by Claude, GPT, and other AI assistants.
Installation
dependencies:
dart_node_mcp: ^0.11.0-beta
nadz: ^0.9.0
Also install the npm package:
npm install @modelcontextprotocol/sdk
Quick Start
import 'package:dart_node_mcp/dart_node_mcp.dart';
import 'package:nadz/nadz.dart';
Future<void> main() async {
final serverResult = McpServer.create((name: 'my-server', version: '1.0.0'));
final server = switch (serverResult) {
Success(:final value) => value,
Error(:final error) => throw Exception(error),
};
server.registerTool(
'echo',
(description: 'Echo input back', inputSchema: null),
(args, meta) async => (
content: [(type: 'text', text: args['message'] as String)],
isError: false,
),
);
final transport = switch (createStdioServerTransport()) {
Success(:final value) => value,
Error(:final error) => throw Exception(error),
};
await server.connect(transport);
}
Core Concepts
Server Creation
Create an MCP server with a name and version:
final serverResult = McpServer.create((name: 'my-server', version: '1.0.0'));
Registering Tools
Tools are functions that AI assistants can call. Register them with a name, description, and handler:
server.registerTool(
'greet',
(
description: 'Greet a user by name',
inputSchema: {
'type': 'object',
'properties': {
'name': {'type': 'string', 'description': 'Name to greet'},
},
'required': ['name'],
},
),
(args, meta) async {
final name = args['name'] as String;
return (
content: [(type: 'text', text: 'Hello, $name!')],
isError: false,
);
},
);
Transport
Connect to clients using stdio transport (standard for MCP):
final transport = switch (createStdioServerTransport()) {
Success(:final value) => value,
Error(:final error) => throw Exception(error),
};
await server.connect(transport);
Compile and Run
# Compile Dart to JavaScript
dart compile js -o server.js lib/main.dart
# Run with Node.js
node server.js
Use with Claude Code
Add your MCP server to Claude Code:
claude mcp add --transport stdio my-server -- node /path/to/server.js
Example: Too Many Cooks
The Too Many Cooks MCP server is built with dart_node_mcp. It provides multi-agent coordination for AI assistants editing the same codebase.
Source Code
The source code is available on GitHub.