feat: Dependency injection for MCP Tools#1489
Closed
jamesev15 wants to merge 1 commit intomodelcontextprotocol:mainfrom
Closed
feat: Dependency injection for MCP Tools#1489jamesev15 wants to merge 1 commit intomodelcontextprotocol:mainfrom
jamesev15 wants to merge 1 commit intomodelcontextprotocol:mainfrom
Conversation
Author
|
Hi @felixweinberger Did you get any chance of reviewing this PR? I would like have your feedback. |
Contributor
|
Thanks for putting this together — dependency injection for tools is a real need and we appreciate the work here. Per our CONTRIBUTING.md, we ask for an issue first so we can align on the API design before reviewing implementation. Closing for now — please open an issue (or link to #2054 if that covers your use case) and we can pick this back up once the approach is agreed. |
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.
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: