Koskamo

Zovo GPA Calc MCP

A GPA calculator for high school and college students that computes exact unweighted, weighted, and cumulative GPA from grades and credits. It supports target GPA planning, final exam score calculation, and adjustable grading scales including honors, AP, IB, and dual-enrollment weights.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo GPA Calc MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://gpa-calculator.zovo.one/mcp
Vendor documentation

What you can do with it

  • Calculate unweighted and weighted GPA from letter grades and credits
  • Determine the grade improvement that raises GPA the most
  • Plan target GPA for next semester based on current credits
  • Calculate required final exam score to achieve a specific grade

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
gpa-calculator 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo GPA Calc computes exact GPAs from letter or percentage grades and credit hours (unweighted and weighted, semester and cumulative), the GPA needed next term to reach a target, and the final exam score needed for a course grade. Schools use different scales: pass the student's scale settings when they mention them (A+ = 4.3, honors/AP bonuses, percent cutoffs).

Tools

3 advertised

calculate_gpa — Calculate GPA
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to calculate their GPA (gpa calculator, gpa calculator college, gpa calculator high school, weighted gpa calculator, gpa calculator cumulative, gpa calculator with current gpa, gpa calculator from percentage, how to calculate gpa with credit hours or letter grades). Takes courses with letter grades (A+ to F), percentages, or P/NP/W, plus credits and level (regular, honors, AP, IB, dual enrollment). Returns exact unweighted and weighted GPA (2 and 3 decimals), cumulative GPA when previous GPA and credits are given, a quality points table, grade distribution, and the single course whose one-letter improvement raises the GPA most. Standard 4.0 scale by default; A+ value, weights, percent cutoffs, and letter points are adjustable because schools differ. Does not read transcripts, convert between countries' grading systems, or predict admissions.

