client.go 842 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package client
  2. import (
  3. "context"
  4. "errors"
  5. mcpClient "github.com/mark3labs/mcp-go/client"
  6. "github.com/mark3labs/mcp-go/mcp"
  7. )
  8. func NewClient(baseUrl, name, version, serverName string) (*mcpClient.Client, error) {
  9. client, err := mcpClient.NewSSEMCPClient(baseUrl)
  10. if err != nil {
  11. return nil, err
  12. }
  13. ctx := context.Background()
  14. // 启动client
  15. if err := client.Start(ctx); err != nil {
  16. return nil, err
  17. }
  18. // 初始化
  19. initRequest := mcp.InitializeRequest{}
  20. initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
  21. initRequest.Params.ClientInfo = mcp.Implementation{
  22. Name: name,
  23. Version: version,
  24. }
  25. result, err := client.Initialize(ctx, initRequest)
  26. if err != nil {
  27. return nil, err
  28. }
  29. if result.ServerInfo.Name != serverName {
  30. return nil, errors.New("server name mismatch")
  31. }
  32. return client, nil
  33. }