internal/mcp: clean up handling of content

Add support for all content types, and formalize the conversion of
content to and from the wire format (as a discriminated union).

Change-Id: I93678ce98c02176a524d2c82425fb1267ad68bf0
Reviewed-on: https://go-review.googlesource.com/c/tools/+/669135
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
This commit is contained in:
Rob Findley 2025-04-30 14:49:52 +00:00 • committed by Gopher Robot
commit bf608eeeae

View file

@ -6,7 +6,6 @@ package main
import (
"context"
"encoding/json"
"flag"
"fmt"
"net/http"
@ -29,19 +28,10 @@ func SayHi(ctx context.Context, cc *mcp.ClientConnection, params *HiParams) ([]m
}
func PromptHi(ctx context.Context, cc *mcp.ClientConnection, params *HiParams) (*protocol.GetPromptResult, error) {
// (see related TODOs about cleaning up content construction)
content, err := json.Marshal(protocol.TextContent{
Type: "text",
Text: "Say hi to " + params.Name,
})
if err != nil {
return nil, err
}
return &protocol.GetPromptResult{
Description: "Code review prompt",
Messages: []protocol.PromptMessage{
// TODO: move 'Content' to the protocol package.
{Role: "user", Content: json.RawMessage(content)},
{Role: "user", Content: mcp.TextContent{Text: "Say hi to " + params.Name}.ToWire()},
},
}, nil
}