Commit Graph
6 Commits
Author SHA1 Message Date
woggioni 3ec12439b4 feat: add optional tools allowlist via MCP_TOOLS_INCLUDED
When MCP_TOOLS_INCLUDED is set to a comma-separated list of tool names,
only those tools are exposed (tools/list and calls); unset or empty
exposes every generated tool. Unknown names are ignored with a startup
warning and the active selection is logged at startup.
2026-10-19 07:24:41 +00:00
woggioni 6255e71c50 feat: log the available MCP tools at debug level
With LOG_LEVEL=DEBUG, the generated tool list (name and first line of
description) is logged at startup for both transports. The listing is
skipped entirely at higher log levels.
2026-10-19 07:17:33 +00:00
woggioni 363a1bee69 feat: accept per-client API keys from an HTTP header
When serving over HTTP, the key sent in the MCP_API_KEY_HEADER header
(default X-API-Key) is used as the API credential for that request and
takes precedence over the static API_TOKEN. The key is formatted with
API_AUTH_HEADER/API_AUTH_SCHEME and the source header is stripped from
the outgoing API request. Implemented as an httpx2 auth flow over
FastMCP's request context, so concurrent clients stay isolated.
2026-10-19 06:12:58 +00:00
woggioni 8ee7b07b4b docker: base the image on alpine
CI / Build and push docker image (push) Successful in 1m14s
Both build and runtime stages now use python3.13-alpine3.23 (uv image
for the builder, python image for the runtime), with BusyBox
addgroup/adduser for the non-root xmcp user. All native dependencies
ship musllinux wheels, so no compiler is needed in the builder.
2026-10-19 04:26:25 +00:00
woggioni c688f323c1 ci: publish docker image on release tags
CI / Build and push docker image (push) Successful in 1m44s
Gitea Actions workflow triggered by release/* tags: builds the image
with the hostinger runner and pushes
gitea.woggioni.net/woggioni/xmcp:<version> and :latest.

Also document the release process in the README.
2026-10-19 02:43:15 +00:00
woggioni d0fc0c1bc4 Initial commit: xmcp — OpenAPI-to-MCP server
MCP server generated from an OpenAPI document with FastMCP v4.
Configurable via env vars (spec URL/file, transport stdio/http,
host, port, API token), built with uv, multi-stage Dockerfile
with non-root runtime.
2026-10-19 02:34:04 +00:00