@@ -7,13 +7,18 @@ package main
77import (
88 "context"
99 "flag"
10+ "fmt"
1011 "log"
1112 "net/http"
13+ "os"
1214
1315 "github.com/modelcontextprotocol/go-sdk/mcp"
1416)
1517
16- var httpAddr = flag .String ("http" , "" , "use SSE HTTP at this address" )
18+ var (
19+ host = flag .String ("host" , "localhost" , "host to listen on" )
20+ port = flag .String ("port" , "8080" , "port to listen on" )
21+ )
1722
1823type SayHiParams struct {
1924 Name string `json:"name"`
@@ -28,19 +33,27 @@ func SayHi(ctx context.Context, cc *mcp.ServerSession, params *mcp.CallToolParam
2833}
2934
3035func main () {
36+ flag .Usage = func () {
37+ fmt .Fprintf (os .Stderr , "Usage: %s [options]\n \n " , os .Args [0 ])
38+ fmt .Fprintf (os .Stderr , "This program runs MCP servers over SSE HTTP.\n \n " )
39+ fmt .Fprintf (os .Stderr , "Options:\n " )
40+ flag .PrintDefaults ()
41+ fmt .Fprintf (os .Stderr , "\n Endpoints:\n " )
42+ fmt .Fprintf (os .Stderr , " /greeter1 - Greeter 1 service\n " )
43+ fmt .Fprintf (os .Stderr , " /greeter2 - Greeter 2 service\n " )
44+ os .Exit (1 )
45+ }
3146 flag .Parse ()
3247
33- if httpAddr == nil || * httpAddr == "" {
34- log .Fatal ("http address not set" )
35- }
48+ addr := fmt .Sprintf ("%s:%s" , * host , * port )
3649
3750 server1 := mcp .NewServer (& mcp.Implementation {Name : "greeter1" }, nil )
3851 mcp .AddTool (server1 , & mcp.Tool {Name : "greet1" , Description : "say hi" }, SayHi )
3952
4053 server2 := mcp .NewServer (& mcp.Implementation {Name : "greeter2" }, nil )
4154 mcp .AddTool (server2 , & mcp.Tool {Name : "greet2" , Description : "say hello" }, SayHi )
4255
43- log .Printf ("MCP servers serving at %s" , * httpAddr )
56+ log .Printf ("MCP servers serving at %s" , addr )
4457 handler := mcp .NewSSEHandler (func (request * http.Request ) * mcp.Server {
4558 url := request .URL .Path
4659 log .Printf ("Handling request for URL %s\n " , url )
@@ -53,5 +66,5 @@ func main() {
5366 return nil
5467 }
5568 })
56- log .Fatal (http .ListenAndServe (* httpAddr , handler ))
69+ log .Fatal (http .ListenAndServe (addr , handler ))
5770}
0 commit comments