Skip to main content
Glama

mcp_demo

by ropon
Apache 2.0
main.go1.78 kB
package main import ( "context" "errors" "flag" "fmt" "log" "os" "github.com/mark3labs/mcp-go/server" "github.com/ropon/mcp_demo/logics/ip" ) const Version = "1.0.0" func main() { testToken := flag.String("token", "", "Test access token") showVersion := flag.Bool("version", false, "Show version information") transport := flag.String("transport", "stdio", "Transport type (stdio or sse)") addr := flag.String("sse-address", "localhost:8000", "The host and port to start the sse server on") flag.Parse() if *showVersion { fmt.Printf("Demo MCP Server\n") fmt.Printf("Version: %s\n", Version) os.Exit(0) } if *testToken == "" { fmt.Println("Error: token is required") os.Exit(1) } fmt.Printf("Test token: %s\n", *testToken) if err := run(*transport, *addr); err != nil { panic(err) } } func run(transport, addr string) error { s := newMCPServer() addTools(s) switch transport { case "stdio": if err := server.ServeStdio(s); err != nil { if errors.Is(err, context.Canceled) { return nil } return err } case "sse": srv := server.NewSSEServer(s, server.WithBaseURL("http://"+addr)) log.Printf("SSE server listening on %s", addr) if err := srv.Start(addr); err != nil { if errors.Is(err, context.Canceled) { return nil } return fmt.Errorf("server error: %v", err) } default: return fmt.Errorf( "invalid transport type: %s. Must be 'stdio' or 'sse'", transport, ) } return nil } func newMCPServer() *server.MCPServer { return server.NewMCPServer( "mcp_demo", Version, server.WithToolCapabilities(true), server.WithLogging(), ) } func addTools(s *server.MCPServer) { s.AddTool(ip.GetCurrentIpInfoTool, ip.GetCurrentIpInfoHandler) s.AddTool(ip.GetIpInfoTool, ip.GetIpInfoHandler) }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ropon/mcp_demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server