Skip to content

Commit 1f08fe9

Browse files
authored
add 'additionalProperties: false' to most schemas (#321)
1 parent 058f8f5 commit 1f08fe9

File tree

10 files changed

+29
-6
lines changed

10 files changed

+29
-6
lines changed

pkgs/dart_mcp_server/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
instead of DTD URI.
99
- Add a tool for reading package: URIs. Results are returned as embedded
1010
resources or resource links (when reading a directory).
11+
- Add `additionalProperties: false` to most schemas so they provide better
12+
errors when invoked with incorrect arguments.
1113

1214
# 0.1.1 (Dart SDK 3.10.0)
1315

pkgs/dart_mcp_server/lib/src/mixins/analyzer.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ base mixin DartAnalyzerSupport
464464
description: 'Analyzes specific paths, or the entire project, for errors.',
465465
inputSchema: Schema.object(
466466
properties: {ParameterNames.roots: rootsSchema(supportsPaths: true)},
467+
additionalProperties: false,
467468
),
468469
annotations: ToolAnnotations(title: 'Analyze projects', readOnlyHint: true),
469470
);
@@ -489,6 +490,7 @@ base mixin DartAnalyzerSupport
489490
'and locations. Be sure to check the name of the responses to ensure '
490491
'it looks like the thing you were searching for.',
491492
required: [ParameterNames.query],
493+
additionalProperties: false,
492494
),
493495
annotations: ToolAnnotations(title: 'Project search', readOnlyHint: true),
494496
);
@@ -542,6 +544,7 @@ final _locationSchema = Schema.object(
542544
),
543545
},
544546
required: [ParameterNames.uri, ParameterNames.line, ParameterNames.column],
547+
additionalProperties: false,
545548
);
546549

547550
extension on Root {

pkgs/dart_mcp_server/lib/src/mixins/dash_cli.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ base mixin DashCliSupport on ToolsSupport, LoggingSupport, RootsTrackingSupport
184184
annotations: ToolAnnotations(title: 'Dart fix', destructiveHint: true),
185185
inputSchema: Schema.object(
186186
properties: {ParameterNames.roots: rootsSchema()},
187+
additionalProperties: false,
187188
),
188189
);
189190

@@ -193,6 +194,7 @@ base mixin DashCliSupport on ToolsSupport, LoggingSupport, RootsTrackingSupport
193194
annotations: ToolAnnotations(title: 'Dart format', destructiveHint: true),
194195
inputSchema: Schema.object(
195196
properties: {ParameterNames.roots: rootsSchema(supportsPaths: true)},
197+
additionalProperties: false,
196198
),
197199
);
198200

@@ -213,6 +215,7 @@ base mixin DashCliSupport on ToolsSupport, LoggingSupport, RootsTrackingSupport
213215
ParameterNames.roots: rootsSchema(supportsPaths: true),
214216
ParameterNames.testRunnerArgs: cliSchema,
215217
},
218+
additionalProperties: false,
216219
),
217220
);
218221
}();
@@ -258,6 +261,7 @@ base mixin DashCliSupport on ToolsSupport, LoggingSupport, RootsTrackingSupport
258261
ParameterNames.projectType,
259262
ParameterNames.root,
260263
],
264+
additionalProperties: false,
261265
),
262266
);
263267

pkgs/dart_mcp_server/lib/src/mixins/dtd.dart

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,7 @@ base mixin DartToolingDaemonSupport
921921
inputSchema: Schema.object(
922922
properties: {ParameterNames.uri: Schema.string()},
923923
required: const [ParameterNames.uri],
924+
additionalProperties: false,
924925
),
925926
);
926927

@@ -944,6 +945,7 @@ base mixin DartToolingDaemonSupport
944945
'relevant before reading them again.',
945946
),
946947
},
948+
additionalProperties: false,
947949
),
948950
);
949951

@@ -955,7 +957,7 @@ base mixin DartToolingDaemonSupport
955957
'current state. Requires "${connectTool.name}" to be successfully '
956958
'called first.',
957959
annotations: ToolAnnotations(title: 'Take screenshot', readOnlyHint: true),
958-
inputSchema: Schema.object(),
960+
inputSchema: Schema.object(additionalProperties: false),
959961
);
960962

961963
@visibleForTesting
@@ -977,7 +979,7 @@ base mixin DartToolingDaemonSupport
977979
'relevant.',
978980
),
979981
},
980-
required: [],
982+
additionalProperties: false,
981983
),
982984
);
983985

@@ -992,7 +994,7 @@ base mixin DartToolingDaemonSupport
992994
"successfully called first. Doesn't work for Non-Flutter Dart CLI "
993995
'programs.',
994996
annotations: ToolAnnotations(title: 'Hot restart', destructiveHint: true),
995-
inputSchema: Schema.object(properties: {}, required: []),
997+
inputSchema: Schema.object(additionalProperties: false),
996998
);
997999

