Skip to content

Commit 4be1146

Browse files
authored
feat(contrib/mcp-go): Initial mcp-go tracer implementation (#4100)
Co-authored-by: julian.boilen <[email protected]>
1 parent 2b60c19 commit 4be1146

File tree

17 files changed

+754
-5
lines changed

17 files changed

+754
-5
lines changed

contrib/mark3labs/mcp-go/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# MCP-Go Integration
2+
3+
This integration provides Datadog tracing for the [mark3labs/mcp-go](https://github.com/mark3labs/mcp-go) library.
4+
5+
## Usage
6+
7+
```go
8+
import (
9+
mcpgotrace "github.com/DataDog/dd-trace-go/contrib/mark3labs/mcp-go/v2"
10+
"github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
11+
"github.com/mark3labs/mcp-go/server"
12+
)
13+
14+
func main() {
15+
tracer.Start()
16+
defer tracer.Stop()
17+
18+
srv := server.NewMCPServer("my-server", "1.0.0",
19+
server.WithToolHandlerMiddleware(mcpgotrace.NewToolHandlerMiddleware()))
20+
_ = srv
21+
}
22+
```
23+
24+
## Features
25+
26+
The integration automatically traces:
27+
- **Tool calls**: Creates LLMObs tool spans with input/output annotation for all tool invocations
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Unless explicitly stated otherwise all files in this repository are licensed
2+
// under the Apache License Version 2.0.
3+
// This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
// Copyright 2016 Datadog, Inc.
5+
6+
package mcpgo_test
7+
8+
import (
9+
mcpgotrace "github.com/DataDog/dd-trace-go/contrib/mark3labs/mcp-go/v2"
10+
"github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
11+
"github.com/mark3labs/mcp-go/server"
12+
)
13+
14+
func Example() {
15+
tracer.Start()
16+
defer tracer.Stop()
17+
18+
srv := server.NewMCPServer("my-server", "1.0.0",
19+
server.WithToolHandlerMiddleware(mcpgotrace.NewToolHandlerMiddleware()))
20+
_ = srv
21+
}

contrib/mark3labs/mcp-go/go.mod

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
module github.com/DataDog/dd-trace-go/contrib/mark3labs/mcp-go/v2
2+
3+
go 1.24.0
4+
5+
require (
6+
github.com/DataDog/dd-trace-go/v2 v2.4.0-dev
7+
github.com/mark3labs/mcp-go v0.42.0
8+
github.com/stretchr/testify v1.11.1
9+
)
10+
11+
require (
12+
github.com/DataDog/datadog-agent/comp/core/tagger/origindetection v0.71.0 // indirect
13+
github.com/DataDog/datadog-agent/pkg/obfuscate v0.71.0 // indirect
14+
github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.71.0 // indirect
15+
github.com/DataDog/datadog-agent/pkg/proto v0.71.0 // indirect
16+
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.73.0-rc.1 // indirect
17+
github.com/DataDog/datadog-agent/pkg/trace v0.71.0 // indirect
18+
github.com/DataDog/datadog-agent/pkg/util/log v0.71.0 // indirect
19+
github.com/DataDog/datadog-agent/pkg/util/scrubber v0.71.0 // indirect
20+
github.com/DataDog/datadog-agent/pkg/version v0.71.0 // indirect
21+
github.com/DataDog/datadog-go/v5 v5.6.0 // indirect
22+
github.com/DataDog/go-libddwaf/v4 v4.6.1 // indirect
23+
github.com/DataDog/go-runtime-metrics-internal v0.0.4-0.20250721125240-fdf1ef85b633 // indirect
24+
github.com/DataDog/go-sqllexer v0.1.8 // indirect
25+
github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect
26+
github.com/DataDog/sketches-go v1.4.7 // indirect
27+
github.com/Masterminds/semver/v3 v3.3.1 // indirect
28+
github.com/Microsoft/go-winio v0.6.2 // indirect
29+
github.com/bahlo/generic-list-go v0.2.0 // indirect
30+
github.com/buger/jsonparser v1.1.1 // indirect
31+
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
32+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
33+
github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect
34+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
35+
github.com/dustin/go-humanize v1.0.1 // indirect
36+
github.com/ebitengine/purego v0.8.4 // indirect
37+
github.com/go-logr/logr v1.4.3 // indirect
38+
github.com/go-logr/stdr v1.2.2 // indirect
39+
github.com/go-ole/go-ole v1.3.0 // indirect
40+
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
41+
github.com/gogo/protobuf v1.3.2 // indirect
42+
github.com/golang/protobuf v1.5.4 // indirect
43+
github.com/google/uuid v1.6.0 // indirect
44+
github.com/hashicorp/go-version v1.7.0 // indirect
45+
github.com/invopop/jsonschema v0.13.0 // indirect
46+
github.com/json-iterator/go v1.1.12 // indirect
47+
github.com/klauspost/compress v1.18.0 // indirect
48+
github.com/klauspost/cpuid/v2 v2.2.3 // indirect
49+
github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
50+
github.com/mailru/easyjson v0.7.7 // indirect
51+
github.com/minio/simdjson-go v0.4.5 // indirect
52+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
53+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
54+
github.com/outcaste-io/ristretto v0.2.3 // indirect
55+
github.com/philhofer/fwd v1.2.0 // indirect
56+
github.com/pkg/errors v0.9.1 // indirect
57+
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
58+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
59+
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
60+
github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect
61+
github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect
62+
github.com/shirou/gopsutil/v4 v4.25.8-0.20250809033336-ffcdc2b7662f // indirect
63+
github.com/spf13/cast v1.7.1 // indirect
64+
github.com/theckman/httpforwarded v0.4.0 // indirect
65+
github.com/tinylib/msgp v1.3.0 // indirect
66+
github.com/tklauser/go-sysconf v0.3.15 // indirect
67+
github.com/tklauser/numcpus v0.10.0 // indirect
68+
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
69+
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
70+
github.com/yusufpapurcu/wmi v1.2.4 // indirect
71+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
72+
go.opentelemetry.io/collector/component v1.39.0 // indirect
73+
go.opentelemetry.io/collector/featuregate v1.39.0 // indirect
74+
go.opentelemetry.io/collector/internal/telemetry v0.133.0 // indirect
75+
go.opentelemetry.io/collector/pdata v1.39.0 // indirect
76+
go.opentelemetry.io/contrib/bridges/otelzap v0.12.0 // indirect
77+
go.opentelemetry.io/otel v1.37.0 // indirect
78+
go.opentelemetry.io/otel/log v0.13.0 // indirect
79+
go.opentelemetry.io/otel/metric v1.37.0 // indirect
80+
go.opentelemetry.io/otel/sdk v1.37.0 // indirect
81+
go.opentelemetry.io/otel/trace v1.37.0 // indirect
82+
go.uber.org/atomic v1.11.0 // indirect
83+
go.uber.org/multierr v1.11.0 // indirect
84+
go.uber.org/zap v1.27.0 // indirect
85+
go.yaml.in/yaml/v3 v3.0.4 // indirect
86+
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
87+
golang.org/x/mod v0.29.0 // indirect
88+
golang.org/x/net v0.46.0 // indirect
89+
golang.org/x/sys v0.37.0 // indirect
90+
golang.org/x/text v0.30.0 // indirect
91+
golang.org/x/time v0.12.0 // indirect
92+
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
93+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
94+
google.golang.org/grpc v1.75.0 // indirect
95+
google.golang.org/protobuf v1.36.7 // indirect
96+
gopkg.in/ini.v1 v1.67.0 // indirect
97+
gopkg.in/yaml.v3 v3.0.1 // indirect
98+
)
99+
100+
replace github.com/DataDog/dd-trace-go/v2 => ../../..

0 commit comments

Comments
 (0)