Changelog
[Unreleased]
[0.3.0] - 2026-08-16
Added
Dockerfile(multi-stage, non-root, stdio entrypoint) and.dockerignore, so registries that build and introspect the server in a container no longer have to guess a build.- Multi-arch container images (
linux/amd64,linux/arm64) published toghcr.io/ni-c/wg-easy-mcpwith an SBOM and build provenance.server.jsonnow lists the OCI package alongside the npm one. - Documentation site at wg-easy-mcp.ni-c.de: guide, per-tool reference, environment variables and changelog.
- CI additions: CodeQL, a Trivy scan of the image on both architectures, and the GHCR publish job.
mainnow requires all of them. CONTRIBUTING.md, issue forms and GitHub Discussions.
Changed
- Missing
WG_EASY_URL/WG_EASY_USERNAME/WG_EASY_PASSWORDno longer exit at startup. The server completes the MCP handshake and lists its tools without credentials; they are required when a tool actually calls the API, which then fails with the same setup instructions as before. URL validation still exits, since a bad URL can leak the credentials. - Payloads returned by the wg-easy API now carry an explicit untrusted-data marker and are capped at 60 000 characters, with the truncation notice naming the call that fetches the rest. Client names, DNS entries and endpoints are free-form strings, so they are marked as data rather than instructions. Server-composed messages, including the delete confirmation, stay unmarked.
- The runtime image no longer contains npm. The entrypoint is plain
node, and npm's vendored dependency tree was the sole source of the container scan's HIGH/CRITICAL findings. typescript6.0.3,typescript-eslint8.67.0.
Security
WG_EASY_URLcontaining embedded credentials (user:password@host) is now rejected at startup. They bypassed the environment wipe inloadConfig, were prefixed onto every request path and were echoed verbatim in the startup log.
[0.2.2] - 2026-08-11
Added
- Listed in the official MCP Registry as
io.github.ni-c/wg-easy-mcp; the release workflow publishes registry updates automatically via GitHub OIDC (server.json,mcpNamefield). - npm provenance attestations for published packages.
- CodeQL default setup scanning.
Changed
- The repository is now public.
- Dependency majors: zod 4 (first release including it; vitest 4 and eslint 10 in the dev toolchain).
[0.2.1] - 2026-08-11
Added
- Release workflow: pushing a
v*tag runs the test suite, publishes to npm via trusted publishing (OIDC, no token) and creates a GitHub release from the changelog entry. - CI: weekly scheduled runs,
npm auditjob (fails on high/critical), coverage reporting with thresholds on the Node 24 run. - Dependabot updates for npm dependencies (minor/patch grouped) and pinned GitHub Actions.
- Tests for the configuration loader (URL validation, credential cleanup, plain-http warning).
[0.2.0] - 2026-08-11
Security-hardening release based on an internal code audit.
Changed
- Breaking:
delete_clientnow uses a two-step confirmation-token flow (confirmTokenparameter) instead ofconfirm=true. The first call returns a random, short-lived token; only a second call with that token deletes the client. The client name is no longer echoed in tool responses. WG_EASY_INSECURE_TLSnow uses a request-scoped undici dispatcher instead of settingNODE_TLS_REJECT_UNAUTHORIZED=0process-wide.get_server_inforedacts secret fields (privateKey,preSharedKey,password, session/TOTP secrets) from admin API responses.- Upstream error bodies are truncated to 2000 characters and HTML error pages are omitted from error results.
WG_EASY_URLis validated (http/https only); a warning is printed for plain-http URLs to non-local hosts. README examples switched tohttps://.- API requests now have a 15 s timeout and no longer follow redirects.
- Credentials are removed from
process.envafter loading the configuration. - Tool descriptions of
get_client_config,get_client_qrcodeandgenerate_one_time_linknow flag their output as sensitive. - CI: least-privilege
permissions, actions pinned to commit SHAs, Node matrix 22/24. Minimum supported Node.js version raised to 22 (20 is EOL).
[0.1.0] - 2026-08-05
Added
- Initial release targeting the wg-easy v15 REST API (Basic Authentication).
- Client management tools:
list_clients,get_client,create_client,update_client(partial updates via get-merge-post),enable_client,disable_client,delete_client(guarded by aconfirmparameter),get_client_config,get_client_qrcode,generate_one_time_link. get_server_infoaggregating/api/information,/api/admin/generaland/api/admin/interfacewith per-section error tolerance.- Configuration via
WG_EASY_URL,WG_EASY_USERNAME,WG_EASY_PASSWORD, optionalWG_EASY_INSECURE_TLS.