Hookway

Mcp gateway — templates/mcp-gateway

# Supply independent gateway and upstream credentials through your secret provider.
server:
  addr: ":8080"
  max_body_bytes: 1048576
credentials:
  service_status:
    kind: static
    allowed_origins: ["https://status.example.com"]
    headers:
      Authorization:
        prefix: "Bearer "
        secret_ref: {provider: env, name: STATUS_API_TOKEN}
flows:
  mcp_gateway:
    capture_failures: false
    nodes:
      - id: mcp
        type: mcp_trigger
        path: /mcp
        public_url: https://hookway.example.com/mcp
        auth:
          api_keys:
            reader:
              secret_ref: {provider: env, name: MCP_READER_TOKEN}
        tools:
          - name: get_service_status
            description: Get the current status of the configured service.
            read_only: true
            access: {api_keys: [reader]}
            input_schema: {type: object, additionalProperties: false}
            output_schema:
              type: object
              properties: {status: {type: string}}
              required: [status]
              additionalProperties: false
          - name: format_greeting
            description: Format a greeting using native Hookway transformation.
            read_only: true
            access: {api_keys: [reader]}
            input_schema:
              type: object
              properties: {name: {type: string, minLength: 1, maxLength: 100}}
              required: [name]
              additionalProperties: false
            output_schema:
              type: object
              properties: {name: {type: string}}
              required: [name]
              additionalProperties: false
      - id: status
        type: http_request
        method: GET
        url: https://status.example.com/status
        credential: {profile: service_status}
        max_response_bytes: 1048576
      - {id: status_result, type: mcp_result, source: upstream}
      - id: greeting
        type: transform
        kind: field_map
        mappings: [{from: body.name, to: body.greeting.name}]
      - {id: greeting_result, type: mcp_result, source: body, field: greeting}
    edges:
      - mcp:get_service_status>status
      - status>status_result
      - mcp:format_greeting>greeting
      - greeting>greeting_result