Improve tool/resource type handling#368
Draft
domarmstrong wants to merge 2 commits intoSmartBear:mainfrom
Draft
Conversation
sazap10
reviewed
Mar 24, 2026
Contributor
sazap10
left a comment
There was a problem hiding this comment.
This change seems a good improvement, makes sense to wait for the bugsnag tool refactoring to be merged then applying this change across the board
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Goal
While looking at MCP apps, the apps need to be able to consume and call tools. Currently the tools typing (inputs/outputs) is not available to access, so you'd need to redefine all the types, or restructure the code and manually cast the inputs/outputs. This PR demonstrates a potential approach that allows accessing the tools typing by inference without requiring manual definitions.
Design
Create a new TypesafeTool class that handles the type inference (it could likely also be extended with code that currently lives in server which would make more sense being handled by the tools).
This could later allow defining some hooks that could be used with mcp apps such that they are typesafe.
Following the pattern from zephyr and reflect, use a file per tool structure which is much nicer and also gives access to the tools.
Changeset
No functional change, just refactoring
Testing
Unit tests