Class: OAuth2::MCP::RackMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/oauth2/mcp.rb,
sig/oauth2/mcp.rbs

Overview

Rack-compatible middleware for protecting MCP HTTP endpoints.

Constant Summary collapse

AUTHORIZATION_ENV_KEY =

Returns:

  • (String)
"oauth2.mcp.authorization"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, resource_server:, scopes: []) ⇒ RackMiddleware

Returns a new instance of RackMiddleware.

Parameters:

  • app (Object)
  • resource_server: (ResourceServer)
  • scopes: (Object) (defaults to: [])


327
328
329
330
331
# File 'lib/oauth2/mcp.rb', line 327

def initialize(app, resource_server:, scopes: [])
  @app = app
  @resource_server = resource_server
  @scopes = scopes
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.

Returns:

  • (Object)


325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def app
  @app
end

#resource_serverResourceServer (readonly)

Returns the value of attribute resource_server.

Returns:



325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def resource_server
  @resource_server
end

#scopesObject (readonly)

Returns the value of attribute scopes.

Returns:

  • (Object)


325
326
327
# File 'lib/oauth2/mcp.rb', line 325

def scopes
  @scopes
end

Instance Method Details

#call(env) ⇒ [Integer, Hash[String, String], Array[String]]

Parameters:

  • env (Hash[untyped, untyped])

Returns:

  • ([Integer, Hash[String, String], Array[String]])


333
334
335
336
337
338
339
# File 'lib/oauth2/mcp.rb', line 333

def call(env)
  result = resource_server.authorize(request: env, scopes: scopes_for(env))
  return unauthorized_response(result) unless result.allowed?

  env[AUTHORIZATION_ENV_KEY] = result
  app.call(env)
end