stacklok / stacklok/toolhive

Triage vMCP conformance gaps: content types, templates, server-to-client forwarding

Open
#5,859 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
2.2k
Forks
300
Avg merge
1d 15h
Merged PRs (30d)
184

Description

Pointing the MCP conformance suite at a vMCP endpoint (#5844 item 2, PR #5852) surfaced failing scenarios. Some are clear aggregator limitations (sampling, completions, resource subscribe/unsubscribe) — vMCP terminates the protocol and re-serves an aggregated view, and does not proxy these. Others are less obviously "expected" and may be real gaps/bugs in the migrated mcpcompat/go-sdk serving surface, worth investigating individually the way prompts/get was (that one turned out to be a real bug, fixed in #5857 via toolhive-core SessionWithPrompts).

Baselined in expected-failures-vmcp.yaml for now so the conformance job is green, but tracked here:

Likely worth a real fix
  • tools-call-mixed-content and tools-call-embedded-resource — tool results carrying mixed / embedded-resource content. Basic tools-call passes, so this is a content-type conversion gap in the vMCP tool-result path, not a fundamental limitation.
  • resources-templates-read — resource templates. Basic resources-list / resources-read-text / -binary pass, so template handling specifically is missing.
Server→client forwarding (may be architectural, confirm)
  • tools-call-with-progress, tools-call-with-logging — the server sends progress/logging notifications to the client mid-call; vMCP would need to forward them.
  • tools-call-elicitation, elicitation-sep1034-defaults, elicitation-sep1330-enums — server→client elicitation.
Accepted aggregator limitations (no action expected)
  • tools-call-sampling, completion-complete, resources-subscribe, resources-unsubscribe.

Each investigation should follow the prompts model: reproduce via the conformance artifact's expected-vs-actual, root-cause in the vMCP serve path, and if it's a real bug fix it and drop it from the baseline.

Context: PR #5852, part of epic #5743.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with expected-failures-vmcp.yaml and reproduce one listed scenario using the conformance artifact's expected-versus-actual output. Trace the failure through the vMCP serve path, using the prompts investigation as a model, and determine whether it is an aggregator limitation or a real bug. Done means fixing confirmed bugs and removing them from the baseline.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.