Skip to content

Adopt relevant MCP spec 2025-11-25 additions (icons, serverInfo description, sampling tools) #45

Description

@evilmachina

Context

After #44 bumped @modelcontextprotocol/sdk to 1.29.0, the server now negotiates protocol version 2025-11-25 automatically (src/mcp_server.ts uses LATEST_PROTOCOL_VERSION rather than a hardcoded value). That PR was intentionally scoped to the dependency/resolution fix only.

This issue tracks the optional spec features from the 2025-11-25 revision that are actually relevant to this server (stdio transport, read-only, 12 tools, one sampling-based tool). Auth/HTTP-transport additions (OIDC discovery, incremental scope consent, OAuth Client ID Metadata Docs, RFC 9728, Streamable HTTP/SSE changes) do not apply and are out of scope.

Candidate work (in rough priority order)

1. Tool icons (SEP-973)

The spec now allows icons metadata on tools, resources, resource templates, and prompts. SDK ships IconSchema/IconsSchema. Add icons to the 12 pinmeto_* tools for nicer client UI presentation.

  • Decide on icon source (URLs vs data URIs) and add to each registerTool config

2. Implementation.description field

serverInfo (src/mcp_server.ts:204) can now carry a human-readable description to align with the MCP registry server.json format and provide context during initialization.

  • Add a one-line description to serverInfo

3. Tool calling in sampling (tools / toolChoice) — investigate

pinmeto_get_google_review_insights is the only sampling-based tool. The spec now lets sampling requests offer tools to the model via tools/toolChoice. Likely unnecessary for review summarization, but worth a quick evaluation.

  • Evaluate whether offering tools to the sampling request improves review-insights output; implement only if it does

Explicitly out of scope (for reference)

  • Experimental Tasks (SEP-1686) — durable requests/polling; would be a real feature, not a tweak. Could revisit for large bulk fetches (pinmeto_get_locations) later.
  • All auth / Streamable HTTP / SSE / OAuth changes (server is stdio, no auth).

Already compliant (no action needed)

  • Validation errors returned as Tool Execution Errors, not Protocol Errors (SEP-1303) — server already uses isError: true + structured errorCode.
  • stderr used for all stdio logging.
  • Tool naming follows pinmeto_{action}_{network}_{resource}.
  • JSON Schema 2020-12 dialect handled by the SDK's Zod layer.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions