From 4f5a7d36b48bab597ae293b539fcd30e3cb811c0 Mon Sep 17 00:00:00 2001 From: Maciek Kisiel Date: Thu, 5 Feb 2026 13:59:52 +0000 Subject: [PATCH] mcp: finalize cleanup of Go 1.23, make Go version support explicit --- .github/workflows/test.yml | 2 +- README.md | 3 +++ internal/readme/README.src.md | 3 +++ mcp/resource.go | 17 +++++++++++++++++ mcp/resource_go124.go | 29 ----------------------------- mcp/resource_pre_go124.go | 25 ------------------------- 6 files changed, 24 insertions(+), 55 deletions(-) delete mode 100644 mcp/resource_go124.go delete mode 100644 mcp/resource_pre_go124.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 68a3c420..d3f32e03 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: ["1.23", "1.24", "1.25"] + go: ["1.24", "1.25"] steps: - name: Check out code uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4 diff --git a/README.md b/README.md index 5ab65693..47452821 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,9 @@ The following table shows which versions of the Go SDK support which versions of | v1.2.0+ | 2025-06-18 | 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 | | v1.0.0 - v1.1.0 | 2025-06-18 | 2025-06-18, 2025-03-26, 2024-11-05 | +New releases of the SDK target only supported versions of Go. See +https://go.dev/doc/devel/release#policy for more information. + ## Getting started To get started creating an MCP server, create an `mcp.Server` instance, add diff --git a/internal/readme/README.src.md b/internal/readme/README.src.md index 6a832312..57d9da30 100644 --- a/internal/readme/README.src.md +++ b/internal/readme/README.src.md @@ -37,6 +37,9 @@ The following table shows which versions of the Go SDK support which versions of | v1.2.0+ | 2025-06-18 | 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 | | v1.0.0 - v1.1.0 | 2025-06-18 | 2025-06-18, 2025-03-26, 2024-11-05 | +New releases of the SDK target only supported versions of Go. See +https://go.dev/doc/devel/release#policy for more information. + ## Getting started To get started creating an MCP server, create an `mcp.Server` instance, add diff --git a/mcp/resource.go b/mcp/resource.go index dc657f5d..bc4b3cb1 100644 --- a/mcp/resource.go +++ b/mcp/resource.go @@ -113,6 +113,23 @@ func computeURIFilepath(rawURI, dirFilepath string, rootFilepaths []string) (str return uriFilepathRel, nil } +// withFile calls f on the file at join(dir, rel), +// protecting against path traversal attacks. +func withFile(dir, rel string, f func(*os.File) error) (err error) { + r, err := os.OpenRoot(dir) + if err != nil { + return err + } + defer r.Close() + file, err := r.Open(rel) + if err != nil { + return err + } + // Record error, in case f writes. + defer func() { err = errors.Join(err, file.Close()) }() + return f(file) +} + // fileRoots transforms the Roots obtained from the client into absolute paths on // the local filesystem. // TODO(jba): expose this functionality to user ResourceHandlers, diff --git a/mcp/resource_go124.go b/mcp/resource_go124.go deleted file mode 100644 index 4a35603c..00000000 --- a/mcp/resource_go124.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2025 The Go MCP SDK Authors. All rights reserved. -// Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file. - -//go:build go1.24 - -package mcp - -import ( - "errors" - "os" -) - -// withFile calls f on the file at join(dir, rel), -// protecting against path traversal attacks. -func withFile(dir, rel string, f func(*os.File) error) (err error) { - r, err := os.OpenRoot(dir) - if err != nil { - return err - } - defer r.Close() - file, err := r.Open(rel) - if err != nil { - return err - } - // Record error, in case f writes. - defer func() { err = errors.Join(err, file.Close()) }() - return f(file) -} diff --git a/mcp/resource_pre_go124.go b/mcp/resource_pre_go124.go deleted file mode 100644 index d1f72eed..00000000 --- a/mcp/resource_pre_go124.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2025 The Go MCP SDK Authors. All rights reserved. -// Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file. - -//go:build !go1.24 - -package mcp - -import ( - "errors" - "os" - "path/filepath" -) - -// withFile calls f on the file at join(dir, rel). -// It does not protect against path traversal attacks. -func withFile(dir, rel string, f func(*os.File) error) (err error) { - file, err := os.Open(filepath.Join(dir, rel)) - if err != nil { - return err - } - // Record error, in case f writes. - defer func() { err = errors.Join(err, file.Close()) }() - return f(file) -}