Repository navigation
v0.6.3
[0.6.3] — 2026-05-16
Headline: sign mcp serve --http — second MCP transport that speaks JSON-RPC 2.0 over HTTP, so the same 19 tools / 4 prompts / 12 resources can be reached from remote MCP aggregators (Smithery, OpenAI Agents SDK over HTTP, custom services) without spawning a local npx process. Stdio remains the default. Listed on Smithery at drbaher/sign-cli.
Added
sign mcp serve --http true— boots the MCP server overnode:httpinstead of stdio. Flags:--http-port(default$PORTor8080),--http-bind(default0.0.0.0),--http-path(default/mcp),--http-auth-token(also reads$SIGN_MCP_HTTP_AUTH_TOKEN). CORS open, OPTIONS preflight handled, 1 MiB max body, JSON-RPC dispatched through the same code path as stdio (so--read-only,--capability,--toolallow-lists,--emit-eventsall apply).GET /healthreturns{ ok, mcp, endpoint }and is always unauthenticated. When a bearer token is set, every/mcprequest must includeAuthorization: Bearer <token>; mismatched/missing tokens get a 401 withWWW-Authenticate: Bearer realm="sign-cli MCP".deploy/Dockerfile.mcp-http+entrypoint-mcp-http.sh— hosted container variant that runssign mcp serve --httpon$PORT. Read-only + ephemeral SQLite + 4h TTL reset, same demo-safety model as the existingservecontainer. Powers sign-cli-mcp-production.up.railway.app/mcp.
Changed
deploy/DockerfileandDockerfile.mcp-httpnow copyscripts/beforenpm installso the postinstalltrim-pdfjs-dist.mjsstep can find itself. Fixes silent build breakage introduced when the postinstall hook was added.railway.tomlno longer pinsdockerfilePath; each service selects its Dockerfile via theRAILWAY_DOCKERFILE_PATHenv variable. This lets the same repo deploy bothsign-cli-demo(HTTP/v1/*) andsign-cli-mcp(MCP-over-HTTP) services from one config.
Fixed
signer_list'soutputSchemawas the only tool whose top-leveltypewas"array". Per the MCP spec and Smithery's scanner,outputSchema.typemust be"object"(it describesstructuredContent, which is always an object). Dropped the schema annotation for this one tool rather than wrapping the wire payload — the actual JSON-RPC response shape is unchanged for existing clients.