{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_vv3gnwsjkwsm","handle":"af-jupyterhub-mcp","url":"https://wellknown.network/agents/af-jupyterhub-mcp","links":{"self":"https://wellknown.network/agents/af-jupyterhub-mcp/record.json","html":"https://wellknown.network/agents/af-jupyterhub-mcp","markdown":"https://wellknown.network/agents/af-jupyterhub-mcp/record.md","api":"https://wellknown.network/api/v1/agents/af-jupyterhub-mcp","status":"https://wellknown.network/api/v1/agents/af-jupyterhub-mcp/status","claim":"https://wellknown.network/agents/af-jupyterhub-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/af-jupyterhub-mcp/claim.json","badge":"https://wellknown.network/agents/af-jupyterhub-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/af-jupyterhub-mcp/history","tools":"https://wellknown.network/api/v1/agents/af-jupyterhub-mcp/tools"},"ard":{"identifier":"urn:air::server:af-jupyterhub-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"af-jupyterhub-mcp","summary":"MCP Server for launching and driving per-user JupyterHub servers on the ATLAS Analysis Facility","description":"# af-jupyterhub-mcp\n\n<!-- --8<-- [start:intro] -->\n\nMCP server that lets UChicago ATLAS Analysis Facility users start, inspect,\nstop, and delete their own JupyterHub named servers on\n[jupyterhub.af.uchicago.edu](https://jupyterhub.af.uchicago.edu), and work\ninside them (run code, edit notebooks, drive the JupyterLab UI), as tools for\nLLMs behind the [af-mcp-platform](https://github.com/maniaclab/af-mcp-platform)\nbroker.\n\n<!-- --8<-- [end:intro] -->\n\n<!-- --8<-- [start:architecture] -->\n\n## Architecture\n\n```\nLLM <--MCP/HTTP--> af-mcp-platform aggregator --Bearer: linked hub token--> af-jupyterhub-mcp\n                                                                              |\n                                      JupyterHub REST API  <------------------+\n                                      /hub/api/users/<you>/servers/<name>     |\n                                      hub proxy /user/<you>/<name>/mcp  <-----+--> jupyter-mcp-server\n```\n\nEverything goes through JupyterHub and nothing else. Servers are started with\n`POST /hub/api/users/<you>/servers/<name>`, whose body is the spawner's\n`user_options` (image, site, CPU, memory, QoS, GPUs). The tool then follows the\nhub's spawn progress stream, sending MCP progress notifications until the server\nis ready. Notebook tools reach the server's own `jupyter-mcp-server` through the\nhub proxy, so they work for servers on any site (`local`, `ssl`, `nrp`). The\nbackend never talks to Kubernetes or BinderHub. Servers launched from the\nBinderHub UI are ordinary named servers of the same user, so they show up and\nwork here too.\n\nLaunched images must include `jupyterhub-singleuser` (ml_platform has since\n[#21](https://github.com/maniaclab/ml_platform/pull/21)) and\n`jupyter-mcp-server` (plus `jupyter-mcp-tools` for the `nb_ui_*` tools).\n\n<!-- --8<-- [end:architecture] -->\n\n<!-- --8<-- [start:auth] -->\n\n## Authentication\n\n- **The user's own hub token.** af-mcp-platform links each user's JupyterHub\n  account through the hub's OAuth (…","publisher":null,"homepage":"https://github.com/maniaclab/af-jupyterhub-mcp","repository":"https://github.com/maniaclab/af-jupyterhub-mcp/issues","version":"0.1.1","license":null,"protocols":["mcp"],"tags":["mcp"],"pricing":null,"endpoints":[{"url":"pypi:af-jupyterhub-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"code.execution","name":"Code Execution","confidence":0.814,"provenance":"derived"}],"categories":["code","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"af-jupyterhub-mcp","registry":"pypi","observedAt":"2026-11-05T21:26:26.020Z","publishedAt":"2026-11-04T21:03:50.250528Z","latestVersion":"0.1.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"af-jupyterhub-mcp","url":"https://pypi.org/project/af-jupyterhub-mcp/","firstSeenAt":"2026-11-05T21:24:13.972Z","fetchedAt":"2026-11-05T21:24:13.972Z","normalizedAt":"2026-11-05T21:24:13.972Z"}]},"firstSeenAt":"2026-11-05T21:24:13.972Z","updatedAt":"2026-11-05T21:26:26.020Z"}