Per the latest MCP specification sampling is now a deprecated feature and has started a one-year countdown to complete removal from the specification. Our MCP servers are heavily built on sampling for every running mode other than --mode all where all tools are exposed locally.
One thing we do today is that we have different text for the sampling request and the turn response when sampling isn't available and we need the calling LLM to provide more information / make a decision, and generally the turn response text has less guidance than the sampling request.
We should investigate merging the sampling request and turn response into a single set of text, so that when we make improvements to one we don't forget to make improvements to the other. An example would be that namespace mode sampling includes guidance on what the LLM should attempt to do:
https://github.com/microsoft/mcp/blob/main/core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/NamespaceToolLoader.cs#L738-L744
But we don't do that with the turn response:
https://github.com/microsoft/mcp/blob/main/core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/NamespaceToolLoader.cs#L554-L558
Per the latest MCP specification sampling is now a deprecated feature and has started a one-year countdown to complete removal from the specification. Our MCP servers are heavily built on sampling for every running mode other than
--mode allwhere all tools are exposed locally.One thing we do today is that we have different text for the sampling request and the turn response when sampling isn't available and we need the calling LLM to provide more information / make a decision, and generally the turn response text has less guidance than the sampling request.
We should investigate merging the sampling request and turn response into a single set of text, so that when we make improvements to one we don't forget to make improvements to the other. An example would be that namespace mode sampling includes guidance on what the LLM should attempt to do:
https://github.com/microsoft/mcp/blob/main/core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/NamespaceToolLoader.cs#L738-L744
But we don't do that with the turn response:
https://github.com/microsoft/mcp/blob/main/core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/NamespaceToolLoader.cs#L554-L558