-
Notifications
You must be signed in to change notification settings - Fork 9.2k
feat(everything): add trigger-agentic-sampling tool #3163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
olaservo
wants to merge
5
commits into
modelcontextprotocol:main
Choose a base branch
from
olaservo:add-sampling-with-tools
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat(everything): add trigger-agentic-sampling tool #3163
olaservo
wants to merge
5
commits into
modelcontextprotocol:main
from
olaservo:add-sampling-with-tools
+314
−1
Conversation
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
Adds a new tool that demonstrates sampling with tools capability (MCP 2025-11-25). The tool sends prompts to the LLM with tools available, handles tool_use responses in an agentic loop, and executes tools locally until a final response is received. 🦉 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
Update features.md and structure.md to document the new trigger-agentic-sampling tool. Also adds missing documentation for trigger-elicitation-request. 🦉 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
domdomegg
previously approved these changes
Jan 5, 2026
Member
domdomegg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
cliffhall
requested changes
Jan 5, 2026
Member
cliffhall
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't test with the Inspector yet (saw your mention of an issue with the SDK on that), but review did turn up a few minor things.
Address PR review feedback: remove console.log statements that would interfere with STDIO JSON-RPC output. Registration now silently skips when client doesn't support sampling.tools (matching other conditional tools). Remaining debug logs changed to console.error. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Match the pattern used by other conditional tools: wrap registerTool
in `if (clientSupports...) { }` instead of early return.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
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.
Description
Adds support for SEP-1577 (Sampling With Tools) to the Everything server by introducing a new
trigger-agentic-samplingtool that demonstrates the agentic sampling loop pattern.This tool:
tool_useresponses and executes tools locallysampling.toolscapabilityServer Details
Motivation and Context
Issue: #3040
SEP-1577 adds tool calling support to the MCP sampling API, enabling servers to provide tools that the LLM can use during sampling requests. This creates an "agentic loop" where:
sampling/createMessagewith atoolsarraystopReason: "toolUse", the server executes the toolsThe Everything server is a reference implementation that demonstrates all MCP features, so it should include this capability.
How Has This Been Tested?
sampling.toolscapability checktrigger-sampling-request,trigger-elicitation-request)(We can wait to merge until I've had a chance to add a screengrab if that's preferred.)
Breaking Changes
No
Types of changes
Checklist
Additional context
References
Implementation Notes
The tool includes simple local implementations of
echoandaddtools for demonstration purposes. In a production scenario, tools could likely be reused via:server.server.callTool()callsI thought about trying to re-use existing tools already defined in the everything server, but then decided to keep it self-contained instead.