feat: Add AsyncExecutor in MCPTool, ensure MCPTool works in hayhooks #1643
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.
Why:
To simplify and standardize the use of MCPTool across different deployment contexts—whether in standalone scripts, sync/async environments, or Hayhooks-based REST deployments. This is achieved by introducing AsyncExecutor and using it for MCPTool invocation.
What:
AsyncExecutor
: a utility for executing async code in sync contexts, enabling cleaner and safer integration of MCPTool.PipelineWrapper
example: a concreteexamples/hayhooks/pipeline_wrapper.py
of deploying MCPTool in a Haystack pipeline using Hayhooks, exposing it as a REST API.How it can be used:
Example hayhooks pipeline wrapper of a time tool in Hayhooks:
Example invocation:
How it was tested:
examples/hayhooks/pipeline_wrapper.py
Notes for the reviewer:
AsyncExecutor
and how it simplifies coroutine management across different environments.