nemo_gym.base_resources_server

View as Markdown

Module Contents

Classes

Functions

NameDescription
normalize_tool_nameMap a trajectory tool-call name to the server’s bare tool name.

Data

NEMO_GYM_MCP_METADATA_KEY

NEMO_GYM_MCP_SESSION_TOKEN_HEADER

RESERVED_MCP_TOOL_NAMES

_MCP_TOKEN_SALT

API

class nemo_gym.base_resources_server.BaseResourcesServer()

Bases: BaseServer

config
BaseResourcesServerConfig
class nemo_gym.base_resources_server.BaseResourcesServerConfig()

Bases: BaseRunServerInstanceConfig

expose_tools_over_mcp
bool = False
class nemo_gym.base_resources_server.BaseRunRequest()

Bases: BaseModel

responses_create_params
NeMoGymResponseCreateParamsNonStreaming
class nemo_gym.base_resources_server.BaseSeedSessionRequest()

Bases: BaseModel

class nemo_gym.base_resources_server.BaseSeedSessionResponse()

Bases: BaseModel

class nemo_gym.base_resources_server.BaseVerifyRequest()

Bases: BaseRunRequest

response
NeMoGymResponse
class nemo_gym.base_resources_server.BaseVerifyResponse()

Bases: BaseVerifyRequest

reward
float
class nemo_gym.base_resources_server.MCPServerMetadata()

Bases: BaseModel

Metadata returned from /seed_session for per-rollout Gym MCP access.

headers
dict[str, str]
server_name
str
transport
str = 'http'
url_path
str = '/mcp'
class nemo_gym.base_resources_server.SimpleResourcesServer()

Bases: BaseResourcesServer, AggregateMetricsMixin, SimpleServer

config
BaseResourcesServerConfig
nemo_gym.base_resources_server.SimpleResourcesServer.aggregate_metrics(
body: nemo_gym.config_types.AggregateMetricsRequest
) -> nemo_gym.config_types.AggregateMetrics
async

Compute aggregate metrics from verify responses.

RewardProfiler provides baseline stats. Override compute_metrics() and/or get_key_metrics() for benchmark-specific customization.

nemo_gym.base_resources_server.SimpleResourcesServer.mcp_allowed_tools_for_session(
seed_body: dict[str, typing.Any]
) -> typing.Optional[list[str]]

Per-session tool restriction: return the tool names allowed for this rollout’s MCP token, or None (the default) for unrestricted. seed_body is the JSON body POSTed to /seed_session.

nemo_gym.base_resources_server.SimpleResourcesServer.mcp_tools(
harvested: list[nemo_gym.mcp_auto_exposure.MCPTool],
catchall: typing.Optional[typing.Any]
) -> typing.Optional[list[nemo_gym.mcp_auto_exposure.MCPTool]]

Return the MCP tools to expose (default: the auto-harvested typed POST routes).

Override to exclude (filter harvested), add catch-all-backed tools (harvested + [catchall.tool(…)]), or disable (return None). ‘catchall’ is None unless the server has one parameterized catch-all route.

nemo_gym.base_resources_server.SimpleResourcesServer.normalize_tool_name(
name: str
) -> str

Strip this server’s MCP namespace from a trajectory tool-call name (see module function).

nemo_gym.base_resources_server.SimpleResourcesServer.seed_session(
body: nemo_gym.base_resources_server.BaseSeedSessionRequest
) -> nemo_gym.base_resources_server.BaseSeedSessionResponse
async
nemo_gym.base_resources_server.SimpleResourcesServer.setup_webserver() -> fastapi.FastAPI
nemo_gym.base_resources_server.SimpleResourcesServer.verify(
body: nemo_gym.base_resources_server.BaseVerifyRequest
) -> nemo_gym.base_resources_server.BaseVerifyResponse
asyncabstract
nemo_gym.base_resources_server.normalize_tool_name(
name: str,
server_name: typing.Optional[str] = None
) -> str

Map a trajectory tool-call name to the server’s bare tool name.

HTTP-driven agents record bare tool names (“email_reply_email”); MCP-native agents (e.g. Claude Code) record them namespaced per server (“mcp__workplace_assistant__email_reply_email”). Verifiers compare trajectory names against dataset/ground-truth vocabulary, so names are normalized before verify sees them and rollouts score identically on both transports. Non-namespaced names pass through unchanged. When server_name is given, only that server’s prefix is stripped (robust to tool names that themselves contain double underscores). This runs only for servers exposed over MCP and mirrors how MCP clients namespace tool names, so a real tool that is itself named mcp__<server>__x being stripped is accepted.

nemo_gym.base_resources_server.NEMO_GYM_MCP_METADATA_KEY = 'mcp'
nemo_gym.base_resources_server.NEMO_GYM_MCP_SESSION_TOKEN_HEADER = 'X-NeMo-Gym-Session-Token'
nemo_gym.base_resources_server.RESERVED_MCP_TOOL_NAMES = frozenset({'verify', 'seed_session', 'aggregate_metrics', 'mcp'})
nemo_gym.base_resources_server._MCP_TOKEN_SALT = 'nemo-gym-mcp-session-token'