calculate_gpa input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "courses"
  ],
  "properties": {
    "courses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "grade",
          "credits"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 80,
            "description": "Course name, e.g. \"AP Biology\" or \"Calculus I\"."
          },
          "grade": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 12
              },
              {
                "type": "number"
              }
            ],
            "description": "Letter grade A+ to F (e.g. \"B+\"), a percentage (e.g. \"91%\" or 91), grade points on the 4.0 scale (e.g. 3.7 = A-; a bare number up to 4.0, or 4.3 when A+ = 4.3, is read as grade points), or P / NP / W / I for courses that do not count in the GPA."
          },
          "level": {
            "enum": [
              "regular",
              "honors",
              "ap",
              "ib",
              "dual"
            ],
            "type": "string",
            "description": "Course level for the weighted GPA: regular (default), honors, ap, ib, or dual (dual enrollment)."
          },
          "credits": {
            "type": "number",
            "description": "Credit hours or units for the course, greater than 0, e.g. 3 (college) or 1 (a year-long high school class)."
          }
        }
      },
      "description": "The courses for this term, e.g. [{\"name\":\"Biology\",\"grade\":\"A\",\"credits\":4},{\"name\":\"Calculus\",\"grade\":\"B+\",\"credits\":3}]."
    },
    "weights": {
      "type": "object",
      "properties": {
        "ap": {
          "type": "number",
          "description": "Bonus for AP courses, default 1.0."
        },
        "ib": {
          "type": "number",
          "description": "Bonus for IB courses, default 1.0."
        },
        "dual": {
          "type": "number",
          "description": "Bonus for dual-enrollment courses, default 1.0."
        },
        "honors": {
          "type": "number",
          "description": "Bonus for honors courses, default 0.5."
        }
      },
      "description": "Weighted-GPA bonus points by course level, e.g. {\"honors\":0.5,\"ap\":1}. Omit for the common defaults."
    },
    "grade_points": {
      "type": "object",
      "description": "Override points for specific letters if the school's scale differs, e.g. {\"A-\":3.67,\"B+\":3.33}.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "number"
      }
    },
    "previous_gpa": {
      "type": "number",
      "description": "Cumulative GPA already on the transcript, for a cumulative result, e.g. 3.2."
    },
    "a_plus_points": {
      "type": "number",
      "description": "Grade points for an A+: 4.0 (default, standard 4.0 scale) or 4.3 if the school awards 4.3."
    },
    "percent_cutoffs": {
      "type": "object",
      "description": "Minimum percent for each passing letter, used to convert percentage grades, e.g. {\"A\":90,\"B\":80,\"C\":70,\"D\":60}. Below the lowest cutoff is F. Default: A+ 97, A 93, A- 90, B+ 87, B 83, B- 80, C+ 77, C 73, C- 70, D+ 67, D 63, D- 60.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "number"
      }
    },
    "previous_credits": {
      "type": "number",
      "description": "Credit hours behind previous_gpa, e.g. 45."
    },
    "previous_gpa_type": {
      "enum": [
        "unweighted",
        "weighted"
      ],
      "type": "string",
      "description": "Whether previous_gpa is unweighted (default) or weighted; the cumulative GPA uses the same basis."
    }
  }
}
calculate_gpa output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "scale",
    "courses",
    "semester",
    "cumulative",
    "what_if",
    "distribution",
    "settings"
  ],
  "properties": {
    "scale": {
      "type": "string"
    },
    "courses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "grade_input",
          "letter",
          "percent",
          "credits",
          "level",
          "counted",
          "points",
          "weighted_points",
          "quality_points",
          "weighted_quality_points",
          "note"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "level": {
            "type": "string"
          },
          "letter": {
            "type": [
              "string",
              "null"
            ]
          },
          "points": {
            "type": [
              "number",
              "null"
            ]
          },
          "counted": {
            "type": "boolean"
          },
          "credits": {
            "type": "number"
          },
          "percent": {
            "type": [
              "number",
              "null"
            ]
          },
          "grade_input": {
            "type": "string"
          },
          "quality_points": {
            "type": [
              "number",
              "null"
            ]
          },
          "weighted_points": {
            "type": [
              "number",
              "null"
            ]
          },
          "weighted_quality_points": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "summary": {
      "type": "string"
    },
    "what_if": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "course",
            "from",
            "to",
            "credits",
            "gpa_gain",
            "new_gpa",
            "new_cumulative_gpa"
          ],
          "properties": {
            "to": {
              "type": "string"
            },
            "from": {
              "type": "string"
            },
            "course": {
              "type": "string"
            },
            "credits": {
              "type": "number"
            },
            "new_gpa": {
              "type": "number"
            },
            "gpa_gain": {
              "type": "number"
            },
            "new_cumulative_gpa": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "semester": {
      "type": "object",
      "required": [
        "unweighted_gpa",
        "unweighted_gpa_3dp",
        "weighted_gpa",
        "weighted_gpa_3dp",
        "gpa_credits",
        "excluded_credits",
        "quality_points",
        "weighted_quality_points",
        "has_weighted_courses"
      ],
      "properties": {
        "gpa_credits": {
          "type": "number"
        },
        "weighted_gpa": {
          "type": "number"
        },
        "quality_points": {
          "type": "number"
        },
        "unweighted_gpa": {
          "type": "number"
        },
        "excluded_credits": {
          "type": "number"
        },
        "weighted_gpa_3dp": {
          "type": "number"
        },
        "unweighted_gpa_3dp": {
          "type": "number"
        },
        "has_weighted_courses": {
          "type": "boolean"
        },
        "weighted_quality_points": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "settings": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "cumulative": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "gpa",
            "gpa_3dp",
            "basis",
            "previous_gpa",
            "previous_credits",
            "total_credits"
          ],
          "properties": {
            "gpa": {
              "type": "number"
            },
            "basis": {
              "type": "string"
            },
            "gpa_3dp": {
              "type": "number"
            },
            "previous_gpa": {
              "type": "number"
            },
            "total_credits": {
              "type": "number"
            },
            "previous_credits": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "distribution": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "group",
          "credits",
          "share_pct"
        ],
        "properties": {
          "group": {
            "type": "string"
          },
          "credits": {
            "type": "number"
          },
          "share_pct": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
calculate_gpa annotations
{
  "title": "Calculate GPA",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_target_gpa — Plan target GPA
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks what GPA they need next semester or term to reach a target cumulative GPA (e.g. "what GPA do I need to raise my 3.2 to a 3.5", gpa calculator with current gpa). Takes current GPA, credits completed, target GPA, and upcoming credits; returns the exact GPA required on the upcoming credits, whether that is possible on the scale (and clearly says when it is impossible because it exceeds the maximum), the highest cumulative GPA reachable this term, the credits a target would take at straight A's, and the requirement for longer horizons. Does not calculate a GPA from individual grades (use calculate_gpa) and does not judge admissions chances.

plan_target_gpa input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "current_gpa",
    "credits_completed",
    "target_gpa",
    "upcoming_credits"
  ],
  "properties": {
    "max_gpa": {
      "type": "number",
      "description": "Top of the scale, default 4.0. Use 4.3 if A+ = 4.3, or 5.0 for a weighted high school scale."
    },
    "target_gpa": {
      "type": "number",
      "description": "Cumulative GPA the student wants to reach, e.g. 3.5."
    },
    "current_gpa": {
      "type": "number",
      "description": "Current cumulative GPA, e.g. 3.2."
    },
    "upcoming_credits": {
      "type": "number",
      "description": "Credit hours in the upcoming term(s), greater than 0, e.g. 15."
    },
    "credits_completed": {
      "type": "number",
      "description": "Credit hours already counted in current_gpa, e.g. 60. Use 0 for a first term."
    }
  }
}
plan_target_gpa output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "current_gpa",
    "credits_completed",
    "target_gpa",
    "upcoming_credits",
    "max_gpa",
    "status",
    "possible",
    "required_gpa",
    "required_gpa_exact",
    "letter_equivalent",
    "max_achievable_gpa",
    "min_achievable_gpa",
    "credits_needed_at_max",
    "scenarios"
  ],
  "properties": {
    "status": {
      "enum": [
        "possible",
        "impossible",
        "already_secured"
      ],
      "type": "string"
    },
    "max_gpa": {
      "type": "number"
    },
    "summary": {
      "type": "string"
    },
    "possible": {
      "type": "boolean"
    },
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "upcoming_credits",
          "required_gpa",
          "possible"
        ],
        "properties": {
          "possible": {
            "type": "boolean"
          },
          "required_gpa": {
            "type": "number"
          },
          "upcoming_credits": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "target_gpa": {
      "type": "number"
    },
    "current_gpa": {
      "type": "number"
    },
    "required_gpa": {
      "type": "number"
    },
    "upcoming_credits": {
      "type": "number"
    },
    "credits_completed": {
      "type": "number"
    },
    "letter_equivalent": {
      "type": [
        "string",
        "null"
      ]
    },
    "max_achievable_gpa": {
      "type": "number"
    },
    "min_achievable_gpa": {
      "type": "number"
    },
    "required_gpa_exact": {
      "type": "number"
    },
    "credits_needed_at_max": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
plan_target_gpa annotations
{
  "title": "Plan target GPA",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
final_grade_needed — Final exam grade needed
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks what score they need on a final exam to get a course grade ("I have an 85 and the final is 20%, what do I need for a 90"). Takes the current course grade %, the final exam weight %, and the desired course grade %; returns the score needed on the final, flags when it is impossible (above 100%, or above the max with extra credit) or already secured (any score works), the highest and lowest possible course grades, and the score needed for an A, B, C, or D (90/80/70/60). Assumes the current grade covers the rest of the course weight. Does not calculate GPA (use calculate_gpa) and does not handle point-based gradebooks with unknown category weights.

final_grade_needed input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "current_grade_pct",
    "final_weight_pct",
    "target_grade_pct"
  ],
  "properties": {
    "final_weight_pct": {
      "type": "number",
      "description": "How much the final exam counts toward the course grade, as a percent greater than 0, e.g. 20."
    },
    "target_grade_pct": {
      "type": "number",
      "description": "Course grade wanted after the final, as a percent, e.g. 90."
    },
    "current_grade_pct": {
      "type": "number",
      "description": "Current course grade before the final, as a percent, e.g. 85."
    },
    "max_final_score_pct": {
      "type": "number",
      "description": "Highest possible score on the final, default 100. Raise it only if the final has extra credit, e.g. 105."
    }
  }
}
final_grade_needed output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "current_grade_pct",
    "final_weight_pct",
    "target_grade_pct",
    "max_final_score_pct",
    "needed_score_pct",
    "needed_score_exact",
    "status",
    "possible",
    "best_possible_grade_pct",
    "grade_if_zero_pct",
    "letter_targets"
  ],
  "properties": {
    "status": {
      "enum": [
        "possible",
        "impossible",
        "already_secured"
      ],
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "possible": {
      "type": "boolean"
    },
    "letter_targets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "letter",
          "min_grade_pct",
          "needed_score_pct",
          "status"
        ],
        "properties": {
          "letter": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "min_grade_pct": {
            "type": "number"
          },
          "needed_score_pct": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "final_weight_pct": {
      "type": "number"
    },
    "needed_score_pct": {
      "type": "number"
    },
    "target_grade_pct": {
      "type": "number"
    },
    "current_grade_pct": {
      "type": "number"
    },
    "grade_if_zero_pct": {
      "type": "number"
    },
    "needed_score_exact": {
      "type": "number"
    },
    "max_final_score_pct": {
      "type": "number"
    },
    "best_possible_grade_pct": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
final_grade_needed annotations
{
  "title": "Final exam grade needed",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

gpa-calculator-widget — Zovo GPA Calc view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo GPA Calc.

gpa-calculator-widget URI
ui://widget/gpa-calculator-v1-1.0.0-6dc00bc6e68ce0144f2f3841a2af63530fcd89e4396b653700910a3709970287.html

MIME type: text/html;profile=mcp-app

gpa-calculator-widget-legacy — Zovo GPA Calc view (previous versions)

Advertised by the server during the last successful anonymous check.

gpa-calculator-widget-legacy URI template
ui://widget/gpa-calculator-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
536 ms
95th percentile latency
536 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 536 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-gpa-calc-mcp https://gpa-calculator.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-gpa-calc-mcp --url https://gpa-calculator.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-gpa-calc-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-gpa-calc-mcp": {
      "url": "https://gpa-calculator.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-gpa-calc-mcp": {
      "type": "streamableHttp",
      "url": "https://gpa-calculator.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-gpa-calc-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-gpa-calc-mcp": {
      "type": "http",
      "url": "https://gpa-calculator.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-gpa-calc-mcp https://gpa-calculator.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-gpa-calc-mcp": {
      "url": "https://gpa-calculator.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-gpa-calc-mcp": {
      "serverUrl": "https://gpa-calculator.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo GPA Calc MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.