Commit 3a1a1b4
committed
feat: add duplicate tool name validation for MCP server registration
- Add AssertNotDupplicateTool validation method to prevent duplicate tool registration
- Throw IllegalArgumentException during server building when duplicate tool names detected
- Throw McpError when attempting to add duplicate tools to existing server
- Add test coverage for duplicate detection scenarios:
- Individual tool registration during building
- Batch tool registration (list and varargs)
- Runtime duplicate tool addition
- Apply validation to both sync and async server implementations
This prevents tool name conflicts that could cause unexpected behavior
or runtime errors in MCP server implementations.
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>1 parent 37c342c commit 3a1a1b4
File tree
5 files changed
+285
-3
lines changed- mcp-test/src/main/java/io/modelcontextprotocol/server
- mcp/src
- main/java/io/modelcontextprotocol/server
- test/java/io/modelcontextprotocol/server
5 files changed
+285
-3
lines changedLines changed: 70 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
156 | 226 | | |
157 | 227 | | |
158 | 228 | | |
| |||
Lines changed: 68 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
| 143 | + | |
143 | 144 | | |
144 | 145 | | |
145 | 146 | | |
| |||
157 | 158 | | |
158 | 159 | | |
159 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
160 | 228 | | |
161 | 229 | | |
162 | 230 | | |
| |||
Lines changed: 49 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
211 | 217 | | |
212 | 218 | | |
213 | 219 | | |
| |||
329 | 335 | | |
330 | 336 | | |
331 | 337 | | |
| 338 | + | |
332 | 339 | | |
333 | 340 | | |
334 | 341 | | |
| |||
353 | 360 | | |
354 | 361 | | |
355 | 362 | | |
| 363 | + | |
356 | 364 | | |
357 | 365 | | |
358 | 366 | | |
| |||
374 | 382 | | |
375 | 383 | | |
376 | 384 | | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
377 | 391 | | |
378 | 392 | | |
379 | 393 | | |
| |||
390 | 404 | | |
391 | 405 | | |
392 | 406 | | |
393 | | - | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
394 | 412 | | |
395 | 413 | | |
396 | 414 | | |
| |||
415 | 433 | | |
416 | 434 | | |
417 | 435 | | |
| 436 | + | |
418 | 437 | | |
| 438 | + | |
419 | 439 | | |
420 | 440 | | |
421 | 441 | | |
| |||
430 | 450 | | |
431 | 451 | | |
432 | 452 | | |
| 453 | + | |
433 | 454 | | |
| 455 | + | |
434 | 456 | | |
435 | 457 | | |
436 | 458 | | |
| |||
763 | 785 | | |
764 | 786 | | |
765 | 787 | | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
766 | 794 | | |
767 | 795 | | |
768 | 796 | | |
| |||
883 | 911 | | |
884 | 912 | | |
885 | 913 | | |
| 914 | + | |
886 | 915 | | |
887 | 916 | | |
888 | 917 | | |
| |||
906 | 935 | | |
907 | 936 | | |
908 | 937 | | |
| 938 | + | |
909 | 939 | | |
910 | 940 | | |
911 | 941 | | |
| |||
927 | 957 | | |
928 | 958 | | |
929 | 959 | | |
930 | | - | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
931 | 968 | | |
932 | 969 | | |
933 | 970 | | |
| |||
942 | 979 | | |
943 | 980 | | |
944 | 981 | | |
945 | | - | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
946 | 988 | | |
947 | 989 | | |
948 | 990 | | |
| |||
969 | 1011 | | |
970 | 1012 | | |
971 | 1013 | | |
| 1014 | + | |
972 | 1015 | | |
| 1016 | + | |
973 | 1017 | | |
974 | 1018 | | |
975 | 1019 | | |
| |||
985 | 1029 | | |
986 | 1030 | | |
987 | 1031 | | |
| 1032 | + | |
988 | 1033 | | |
| 1034 | + | |
989 | 1035 | | |
990 | 1036 | | |
991 | 1037 | | |
| |||
Lines changed: 49 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
177 | 226 | | |
178 | 227 | | |
179 | 228 | | |
| |||
0 commit comments