mcp: new API for features (#88)
BREAKING CHANGE Change the API for adding tools, prompts, resources and resource templates to a server. The ServerXXX types are gone along with the plural Add methods (AddTools, AddPrompts etc.) Instead there are single Add methods (AddTool, AddPrompt). In addition, instead of NewServerTool, there is AddTool[In, Out]. Fixes #73.
This commit is contained in:
parent
328a25d503
commit
aebd244981
2 changed files with 366 additions and 612 deletions
|
|
@ -19,7 +19,7 @@ import (
|
|||
var httpAddr = flag.String("http", "", "if set, use streamable HTTP at this address, instead of stdin/stdout")
|
||||
|
||||
type HiArgs struct {
|
||||
Name string `json:"name"`
|
||||
Name string `json:"name" mcp:"the name to say hi to"`
|
||||
}
|
||||
|
||||
func SayHi(ctx context.Context, ss *mcp.ServerSession, params *mcp.CallToolParamsFor[HiArgs]) (*mcp.CallToolResultFor[struct{}], error) {
|
||||
|
|
@ -43,21 +43,13 @@ func main() {
|
|||
flag.Parse()
|
||||
|
||||
server := mcp.NewServer("greeter", "v0.0.1", nil)
|
||||
server.AddTools(mcp.NewServerTool("greet", "say hi", SayHi, mcp.Input(
|
||||
mcp.Property("name", mcp.Description("the name to say hi to")),
|
||||
)))
|
||||
server.AddPrompts(&mcp.ServerPrompt{
|
||||
Prompt: &mcp.Prompt{Name: "greet"},
|
||||
Handler: PromptHi,
|
||||
})
|
||||
server.AddResources(&mcp.ServerResource{
|
||||
Resource: &mcp.Resource{
|
||||
Name: "info",
|
||||
MIMEType: "text/plain",
|
||||
URI: "embedded:info",
|
||||
},
|
||||
Handler: handleEmbeddedResource,
|
||||
})
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "greet", Description: "say hi"}, SayHi)
|
||||
server.AddPrompt(&mcp.Prompt{Name: "greet"}, PromptHi)
|
||||
server.AddResource(&mcp.Resource{
|
||||
Name: "info",
|
||||
MIMEType: "text/plain",
|
||||
URI: "embedded:info",
|
||||
}, handleEmbeddedResource)
|
||||
|
||||
if *httpAddr != "" {
|
||||
handler := mcp.NewStreamableHTTPHandler(func(*http.Request) *mcp.Server {
|
||||
|
|
|
|||
|
|
@ -35,12 +35,12 @@ func main() {
|
|||
}
|
||||
|
||||
server1 := mcp.NewServer("greeter1", "v0.0.1", nil)
|
||||
server1.AddTools(mcp.NewServerTool("greet1", "say hi", SayHi))
|
||||
mcp.AddTool(server1, &mcp.Tool{Name: "greet1", Description: "say hi"}, SayHi)
|
||||
|
||||
server2 := mcp.NewServer("greeter2", "v0.0.1", nil)
|
||||
server2.AddTools(mcp.NewServerTool("greet2", "say hello", SayHi))
|
||||
mcp.AddTool(server2, &mcp.Tool{Name: "greet2", Description: "say hello"}, SayHi)
|
||||
|
||||
log.Printf("MCP servers serving at %s\n", *httpAddr)
|
||||
log.Printf("MCP servers serving at %s", *httpAddr)
|
||||
handler := mcp.NewSSEHandler(func(request *http.Request) *mcp.Server {
|
||||
url := request.URL.Path
|
||||
log.Printf("Handling request for URL %s\n", url)
|
||||
|
|
|
|||
Loading…
Reference in a new issue