Skip to content

Dependencies & Toolchain

ModuleVersionPurpose
github.com/mark3labs/mcp-gov0.32.0MCP protocol implementation (stdio transport, tool registration)
github.com/portainer/client-api-go/v2v2.31.2Auto-generated Swagger client for Portainer API
github.com/go-openapi/runtimev0.28.0HTTP transport for Swagger client
github.com/go-openapi/strfmtv0.23.0Format types for Swagger models
github.com/rs/zerologv1.34.0Structured logging (all output to stderr)
golang.org/x/modv0.24.0Semver parsing for version compatibility checks
gopkg.in/yaml.v3v3.0.1YAML parsing for tools.yaml definitions
k8s.io/apimachineryv0.33.1Kubernetes metadata types for K8s response stripping
ModuleVersionPurpose
github.com/stretchr/testifyv1.10.0Test assertions (assert, require)
github.com/testcontainers/testcontainers-gov0.36.0Docker-based integration testing
github.com/docker/dockerv28.0.1Docker API client (used by testcontainers)
github.com/docker/go-connectionsv0.5.0Docker connection utilities
Terminal window
# Update all dependencies
go get -u ./...
go mod tidy
# Update a specific dependency
go get -u github.com/mark3labs/mcp-go@latest
go mod tidy
# Check for outdated modules
go list -u -m all
ToolRequiredPurpose
Go 1.24+YesCompilation, testing
MakeYesBuild automation (see Makefile)
DockerFor integration testsRuns Portainer containers for tests
GoReleaserFor releasesMulti-platform builds, Docker images, changelogs
pnpmFor docsStarlight documentation site
Node.js 20+For docsRequired by Astro/Starlight
WorkflowTriggerPurpose
release.ymlTag push v*GoReleaser build → GitHub Release + Docker images
deploy-docs.ymlPush to main (docs/)Build Starlight → deploy to GitHub Pages

The .goreleaser.yaml file defines:

  • 6 build targets: linux/darwin/windows × amd64/arm64
  • Checksums: SHA256 for all archives
  • Changelog: Auto-generated from conventional commits
  • Docker: Multi-arch images pushed to ghcr.io/jmrplens/portainer-mcp-enhanced

The binary embeds version information via ldflags:

LDFLAGS = -s -w \
-X main.Version=${VERSION} \
-X main.Commit=${COMMIT} \
-X main.BuildDate=${BUILD_DATE}

These are set automatically by both make build and GoReleaser.

ToolVersionPurpose
Astro5.xStatic site generator
Starlight0.35.xDocumentation theme for Astro
pnpm10.xPackage manager
Terminal window
cd docs
pnpm install # Install dependencies
pnpm run dev # Development server (http://localhost:4321)
pnpm run build # Production build
ServicePurposeConfiguration
Portainer APITarget server managed by MCP-server and -token flags
GitHub PackagesDocker image registry (ghcr.io)Automatic via GoReleaser
GitHub PagesDocumentation hostingdeploy-docs.yml workflow

The tools.yaml file has its own version scheme:

version: "v1.2"
  • The server defines MinimumToolsVersion in internal/mcp/server.go
  • At startup, the file version is validated against the minimum
  • Incompatible versions cause a startup failure with a clear message
  • External tools.yaml files can override the embedded one via -tools flag