9981000
@visibleForTesting
@@ -1010,6 +1012,7 @@ base mixin DartToolingDaemonSupport
10101012
'are returned.',
10111013
),
10121014
},
1015+
additionalProperties: false,
10131016
),
10141017
);
10151018

@@ -1023,7 +1026,7 @@ base mixin DartToolingDaemonSupport
10231026
title: 'Get selected widget',
10241027
readOnlyHint: true,
10251028
),
1026-
inputSchema: Schema.object(),
1029+
inputSchema: Schema.object(additionalProperties: false),
10271030
);
10281031

10291032
@visibleForTesting
@@ -1043,6 +1046,7 @@ base mixin DartToolingDaemonSupport
10431046
'enabled': Schema.bool(title: 'Enable widget selection mode'),
10441047
},
10451048
required: const ['enabled'],
1049+
additionalProperties: false,
10461050
),
10471051
);
10481052

@@ -1057,7 +1061,7 @@ base mixin DartToolingDaemonSupport
10571061
title: 'Get Active Editor Location',
10581062
readOnlyHint: true,
10591063
),
1060-
inputSchema: Schema.object(),
1064+
inputSchema: Schema.object(additionalProperties: false),
10611065
);
10621066

10631067
static final _connectedAppsNotSupported = CallToolResult(

pkgs/dart_mcp_server/lib/src/mixins/flutter_launcher.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ base mixin FlutterLauncherSupport
6969
),
7070
},
7171
required: ['root', 'device'],
72+
additionalProperties: false,
7273
),
7374
outputSchema: Schema.object(
7475
properties: {
@@ -255,6 +256,7 @@ base mixin FlutterLauncherSupport
255256
),
256257
},
257258
required: ['pid'],
259+
additionalProperties: false,
258260
),
259261
outputSchema: Schema.object(
260262
properties: {
@@ -325,6 +327,7 @@ base mixin FlutterLauncherSupport
325327
),
326328
},
327329
required: ['devices'],
330+
additionalProperties: false,
328331
),
329332
);
330333

@@ -410,6 +413,7 @@ base mixin FlutterLauncherSupport
410413
),
411414
},
412415
required: ['pid'],
416+
additionalProperties: false,
413417
),
414418
outputSchema: Schema.object(
415419
properties: {
@@ -487,6 +491,7 @@ base mixin FlutterLauncherSupport
487491
),
488492
},
489493
required: ['apps'],
494+
additionalProperties: false,
490495
),
491496
);
492497

pkgs/dart_mcp_server/lib/src/mixins/package_uri_reader.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ base mixin PackageUriSupport on ToolsSupport, RootsTrackingSupport
199199
ParameterNames.root: rootSchema,
200200
},
201201
required: [ParameterNames.uris, ParameterNames.root],
202+
additionalProperties: false,
202203
),
203204
);
204205
}

pkgs/dart_mcp_server/lib/src/mixins/pub.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ base mixin PubSupport on ToolsSupport, LoggingSupport, RootsTrackingSupport
103103
ParameterNames.roots: rootsSchema(),
104104
},
105105
required: [ParameterNames.command],
106+
additionalProperties: false,
106107
),
107108
);
108109
}

pkgs/dart_mcp_server/lib/src/mixins/pub_dev_search.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ To search for alternatives do multiple searches. There is no "or" operator.
217217
),
218218
},
219219
required: ['query'],
220+
additionalProperties: false,
220221
),
221222
);
222223
}

pkgs/dart_mcp_server/lib/src/mixins/roots_fallback_support.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ base mixin RootsFallbackSupport on ToolsSupport, RootsTrackingSupport {
147147
),
148148
),
149149
},
150+
additionalProperties: false,
150151
),
151152
);
152153

@@ -164,6 +165,7 @@ base mixin RootsFallbackSupport on ToolsSupport, RootsTrackingSupport {
164165
items: Schema.string(description: 'The URIs of the roots to remove.'),
165166
),
166167
},
168+
additionalProperties: false,
167169
),
168170
);
169171
}

pkgs/dart_mcp_server/test/tools/pub_dev_search_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void main() {
3333
await runWithHarness((testHarness, pubDevSearchTool) async {
3434
final request = CallToolRequest(
3535
name: pubDevSearchTool.name,
36-
arguments: {'query': 'retry', 'latestVersion': '3.1.2'},
36+
arguments: {'query': 'retry'},
3737
);
3838

3939
final result = await testHarness.callToolWithRetry(

0 commit comments

Comments
 (0)