Module: Mathpix::MCP::HttpApp

Defined in:
lib/mathpix/mcp/http_app.rb

Overview

Builds a Rack application that serves the Mathpix MCP server over the MCP Streamable HTTP transport, guarded by a bearer token.

Examples:

config.ru

require 'mathpix/mcp/http_app'
run Mathpix::MCP::HttpApp.build

Defined Under Namespace

Classes: BearerAuth

Class Method Summary collapse

Class Method Details

.build(token: ENV.fetch('MATHPIX_MCP_TOKEN', nil), server: nil) ⇒ #call

Build the bearer-guarded Rack app.

Parameters:

  • token (String) (defaults to: ENV.fetch('MATHPIX_MCP_TOKEN', nil))

    required bearer token (defaults to MATHPIX_MCP_TOKEN)

  • server (Mathpix::MCP::Server) (defaults to: nil)

    optional pre-built server

Returns:

  • (#call)

    a Rack application

Raises:

  • (RuntimeError)

    if no token is configured



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/mathpix/mcp/http_app.rb', line 24

def build(token: ENV.fetch('MATHPIX_MCP_TOKEN', nil), server: nil)
  raise 'MATHPIX_MCP_TOKEN must be set to run the HTTP transport (bearer-token auth is required)' if token.nil? || token.empty?

  mcp_server = (server || Mathpix::MCP::Server.new).mcp_server
  # stateless + JSON responses keep this simple and sidestep session
  # state entirely; bearer auth guards every request.
  transport = ::MCP::Server::Transports::StreamableHTTPTransport.new(
    mcp_server, stateless: true, enable_json_response: true
  )
  BearerAuth.new(transport, token: token)
end