Skip to content

Commit 4edf9f5

Browse files
feat(mcp): add mcp tool helpers (#752)
* feat(mcp): add mcp tool helpers * docs(mcp): update example to use github mcp * docs(mcp): clean up example and deps * feat(mcp): allow easier use for mcp tools using standard sdk * chore(mcp): remove duck-typing in favor of official mcp support * chore: print assistant before each line Co-authored-by: bruce-hill <bruce@bruce-hill.com> * chore: minor refactor Co-authored-by: bruce-hill <bruce@bruce-hill.com> * chore: updates from feedback * chore: downgrade versions * refactor: move mcp helper to new package * refactor: update from comments * chore: revert go dep version to 1.23.0 --------- Co-authored-by: bruce-hill <bruce@bruce-hill.com>
1 parent 8b2f194 commit 4edf9f5

9 files changed

Lines changed: 752 additions & 20 deletions

File tree

client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ func noCredentialsSentinel(statuses []auth.CredentialSourceStatus) option.Reques
196196

197197
// NewClient generates a new client with the default option read from the
198198
// environment (ANTHROPIC_API_KEY, ANTHROPIC_WEBHOOK_SIGNING_KEY, ANTHROPIC_AUTH_TOKEN,
199-
// ANTHROPIC_BASE_URL). The option passed in as arguments are applied after these
200-
// default arguments, and all option will be passed down to the services and requests
199+
// ANTHROPIC_BASE_URL). The option passed in as arguments are applied after these
200+
// default arguments, and all option will be passed down to the services and requests
201201
// that this client makes.
202202
//
203203
// Pass [option.WithoutEnvironmentDefaults] to skip the environment-based

examples/go.mod

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ toolchain go1.24.3
99
require (
1010
github.com/anthropics/anthropic-sdk-go v0.0.0-00010101000000-000000000000
1111
github.com/invopop/jsonschema v0.13.0
12+
github.com/modelcontextprotocol/go-sdk v1.3.1
1213
)
1314

1415
require (
@@ -22,15 +23,20 @@ require (
2223
github.com/go-logr/stdr v1.2.2 // indirect
2324
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
2425
github.com/golang/protobuf v1.5.4 // indirect
26+
github.com/google/jsonschema-go v0.4.2 // indirect
2527
github.com/google/s2a-go v0.1.7 // indirect
2628
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
2729
github.com/mailru/easyjson v0.7.7 // indirect
30+
github.com/segmentio/asm v1.1.3 // indirect
31+
github.com/segmentio/encoding v0.5.4 // indirect
2832
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2 // indirect
33+
github.com/stretchr/testify v1.9.0 // indirect
2934
github.com/tidwall/gjson v1.18.0 // indirect
3035
github.com/tidwall/match v1.1.1 // indirect
3136
github.com/tidwall/pretty v1.2.1 // indirect
3237
github.com/tidwall/sjson v1.2.5 // indirect
3338
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
39+
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
3440
go.opencensus.io v0.24.0 // indirect
3541
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
3642
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
@@ -41,7 +47,7 @@ require (
4147
golang.org/x/net v0.41.0 // indirect
4248
golang.org/x/oauth2 v0.30.0 // indirect
4349
golang.org/x/sync v0.16.0 // indirect
44-
golang.org/x/sys v0.34.0 // indirect
50+
golang.org/x/sys v0.35.0 // indirect
4551
golang.org/x/text v0.27.0 // indirect
4652
golang.org/x/time v0.5.0 // indirect
4753
google.golang.org/api v0.189.0 // indirect

examples/go.sum

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
5757
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
5858
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
5959
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
60+
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
61+
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
6062
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
6163
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
6264
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
@@ -79,8 +81,10 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
7981
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
8082
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
8183
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
82-
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
83-
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
84+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
85+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
86+
github.com/google/jsonschema-go v0.4.2 h1:tmrUohrwoLZZS/P3x7ex0WAVknEkBZM46iALbcqoRA8=
87+
github.com/google/jsonschema-go v0.4.2/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE=
8488
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
8589
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
8690
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -91,9 +95,15 @@ github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uO
9195
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
9296
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
9397
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
98+
github.com/modelcontextprotocol/go-sdk v1.3.1 h1:TfqtNKOIWN4Z1oqmPAiWDC2Jq7K9OdJaooe0teoXASI=
99+
github.com/modelcontextprotocol/go-sdk v1.3.1/go.mod h1:DgVX498dMD8UJlseK1S5i1T4tFz2fkBk4xogC3D15nw=
94100
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
95101
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
96102
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
103+
github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc=
104+
github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
105+
github.com/segmentio/encoding v0.5.4 h1:OW1VRern8Nw6ITAtwSZ7Idrl3MXCFwXHPgqESYfvNt0=
106+
github.com/segmentio/encoding v0.5.4/go.mod h1:HS1ZKa3kSN32ZHVZ7ZLPLXWvOVIiZtyJnO1gPH1sKt0=
97107
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2 h1:q/QNlQMqBFYT7z9zt8vjbh0XvbcTXhN4Q+gi7aEBvkY=
98108
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo=
99109
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -102,8 +112,8 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
102112
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
103113
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
104114
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
105-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
106-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
115+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
116+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
107117
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
108118
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
109119
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
@@ -116,6 +126,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
116126
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
117127
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
118128
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
129+
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
130+
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
119131
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
120132
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
121133
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
@@ -156,8 +168,8 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h
156168
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
157169
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
158170
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
159-
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
160-
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
171+
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
172+
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
161173
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
162174
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
163175
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
@@ -169,6 +181,8 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
169181
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
170182
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
171183
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
184+
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
185+
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
172186
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
173187
google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI=
174188
google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8=

examples/mcp-tool-runner/main.go

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// Example demonstrating MCPBetaTools with the GitHub hosted MCP server.
2+
//
3+
// Prerequisites:
4+
// - GITHUB_TOKEN: a GitHub Personal Access Token with repo read access
5+
// - ANTHROPIC_API_KEY
6+
package main
7+
8+
import (
9+
"context"
10+
"fmt"
11+
"net/http"
12+
"os"
13+
14+
"github.com/anthropics/anthropic-sdk-go"
15+
"github.com/anthropics/anthropic-sdk-go/mcp"
16+
mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp"
17+
)
18+
19+
const githubMCPURL = "https://api.githubcopilot.com/mcp/"
20+
21+
// bearerTransport injects an Authorization header on every request.
22+
type bearerTransport struct {
23+
token string
24+
base http.RoundTripper
25+
}
26+
27+
func (t *bearerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
28+
r := req.Clone(req.Context())
29+
r.Header.Set("Authorization", "Bearer "+t.token)
30+
return t.base.RoundTrip(r)
31+
}
32+
33+
func main() {
34+
token := os.Getenv("GITHUB_TOKEN")
35+
if token == "" {
36+
fmt.Fprintln(os.Stderr, "GITHUB_TOKEN is required")
37+
os.Exit(1)
38+
}
39+
40+
ctx := context.Background()
41+
42+
// Connect to the GitHub hosted MCP server.
43+
mcpClient := mcpsdk.NewClient(&mcpsdk.Implementation{Name: "anthropic-sdk-go-example", Version: "1.0.0"}, nil)
44+
session, err := mcpClient.Connect(ctx, &mcpsdk.StreamableClientTransport{
45+
Endpoint: githubMCPURL,
46+
HTTPClient: &http.Client{
47+
Transport: &bearerTransport{token: token, base: http.DefaultTransport},
48+
},
49+
}, nil)
50+
if err != nil {
51+
fmt.Fprintf(os.Stderr, "failed to connect: %v\n", err)
52+
os.Exit(1)
53+
}
54+
defer session.Close()
55+
56+
// List tools and convert directly to BetaTools — no adapter code required.
57+
toolsResult, err := session.ListTools(ctx, nil)
58+
if err != nil {
59+
fmt.Fprintf(os.Stderr, "failed to list tools: %v\n", err)
60+
os.Exit(1)
61+
}
62+
fmt.Printf("Available tools (%d):\n", len(toolsResult.Tools))
63+
for _, t := range toolsResult.Tools {
64+
fmt.Printf(" - %s\n", t.Name)
65+
}
66+
fmt.Println()
67+
betaTools, err := mcp.NewBetaTools(toolsResult.Tools, session)
68+
if err != nil {
69+
fmt.Fprintf(os.Stderr, "failed to create tools: %v\n", err)
70+
os.Exit(1)
71+
}
72+
73+
client := anthropic.NewClient()
74+
question := "List the 5 most recently opened issues in the github/github-mcp-server repository. For each, include the issue number, title, and who opened it."
75+
fmt.Printf("[user]: %s\n\n", question)
76+
77+
runner := client.Beta.Messages.NewToolRunner(betaTools, anthropic.BetaToolRunnerParams{
78+
BetaMessageNewParams: anthropic.BetaMessageNewParams{
79+
Model: anthropic.ModelClaudeSonnet4_20250514,
80+
MaxTokens: 4096,
81+
Messages: []anthropic.BetaMessageParam{
82+
anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock(question)),
83+
},
84+
},
85+
MaxIterations: 10,
86+
})
87+
88+
finalMessage, err := runner.RunToCompletion(ctx)
89+
if err != nil {
90+
fmt.Fprintf(os.Stderr, "error: %v\n", err)
91+
os.Exit(1)
92+
}
93+
94+
for _, block := range finalMessage.Content {
95+
if tb, ok := block.AsAny().(anthropic.BetaTextBlock); ok {
96+
fmt.Println("[assistant]:", tb.Text)
97+
}
98+
}
99+
}

go.mod

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require (
1212
github.com/aws/smithy-go v1.20.3
1313
github.com/dnaeon/go-vcr v1.2.0
1414
github.com/invopop/jsonschema v0.13.0
15+
github.com/modelcontextprotocol/go-sdk v1.3.1
1516
github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2
1617
github.com/stretchr/testify v1.8.4
1718
github.com/tidwall/gjson v1.18.0
@@ -43,12 +44,16 @@ require (
4344
github.com/go-logr/stdr v1.2.2 // indirect
4445
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4546
github.com/golang/protobuf v1.5.4 // indirect
47+
github.com/google/jsonschema-go v0.4.2 // indirect
4648
github.com/google/s2a-go v0.1.7 // indirect
4749
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
4850
github.com/mailru/easyjson v0.7.7 // indirect
4951
github.com/pmezard/go-difflib v1.0.0 // indirect
52+
github.com/segmentio/asm v1.1.3 // indirect
53+
github.com/segmentio/encoding v0.5.4 // indirect
5054
github.com/tidwall/match v1.1.1 // indirect
5155
github.com/tidwall/pretty v1.2.1 // indirect
56+
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
5257
go.opencensus.io v0.24.0 // indirect
5358
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
5459
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
@@ -57,7 +62,7 @@ require (
5762
go.opentelemetry.io/otel/trace v1.24.0 // indirect
5863
golang.org/x/crypto v0.40.0 // indirect
5964
golang.org/x/net v0.41.0 // indirect
60-
golang.org/x/sys v0.34.0 // indirect
65+
golang.org/x/sys v0.35.0 // indirect
6166
golang.org/x/text v0.27.0 // indirect
6267
golang.org/x/time v0.5.0 // indirect
6368
google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect

0 commit comments

Comments
 (0)