Skip to main content
Glama
ihrpr
by ihrpr

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.9

  • Disambiguation5/5

    Each tool targets a distinct operation: reading the full notebook with or without outputs, reading a specific cell's output, executing a cell, adding a cell, and editing a cell. The two read-notebook variants are clearly differentiated by their descriptions and use cases, so there is no real ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern (e.g., read_notebook_with_outputs, execute_cell, add_cell). The three read_* variants are slightly longer but still adhere to the same convention, and the overall style is uniform.

    Tool Count5/5

    With six tools, the server is well-scoped for the purpose of reading, executing, and modifying Jupyter notebooks. The number is neither too thin nor excessive, and each tool covers a distinct aspect of the core workflow.

    Completeness4/5

    The tool surface covers the primary notebook operations: reading (with/without outputs, specific cell output), executing cells, adding cells, and editing cells. A notable gap is the absence of a delete_cell tool, but this does not critically hinder common workflows and can be worked around by editing cell content.

  • Average 3.6/5 across 6 of 6 tools scored. Lowest: 2.9/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations are absent, so the description carries the burden. It only says 'edit' without disclosing whether the entire source is overwritten, whether the cell must exist (errors if not), or whether outputs are invalidated. No side effects or error conditions are mentioned.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence with no fluff. However, it is extremely brief and could benefit from additional context (e.g., in a following sentence), so it is efficient but not excellently structured for completeness.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool requires three parameters and performs a mutation, yet the description is only a one-sentence purpose statement. There is no mention of error scenarios, behavioral impact on outputs, or how it relates to sibling read/execute tools. Given the complexity of a notebook cell editor, this is incomplete.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The description clarifies that 'source' refers to the source code to be set, but it does not describe the format (e.g., full string). It says nothing about 'notebook_path'. The only parameter description comes from the schema for cell_id, which tells how to obtain it. With only 33% schema coverage and no compensation in the description, parameter semantics are weak.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description explicitly states the action (edit), the target (source code of an existing cell), and clearly differentiates from sibling tools like add_cell (which creates) and execute_cell (which runs). This is a specific and clear purpose statement.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    There is no guidance on when to use this tool versus alternatives. It does not mention that this modifies an existing cell and should be used instead of add_cell when the cell already exists, nor does it instruct to combine with execute_cell to run the edited code. No exclusions or alternatives are provided.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    No annotations are present, so the description must carry the behavioral disclosure burden. It only states that a cell is added at a position, but does not mention side effects, default cell_type when omitted, behavior when position is omitted, or whether the notebook needs to be open.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence with no filler. All words contribute meaning, making it very easy to parse and remember.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a mutating tool with four parameters and no annotations or output schema, this description is too sparse to support correct invocation. It omits parameter semantics, defaults, and side effects, leaving the agent to guess how to supply 'source' and 'cell_type'.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 0%, so the description must compensate for missing parameter explanations. It only clarifies the 'position' parameter ('at the specified position'), but leaves 'source', 'cell_type', and 'notebook_path' semantically unexplained.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses the specific verb 'Add' and names the resource 'cell' and 'notebook', clearly distinguishing it from sibling tools like edit_cell and execute_cell. The phrase 'at the specified position' directly ties to the position parameter, making the tool's function unambiguous.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No guidance is provided about when to use this tool versus edit_cell or execute_cell, and no exclusions or prerequisites are mentioned. The description only states the action, leaving the agent to infer the appropriate use case.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    No annotations are provided, so the description must fully disclose behavior. It only says 'read', which implies non-destructive, but does not explicitly state that the cell is not executed, nor does it describe what happens if the cell has no output or whether stderr is included. This leaves significant ambiguity for an agent.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence of 10 words. Every word contributes to the meaning, with no redundancy or irrelevant detail.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has no output schema, no annotations, and only a two-parameter schema. The description does not cover return value format, when to use this tool vs siblings, or edge cases like a cell with no output. Core action is stated, but essential context for safe and effective use is missing.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema has zero description coverage for parameters. The description clarifies that cell_id identifies the cell, and notebook_path is implied as the notebook location, but it does not explain format, constraints, or examples for either parameter. Minimal value is added over the bare schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool reads the output of a specific cell in a notebook, using cell_id as the selector. This explicitly differentiates it from sibling tools like read_notebook_with_outputs, which target entire notebooks, and execute_cell, which runs code.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'specific cell' implies this tool is for reading a single cell's output rather than a full notebook read, but it does not explicitly name when to use it over alternatives or provide exclusion criteria. Siblings are not referenced, leaving the agent to infer usage context.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It discloses the core behavior (execution, output return) and implies error checking, but it does not mention potential side effects (e.g., changing kernel state, filesystem modifications) or what happens on errors (though 'without errors' hints at error reporting). This is adequate but not rich in detail.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is two concise sentences with no fluff. It front-loads the primary action and then explains the intended use case, earning every word.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a relatively simple tool with no output schema and no annotations, the description covers the basic purpose but leaves gaps: no mention of error behavior, timeouts, or the exact return format. Given the simplicity, this is a minimum viable description but not fully complete.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema provides no descriptions for notebook_path or cell_id, and the description does not mention these parameters at all. Since schema coverage is 0%, the description must compensate, but it fails to explain the meaning or format of the parameters. The names are self-explanatory but do not cover details like whether cell_id is an index or UUID.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the action: 'Executes a specific cell in a notebook and returns its output.' This uses a specific verb and resource, and naturally distinguishes this tool from siblings like read_notebook_with_outputs (which reads without executing) and add_cell/edit_cell (which modify the structure).

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides clear context: 'Useful to check that the cell runs without errors as well as produces the desired output.' This tells the agent when to use this tool, though it does not explicitly mention alternatives or when not to use it. The exclusion from read-only tools is implied but not stated.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It adds useful scope ('including cell outputs', 'current version') but does not disclose return format, potential side effects, or error behavior. For a read operation this is acceptable but not thorough.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two concise sentences: the first includes the action and object, the second provides usage context. Every word earns its place, with no redundant or vague phrasing.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple read tool with one parameter and no output schema, the description provides enough context for selection and invocation: what it reads, what's included, and when to use it. It could mention the return structure, but the purpose and usage are clear.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema has one simple parameter (notebook_path) with 0% description coverage. The tool description references notebook_path but only by name, adding no semantic detail about path format, requiredness, or examples. This is minimal but not harmful.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses a specific verb ('Read') and identifies the exact resource ('the notebook at notebook_path') with the key differentiator ('including cell outputs'). This clearly distinguishes it from siblings like read_notebook_source_only and read_output_of_cell.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    It explicitly states when to use the tool ('before modifying a notebook to understand its existing content'), which provides strong contextual guidance. However, it does not name alternatives or explicitly state when not to use it, so it falls short of the top score.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    No annotations are provided, so the description carries the full burden. It discloses that the tool reads without outputs, which is a key behavioral trait, and implies read-only operation. It does not mention any additional side effects or permissions, but for a simple read operation this is sufficient.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is two concise sentences with no redundancy. It front-loads the core function and adds usage context efficiently, making every word meaningful.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's simplicity (one parameter, no output schema, no annotations), the description is mostly complete. It states what the tool does, when to use it, and how to get outputs separately. It could explicitly say it returns the notebook source, but that is strongly implied by 'Read the current version of the notebook.'

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema has only one parameter, notebook_path, with no description. The tool description mentions 'the notebook at notebook_path,' explicitly tying the parameter to the notebook's location. While it doesn't elaborate on format or constraints, the single parameter's meaning is clear from context.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool reads the current notebook version without outputs, using a specific verb and resource. It distinguishes itself from the sibling read_notebook_with_outputs and read_output_of_cell tools by explicitly mentioning the absence of outputs.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit guidance on when to use this tool: 'Use this when size limitations prevent reading the full notebook with outputs.' It also names an alternative for retrieving cell outputs (read_output_of_cell), giving clear and actionable context.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

mcp-server-jupyter MCP server

Copy to your README.md:

Score Badge

mcp-server-jupyter MCP server

Copy to your README.md:

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/ihrpr/mcp-server-jupyter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server