FastMCP Test Server

fastmcp/standalone

Deterministic MCP server over Streamable HTTP for testing MCP proxies and gateways

Deploys a small FastMCP server into a local Kind cluster, built for testing anything that sits in front of an MCP server — proxies, gateways, catalogs. It speaks Streamable HTTP and exposes tools, resources, and prompts, with deterministic behavior: the same call always returns the same result.

  • Endpoint: http://localhost:30800/mcp from the host, http://fastmcp:8000/mcp from inside the cluster.
  • Tools: echo, add, multiply, to_upper, concat, word_count, reverse — trim the roster with the tools variable.
  • Authentication is off by default; set the authToken variable to require a static bearer token.

Install gck#

go install github.com/gravitee-io-labs/gck@latest

For other installation methods, see Installation .

Usage#

Create#

gck create --from fastmcp/standalone

Cleanup#

gck delete

Quick Start#

Run an MCP handshake:

curl -s http://localhost:30800/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"quickstart","version":"1.0"}}}' -i

The response carries an mcp-session-id header; pass it back on subsequent calls (tools/list, tools/call, resources/list, prompts/list).

To require authentication, deploy with a token — unauthenticated requests are then rejected with 401:

gck create --from fastmcp/standalone --set authToken=my-secret

The server also serves plain HTTP endpoints next to /mcp:

  • GET /health — liveness, returns the instance name.
  • POST /admin/tools/hidden_tool/enable (and /disable) — reveals a dormant hidden_tool at runtime, so a test can observe a new upstream tool appearing without redeploying anything.

Testing something that fronts several MCP servers at once? Compose this context with another server product:

gck create --from fastmcp/standalone --from ibm/fast-time-server

Endpoints

Services this context exposes on your machine after gck create, including the ones it inherits from the contexts it composes. Rows marked with a flag only exist when you pass it.

ServiceURLNotesFrom
FastMCPhttp://localhost:30800/mcpfastmcp/standalone

Variables

Template variables overridable with --set. Use --set path.segments.var=value to target a specific context in the composition chain.

VariableDefaultOriginDescription
clusterNamefastmcp-standalonefastmcp/standaloneName of the Kind cluster
imageRepositorypythonfastmcp/standalonePython Docker image repository used to run the server
imageTag3.14-slimfastmcp/standalonePython Docker image tag
fastmcpVersion2.14.7fastmcp/standaloneFastMCP version the server is built on, installed at startup
authToken(empty)fastmcp/standaloneStatic bearer token callers must present; empty disables authentication
tools(empty)fastmcp/standaloneComma-separated roster of tools to expose; empty exposes every tool