Skip to content

Commit 5e562b2

Browse files
jakemac53Commit Queue
authored andcommitted
add basic tests for the dart mcp-server command
Change-Id: I7c6071fc7b015f8d7e0cbdf4b2cb2d31358d442c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437140 Reviewed-by: Ben Konyi <[email protected]> Commit-Queue: Ben Konyi <[email protected]> Auto-Submit: Jake Macdonald <[email protected]>
1 parent 4d36ef3 commit 5e562b2

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

pkg/dartdev/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ dependencies:
4343

4444
# Use 'any' constraints here; we get our versions from the DEPS file.
4545
dev_dependencies:
46+
dart_mcp: any
4647
expect: any
4748
lints: any
4849
pub_semver: any
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'dart:io';
6+
7+
import 'package:dart_mcp/client.dart';
8+
import 'package:test/test.dart';
9+
10+
void main() {
11+
group('dart mcp-server', () {
12+
test('can be connected with a client', () async {
13+
final client = TestMCPClient();
14+
addTearDown(client.shutdown);
15+
final serverConnection = await client.connectStdioServer(
16+
Platform.resolvedExecutable,
17+
['mcp-server', '--experimental-mcp-server']);
18+
final initializeResult = await serverConnection.initialize(
19+
InitializeRequest(
20+
protocolVersion: ProtocolVersion.latestSupported,
21+
capabilities: client.capabilities,
22+
clientInfo: client.implementation));
23+
24+
expect(initializeResult.protocolVersion, ProtocolVersion.latestSupported);
25+
serverConnection.notifyInitialized();
26+
27+
expect(
28+
await serverConnection.listTools(ListToolsRequest()),
29+
isNotEmpty,
30+
);
31+
});
32+
33+
test('requires the --experimental-mcp-server flag', () async {
34+
final processResult =
35+
await Process.run(Platform.resolvedExecutable, ['mcp-server']);
36+
expect(processResult.exitCode, isNot(0));
37+
expect(processResult.stderr,
38+
contains('Missing required flag --experimental-mcp-server'));
39+
});
40+
});
41+
}
42+
43+
base class TestMCPClient extends MCPClient {
44+
TestMCPClient()
45+
: super(Implementation(name: 'test client', version: '0.1.0'));
46+
}

0 commit comments

Comments
 (0)