feat: Dependency injection for MCP Tools #1489
Open
+288
−7
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.
Add Dependency Injection Support for MCP Tools
This PR introduces a comprehensive dependency injection system for MCP tools, enabling automatic resolution of function dependencies with support for sync/async functions, generators, and proper resource cleanup.
Motivation and Context
Currently, MCP tools have limited support for managing external dependencies like database connections, configuration objects, or shared resources. This leads to:
This change introduces a FastAPI-inspired dependency injection system that solves these problems by providing:
How Has This Been Tested?
Breaking Changes
None. This is a fully backward-compatible addition. Existing tools will continue to work without any modifications. The dependency injection system is opt-in and only activates when dependencies are explicitly declared using the Depends class.
Types of changes
Checklist
Additional context
Implementation Details
Key Components:
Design Decisions: