MCP tools with dependent types

vlaaad.github.io

73 points by vlaaad 3 days ago


dvse - 3 days ago

This is already supported via listChanged. The problem is that >90% of clients currently don’t implement this - including Anthropic’s, https://modelcontextprotocol.io/clients

vlaaad - 3 days ago

I was considering making an MCP SEP (specification enhancement proposal) — https://modelcontextprotocol.io/community/sep-guidelines, though I'm curious if other MCP tinkerers feel the issue exists, should be solved like that, etc. What do you think?

jonfw - 3 days ago

I have a blog post here that has an example of dynamically changing the tool list- https://jonwoodlief.com/rest3-mcp.html.

In this situation, I would have a tool called "request ability to edit GLTF". I This would trigger an addition to the tool list specifically for your desired GLTF. The model would send the "tool list changed' notification and now the LLM would have access.

If you want to do it without the tool list changed notification ability, I'd have two tools, get schema for GLTF, and edit GLTF with schema. If you note that the get schema is a dependency for edit, the LLM could probably plumb that together on it's own fairly well

You could probably also support this workflow using sampling.

LudwigNagasena - 3 days ago

> there is no way to tell the AI agent “for this argument, look up a JSON schema using this other tool”

There is a description field, it seems sufficient for most cases. You can also dynamically change your tools using `listChanged` capability.

matt-smith - 3 days ago

The Arazzo specification[0] (from OpenAPI contributors) aims to solve the dependent arguments issue by introducing the concept of a "runtime expressions"[1] within a series of independent tool calls which compose a workflow.

[0] - https://www.openapis.org/arazzo-specification [1] - https://spec.openapis.org/arazzo/v1.0.1.html#runtime-express...

nmilo - 3 days ago

I don't think this is a protocol issue, the LLMs simply weren't RLHFed to do that