An MCP server that exposes Jupyter notebooks and kernel execution as tools, enabling AI models to interact with Jupyter documents and execute code cells.
Server has 7 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Most tool descriptions are under 100 chars and lack actionable context. Parameters lack type constraints (enums, ranges). No error handling guidance visible. The 'connect' tool exposes authentication tokens as parameters (critical security issue). Output schemas are not documented. Tool composition is reasonable (single responsibility), but descriptions do not explain WHEN to use each tool or what to expect in responses.
Connect to a document and a runtime from the Jupyter MCP server.
Execute a specific cell in the connected notebook and return the outputs.
Execute arbitrary Python code in the connected kernel and return the output.
Get a specific cell from the connected notebook by index.
Get information about the connected Jupyter kernel.
Health check endpoint for the MCP server.
List all cells in the connected notebook document.
Authentication tokens exposed as tool parameters (document_token, runtime_token in 'connect' tool). Credentials must never appear in parameters, use server-side secret injection via environment variables or vault. Agent traces log all parameters, leaking secrets into logs and prompt history.
Output schemas not documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure. E.g., list_cells should document: returns array of {cell_index, cell_type, source, outputs}.
Parameter descriptions are minimal or missing context. 'cell_index' lacks range constraints (0-N?). 'code' parameter in execute_code has no guidance on timeout, output limits, or error handling. Descriptions should state format, constraints, and expected values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No error handling guidance. Tools like execute_code and execute_cell can fail (syntax errors, timeouts, kernel crashes) but descriptions do not explain recovery steps. Error responses should tell LLM: 'Retry? Ask user? Or fatal?'
Tool 'healthz' has generic name and minimal description (35 chars). Health checks are infrastructure concerns, not user-facing tools. Consider removing from tool list or renaming to 'check_server_health' with clearer purpose.