Releases: DIMO-Network/server-garage
Release list
v0.4.0 — mcpserver executor options
What's Changed
mcpserver.ExecutorOption—NewGQLGenExecutor(es, opts ...ExecutorOption)exposes the underlying gqlgen*executor.Executorso services can register handler extensions (billing, complexity limits, query recording, metrics) and error presenters on the MCP path. Source-compatible with existing callers.- Strict selection template keys —
SelectionTemplateparses withmissingkey=error; tool calls omitting a templated key get a clear render error instead of<no value>spliced into the executed GraphQL query. - CI — golangci-lint pinned to v2.12.1 (v2.12.2 artifacts fail installer checksum verification).
Full Changelog: v0.3.0...v0.4.0
v0.3.0 — @mcpToolArg tool-only arguments
What's new
- Repeatable
@mcpToolArg(name, type, description)directive for declaring MCP tool arguments that exist purely to feedSelectionTemplate— no changes needed to the underlying GraphQL field. Lets templated selections (v0.2.0) work without modifying field signatures. See PR #35. ArgDefinition.ToolOnly+ stripping of those args from GraphQL variables before executor invocation.- Small type-string parser so the directive's
type:argument can name any input/scalar/list already in the schema ([Foo!]!,[String!]!,Int, ...).
Example
signals(tokenId: Int!, interval: String!, from: Time!, to: Time!, filter: SignalFilter): [SignalAggregations!]
@mcpTool(
name: "get_signals_time_series"
description: "..."
selection: "timestamp{{range .signalRequests}} {{.name}}(agg: {{.agg}}){{end}}"
)
@mcpToolArg(
name: "signalRequests"
type: "[SignalAggregationRequest!]!"
description: "..."
)The GraphQL signals field is unchanged. The MCP tool gets a required signalRequests input; on each call the template renders it into a concrete selection set and signalRequests is dropped before executing.
Compat
Fully additive. Existing @mcpTool-only usage (static or templated) is unaffected.
v0.2.0 — templated @mcpTool selections
What's new
@mcpTool(selection: ...)now accepts Gotext/templatesyntax. When a selection contains{{, mcpgen emits it asSelectionTemplateonToolDefinitionand putsSelectionPlaceholderin the query. At call time mcpserver renders the template against the call's argument map and splices the result into the query. See PR #34.- Static selections keep working unchanged.
Enables shortcut tools with argument-driven selection sets — for example, a signals time-series tool where each {name, agg} pair in a tool argument becomes its own sub-field in the GraphQL selection.
Notes
- Adds
SelectionTemplatefield toToolDefinitionand exportsSelectionPlaceholderconstant. registerShortcutToolsnow returns anerror(package-internal;Newpropagates it).
v0.1.1
fix(mcpserver): coerce JSON float64 ints to int64 for shortcut tool args
Fixes float64 is not an int errors on every MCP shortcut tool that takes an integer arg (e.g. identity_get_vehicle with tokenId). MCP SDK JSON-decodes number args to float64 inside map[string]any; gqlgen's Int! scalar unmarshaller rejects float64. Args are now coerced to int64 based on ArgDefinition.Type == "integer", recursively for array items with ItemsType == "integer".
v0.0.8
v0.0.7
What's Changed
- feat: add new package for JWT auth by @KevinJoiner in #13
Full Changelog: v0.0.5...v0.0.7
v0.0.6
What's Changed
- build(deps): bump the actions group with 2 updates by @dependabot[bot] in #9
- build(deps): bump github.com/prometheus/client_golang from 1.22.0 to 1.23.0 in the go-mod group by @dependabot[bot] in #8
Full Changelog: v0.0.4...v0.0.6
v0.0.5
What's Changed
- build(deps): bump the actions group with 2 updates by @dependabot[bot] in #9
- build(deps): bump github.com/prometheus/client_golang from 1.22.0 to 1.23.0 in the go-mod group by @dependabot[bot] in #8
Full Changelog: v0.0.4...v0.0.5
v0.0.4
v0.0.3
What's Changed
- Bump the go-mod group across 1 directory with 2 updates by @dependabot[bot] in #6
- feat: add env and logging packages by @KevinJoiner in #7
Full Changelog: v0.0.2...v0.0.3