dart_node_mcp library

MCP (Model Context Protocol) server bindings for Dart on Node.js.

This package provides typed Dart bindings for the @modelcontextprotocol/sdk npm package, enabling you to build MCP servers in Dart that run on Node.js.

Quick Start

import 'package:dart_node_mcp/dart_node_mcp.dart';
import 'package:nadz/nadz.dart';

Future<void> main() async { // Create server 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), };

// Register a tool server.registerTool( 'echo', (description: 'Echo input back', inputSchema: null, ...), (args, meta) async => ( content: [(type: 'text', text: args['message'] as String)], isError: false, ), );

// Create transport and connect final transportResult = createStdioServerTransport(); final transport = switch (transportResult) { Success(:final value) => value, Error(:final error) => throw Exception(error), };

await server.connect(transport); }

Classes

McpServer

High-level MCP Server (wraps TypeScript McpServer class).

Extension Types

Server

Low-level MCP Server (wraps TypeScript Server class).

StdioServerTransport

Stdio server transport (matches TypeScript StdioServerTransport).

Transport

Transport interface (matches TypeScript Transport type).

Functions

createServer(Implementation serverInfo, {ServerOptions? options}) Result<Server, String>

Create low-level Server.

createStdioServerTransport() Result<StdioServerTransport, String>

Create stdio transport with default stdin/stdout.

createStdioServerTransportWithStreams(JSObject stdin, JSObject stdout) Result<StdioServerTransport, String>

Create stdio transport with custom stdin/stdout streams.

Typedefs

CallToolResult = ({List<Object> content, bool? isError})
Tool call result.
GetPromptResult = ({String? description, List<PromptMessage> messages})
Get prompt result.
ImageContent = ({String data, String mimeType, String type})
Image content in tool results (base64 encoded).
Implementation = ({String name, String version})
Server implementation info (matches TypeScript Implementation type).
JsonRpcMessage = ({Object? error, Object? id, String jsonrpc, String? method, Object? params, Object? result})
JSON-RPC message for transport.
LoggingCapability = ({bool? enabled})
Logging capability configuration.
LoggingMessageParams = ({Object? data, String level, String? logger})
Logging message parameters.
PromptCallback = Future<GetPromptResult> Function(Map<String, String> args)
Prompt callback function type.
PromptConfig = ({Map<String, Object?>? argsSchema, String? description, String? title})
Prompt configuration for registration.
PromptMessage = ({Object content, String role})
Prompt message in prompt results.
PromptsCapability = ({bool? listChanged})
Prompts capability configuration.
ReadResourceCallback = Future<ReadResourceResult> Function(String uri)
Read resource callback function type.
ReadResourceResult = ({List<Object> contents})
Read resource result.
ReadResourceTemplateCallback = Future<ReadResourceResult> Function(String uri, Map<String, String> variables)
Read resource template callback function type.
RegisteredPrompt = ({String name, void Function() remove, void Function(PromptConfig config) update})
Registered prompt returned from registerPrompt.
RegisteredResource = ({String name, void Function() remove, void Function(ResourceMetadata metadata) update, String uri})
Registered resource returned from registerResource.
RegisteredResourceTemplate = ({String name, void Function() remove, void Function(ResourceMetadata metadata) update, String uriTemplate})
Registered resource template returned from registerResourceTemplate.
RegisteredTool = ({void Function() disable, void Function() enable, String name, void Function() remove, void Function(ToolConfig config) update})
Registered tool returned from registerTool.
ResourceContent = ({String? mimeType, String? text, String type, String uri})
Resource content in tool results.
ResourceMetadata = ({String? description, String? mimeType})
Resource metadata.
ResourcesCapability = ({bool? listChanged, bool? subscribe})
Resources capability configuration.
ResourceTemplate = ({String? description, String? mimeType, String? name, String uriTemplate})
Resource template for URI patterns.
ResourceUpdatedParams = ({String uri})
Resource updated notification params.
ServerCapabilities = ({LoggingCapability? logging, PromptsCapability? prompts, ResourcesCapability? resources, ToolsCapability? tools})
Server capabilities.
ServerOptions = ({ServerCapabilities? capabilities, String? instructions})
Server options for initialization.
TextContent = ({String text, String type})
Text content in tool results.
ToolAnnotations = ({bool? destructiveHint, bool? idempotentHint, bool? openWorldHint, bool? readOnlyHint, String? title})
Tool annotations providing hints about tool behavior.
ToolCallback = Future<CallToolResult> Function(Map<String, Object?> args, ToolCallMeta? meta)
Tool callback function type (matches ToolCallback<Args>).
ToolCallMeta = ({String? progressToken})
Tool call metadata.
ToolConfig = ({ToolAnnotations? annotations, String? description, Map<String, Object?>? inputSchema, Map<String, Object?>? outputSchema, String? title})
Tool configuration for registration (matches registerTool config param).
ToolsCapability = ({bool? listChanged})
Tools capability configuration.
TransportCloseCallback = void Function()
Event callback type for transport close.
TransportErrorCallback = void Function(JSAny error)
Event callback type for transport errors.
TransportMessageCallback = void Function(JSObject message)
Event callback type for transport messages.