jungle-grid-mcp-server
OfficialThe Jungle Grid MCP Server is a gateway that lets AI agents submit, monitor, and manage GPU workloads on Jungle Grid's cloud infrastructure. Key capabilities include:
Estimate a job (
estimate_job) — Get a cost and GPU tier estimate before committing, with options to compare optimization strategies (cost, speed, balanced).Submit a job (
submit_job) — Launch a GPU workload asynchronously using a Docker image and command, with configuration options for GPU type/class, region, environment variables, disk size, latency/cost priority, and Hugging Face credentials.Get job status (
get_job) — Retrieve the current status and full details of a specific job; terminal states arecompleted,failed, andcancelled.List jobs (
list_jobs) — Retrieve a paginated list of recent jobs, optionally filtered by status.Cancel a job (
cancel_job) — Cancel a pending, queued, or running job with an optional reason.Get job logs (
get_job_logs) — Retrieve stdout/stderr output for a completed or running job.Stream job logs (
stream_job_logs) — Stream live log output in real-time, blocking until the job reaches a terminal state or a timeout (up to 10 minutes).List job artifacts (
list_job_artifacts) — List output artifacts uploaded from/workspace/artifactsfor managed jobs.Get artifact download URL (
get_artifact_download_url) — Generate a temporary signed download URL for a specific job artifact.
Thin MCP gateway for Jungle Grid. The server exposes agent-facing tools for ChatGPT, Cursor, Claude, and other MCP clients, then forwards all real work to the main Jungle Grid API.
This repo does not schedule jobs, choose providers, calculate billing, or store artifacts. Those responsibilities stay in the Jungle Grid API.
Endpoints
POST /mcp- MCP Streamable HTTP endpointGET /.well-known/oauth-protected-resource- OAuth protected resource metadataGET /.well-known/openai-apps-challenge- OpenAI Apps domain verification challengeGET /healthz- health check
Production URL:
https://mcp.junglegrid.dev/mcpEnvironment
PORT=3000
JUNGLEGRID_API_BASE=https://api.junglegrid.dev
JUNGLEGRID_INTERNAL_SERVICE_TOKEN=...
OAUTH_ISSUER=https://api.junglegrid.dev
MCP_RESOURCE=https://mcp.junglegrid.dev
MCP_RESOURCE_METADATA_URL=https://mcp.junglegrid.dev/.well-known/oauth-protected-resource
OPENAI_APPS_CHALLENGE_TOKEN=...
NODE_ENV=productionHosted HTTP MCP requires Authorization: Bearer <OAuth access token>. The server
introspects that token with the Jungle Grid API, enforces tool scopes, and
forwards the user token to the API. JUNGLEGRID_INTERNAL_SERVICE_TOKEN is used
only for MCP-to-API introspection and other internal server-to-server calls; it
is not used as the ChatGPT user identity.
Legacy aliases are still accepted for stdio compatibility:
JUNGLE_GRID_API_URLas an alias forJUNGLEGRID_API_BASEJUNGLE_GRID_API_KEYas a final auth fallback for local stdio use
OPENAI_APPS_CHALLENGE_TOKEN is optional for local development. In production,
set it to the exact OpenAI developer portal domain-verification token so the
public unauthenticated challenge endpoint can return it as plain text.
Local Development
npm install
npm test
npm run buildRun the hosted HTTP server:
JUNGLEGRID_API_BASE=https://api.junglegrid.dev \
JUNGLEGRID_INTERNAL_SERVICE_TOKEN=... \
npm startThen check:
curl http://localhost:3000/healthzMCP Tools
estimate_job- estimates routing, capacity source, and expected cost without submitting a workload. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.submit_job- submits a workload for execution and may start managed compute infrastructure and incur usage charges. Annotations:readOnlyHint=false,openWorldHint=true,destructiveHint=false.list_jobs- lists the authenticated user's Jungle Grid jobs, optionally filtered by status, with cursor pagination. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.get_job- retrieves status and execution details for an authenticated user's job. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.get_job_logs- retrieves execution logs for an authenticated user's job. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.cancel_job- cancels an existing job and may stop active execution. Annotations:readOnlyHint=false,openWorldHint=true,destructiveHint=true.list_artifacts- lists output artifacts associated with a job. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.get_artifact- retrieves temporary download information for an existing output artifact. Annotations:readOnlyHint=true,openWorldHint=false,destructiveHint=false.
All tools return a useful text summary and include the Jungle Grid API response
in structuredContent.data; job status billing fields are normalized to avoid
confusing account lifetime spend with job-specific cost. Each tool also exposes an MCP
outputSchema for that structured content wrapper.
Connecting Clients
For hosted MCP clients that support Streamable HTTP, use:
https://mcp.junglegrid.dev/mcpChatGPT and other hosted clients should discover auth from
/.well-known/oauth-protected-resource, connect the user's Jungle Grid account,
and then send the OAuth access token as Authorization: Bearer ....
Claude Desktop / Cursor Stdio Compatibility
The package still supports local stdio mode for existing MCP host configs. The
bin defaults to stdio; npm start and Docker use HTTP mode.
Claude Desktop example:
{
"mcpServers": {
"junglegrid": {
"command": "npx",
"args": ["-y", "@jungle-grid/mcp"],
"env": {
"JUNGLEGRID_API_BASE": "https://api.junglegrid.dev",
"JUNGLE_GRID_API_KEY": "jg_..."
}
}
}
}For Cursor project configs, avoid committing secrets. Put the token in the environment used to launch Cursor and keep checked-in config secret-free.
Docker
docker build -t junglegrid-mcp .
docker run --rm -p 3000:3000 \
-e PORT=3000 \
-e JUNGLEGRID_API_BASE=https://api.junglegrid.dev \
-e JUNGLEGRID_INTERNAL_SERVICE_TOKEN=... \
-e OPENAI_APPS_CHALLENGE_TOKEN=... \
junglegrid-mcpPublishing
Normal users should continue to run the MCP server through the public npmjs package:
npx -y @jungle-grid/mcpReleases are published from GitHub Releases and version tags. The package is distributed publicly through npmjs for normal installation, and the same package version is also published to GitHub Packages as a repository-linked package mirror. GitHub Packages is not the default install path for end users unless a specific workflow requires it.
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jungle-Grid/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server