Skip to main content
Glama

FCPS School MCP

Schoology and StudentVUE, directly inside your AI assistant.

MIT License Node 22+ MCP

Local-first · No API keys · No database · No cloud account

An unofficial, open-source Model Context Protocol server for Fairfax County Public Schools students. It gives MCP-compatible assistants live, read-only access to Schoology courses and materials plus official grades from SIS StudentVUE.

Install in one command

You need Node.js 22 or newer and an existing FCPS student account. Then run this in PowerShell, Command Prompt, Terminal, or any Linux shell:

npx --yes --allow-remote=all --ignore-scripts --package=https://github.com/jibberswrld/fcps-school-mcp/archive/refs/tags/v1.0.1.tar.gz fcps-school-mcp setup

Enter your FCPS username and password when prompted. The setup command saves them only on your computer and automatically configures any detected copy of Claude Desktop, Cursor, or Windsurf. Restart your AI app, and fcps-school will appear as an MCP server.

That is the entire setup. You do not need a Schoology developer key, Supabase, Vercel, Docker, or a browser session.

Related MCP server: Canvas LMS MCP Server

What it can do

  • Show current StudentVUE grades, percentages, categories, and assignment scores.

  • Merge official StudentVUE scores into Schoology course and assignment results.

  • List Schoology courses, assignments, due dates, calendar events, and announcements.

  • Browse nested course-material folders, pages, documents, and assignment attachments.

  • Extract readable text from Schoology PDF, DOCX, and PPTX attachments after Schoology converts them to PDF.

The latest assignment-attachment and document-reading behavior from the live MCP is included in this release.

Available tools

Tool

Purpose

schoology_get_profile

Signed-in Schoology profile

schoology_list_sections

Courses with official StudentVUE grades

schoology_get_assignments

Assignments, attachments, and matched scores

schoology_get_materials

Course folders, pages, files, and assignments

schoology_read_document

Text from documents and assignment attachments

schoology_get_upcoming_events

Upcoming deadlines and events

schoology_get_calendar

Calendar events between two dates

schoology_get_recent_activity

Account-wide announcements and updates

schoology_get_section_updates

Updates for one course

studentvue_get_grades

Official current course marks and percentages

studentvue_get_assignments

Official assignment grades and category weights

Use it with another MCP client

The setup command stores credentials even when it does not recognize your client. Add this stdio server entry to any client that accepts standard mcpServers configuration:

{
  "mcpServers": {
    "fcps-school": {
      "command": "npx",
      "args": [
        "--yes",
        "--allow-remote=all",
        "--ignore-scripts",
        "--package=https://github.com/jibberswrld/fcps-school-mcp/archive/refs/tags/v1.0.1.tar.gz",
        "fcps-school-mcp"
      ]
    }
  }
}

On Windows, use "command": "cmd" and put "/c", "npx" before the other arguments.

You can also skip stored credentials and provide SCHOOLOGY_USERNAME and SCHOOLOGY_PASSWORD as environment variables in your MCP client configuration.

Privacy and security

  • Runs locally over stdio. It does not open a public server or upload data to this repository.

  • Sends your credentials only to the official FCPS ForgeRock login service at aic.fcps.edu.

  • Makes read-only requests to official FCPS Schoology and StudentVUE services, plus Schoology's signed file CDN for requested attachments.

  • Stores credentials outside the repository in your operating system's user configuration directory. On macOS and Linux, the file is created with 0600 permissions.

  • Includes no telemetry, analytics, shared database, bundled student data, or developer-controlled backend.

  • Enforces a 15-minute cooldown after a failed login to reduce the risk of an FCPS account lockout.

Treat your local credential file like a password. Do not commit it, share it, or place it in a synced public folder.

Troubleshooting

The MCP does not appear after setup

Fully quit and reopen the MCP client. If your client was not detected, use the manual configuration above.

Login is cooling down

Stop retrying. Confirm your password, wait 15 minutes, then try once. The cooldown is intentional because repeated FCPS login failures can lock an account.

A document has no extractable text

The file is probably a scan or image-only PDF. OCR is not included.

Remove saved credentials

Delete credentials.json from the path printed by the setup command, then remove fcps-school from your MCP client config.

Development

git clone https://github.com/jibberswrld/fcps-school-mcp.git
cd fcps-school-mcp
npm install
npm test

Run npm run setup for local configuration or npm start to start the stdio server.

Scope and disclaimer

This release is intentionally FCPS-specific. Other districts use different Schoology tenants, identity providers, and StudentVUE deployments, so they are not supported by this package.

This project is unofficial and is not affiliated with or endorsed by Fairfax County Public Schools, PowerSchool/Schoology, or Edupoint/StudentVUE. Use it only with your own account and follow your school's technology policies.

License

MIT © 2026 Jabir O. Mohamed

Available Tools

11 tools
schoology_get_assignmentsC

List Schoology assignments with attachments and matched StudentVUE scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionIdNo

TDQS

C2.9/5.0
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 usefully discloses that results are enriched with attachments and cross-matched StudentVUE scores (a real behavioral trait), but says nothing about permissions, pagination, or failure modes when no StudentVUE match exists.

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?

A single front-loaded sentence with no wasted words. It is terse rather than structured, but nothing is padded.

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?

No output schema and no annotations, so the description is the only source of behavioral detail; it covers purpose and return content but omits parameter semantics and the mechanics of the Schoology/StudentVUE match. Inadequate for an integration tool with an undocumented identifier parameter.

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 description coverage is 0% and the description never mentions sectionId. It does not explain what a section ID is, where to get one, or what happens when the parameter is omitted (it is not required), leaving a real ambiguity about whether the call is global or scoped.

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

Purpose4/5

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

Specific verb (List) plus resource (Schoology assignments) and it hints at enrichment (attachments, matched StudentVUE scores). It does not, however, distinguish itself from the sibling studentvue_get_assignments, which an agent must choose between.

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 statement of when to use this tool versus the very similar sibling studentvue_get_assignments, no prerequisites, and no exclusion conditions. The agent must infer scope from the name alone.

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

schoology_get_calendarC

Get Schoology calendar events between two ISO dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it says nothing about authentication, pagination, result ordering, or what happens when start/end are omitted (0 required parameters). For a read tool with zero structured hints, this is a significant gap.

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?

A single front-loaded sentence with no filler; the resource and constraints come first. It is efficient, though the brevity is partly a result of missing information rather than disciplined trimming.

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 two-parameter tool with no annotations, no output schema, and no schema descriptions, the description is too thin. It leaves return shape, date-boundary semantics, default behavior for omitted parameters, and sibling differentiation entirely unspecified.

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?

Schema coverage is 0% and there are two parameters, so the description must compensate. It does clarify the ISO date format and that the two values form a range boundary, which adds real meaning over the bare format: date fields, but it never states whether the bounds are inclusive or how optionality/defaults behave.

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

Purpose4/5

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

The description names a specific verb ('Get'), a specific resource ('Schoology calendar events'), and a scope ('between two ISO dates'), so an agent knows exactly what it returns. It stops short of a 5 because it does not differentiate itself from the sibling schoology_get_upcoming_events, which sounds like the same capability.

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 choose this over schoology_get_upcoming_events, nor any prerequisite context (e.g. authentication or section scoping). The only usage signal is the implicit date-range constraint, which is left for the agent to infer.

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

schoology_get_materialsC

List a course's nested folders, documents, pages, and assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionIdYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read, but it discloses nothing about permissions, pagination, rate limits, or whether the folders are returned recursively. The word 'nested' hints at a hierarchical structure but is not developed.

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?

A single tight sentence with the resource listed up front and no filler. It is appropriately sized, though arguably too terse given the zero documentation elsewhere.

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 one-parameter list tool the description conveys what is returned, which is the core need. However, with no output schema, no annotations, and an undocumented parameter, it leaves the identifier meaning and any pagination/tree behavior unaddressed.

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 description coverage is 0% and the single required parameter (sectionId, a numeric course-section id) is never explained in the description. The phrase 'a course's' gestures at the resource but does not clarify that the parameter is a section identifier or its expected format.

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

Purpose4/5

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

States a clear verb ('List') and enumerates the specific resources returned: nested folders, documents, pages, and assignments. This distinguishes it well from a bare 'get materials', but it never names a sibling like schoology_get_assignments, so an agent has to infer the boundary on its own.

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 when-to-use guidance, no prerequisites, and no mention of the closely related siblings (schoology_get_assignments, schoology_read_document, schoology_list_sections). The agent must guess whether to call this or the narrower assignment/document tools.

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

schoology_get_profileB

Get the signed-in student's Schoology profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure, and it discloses almost nothing: it does not state that it is read-only, that it requires an authenticated session, or what the profile payload contains. For a simple read tool this is a minor gap, but the description still adds no behavioral context beyond the verb.

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?

A single short sentence with the resource and scope front-loaded and no filler. Nothing is wasted.

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?

With no parameters, no annotations, and no output schema, the description is technically sufficient for an agent to invoke the tool, but it leaves the return shape and auth assumptions entirely unexplained. For a profile-read tool an extra clause about what fields are returned would complete the picture.

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 tool takes zero parameters, which is the baseline-4 case: there are no parameter semantics to document, and the description correctly implies no inputs are needed by scoping to the 'signed-in' user.

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

Purpose4/5

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

The description gives a specific verb ('Get') and resource ('Schoology profile') scoped to the signed-in student, so the agent knows exactly what is fetched. It does not explicitly distinguish itself from siblings like schoology_get_recent_activity or schoology_list_sections, but 'profile' is a distinct resource, so confusion is unlikely.

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 when-to-use guidance, no mention of prerequisites (e.g., being authenticated), and no reference to any alternative sibling tool. The agent must infer usage purely from the tool name and one-line purpose.

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

schoology_get_recent_activityB

Get account-wide Schoology announcements and course updates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and does not meet it. 'Get' implies a read, but the description never defines what 'recent' means (no time window), whether results are paginated or capped, or what permissions are required.

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?

A single front-loaded sentence with no filler. The scope qualifier and the returned content are stated immediately.

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 no-parameter read tool with no output schema and no annotations, the description is minimally viable but leaves key ambiguities: the undefined 'recent' time window and the unspecified shape/volume of 'course updates'. No output schema exists to compensate.

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 tool takes zero parameters, so there is nothing for the description to clarify and the baseline of 4 applies. The schema is empty and fully self-describing.

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

Purpose4/5

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

The description gives a clear verb ('Get') and a specific scope ('account-wide Schoology announcements and course updates'). The word 'account-wide' implicitly distinguishes it from the sibling schoology_get_section_updates, but no sibling is named explicitly, so it falls short of full differentiation.

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 statement of when to use this tool versus schoology_get_section_updates, schoology_get_upcoming_events, or schoology_get_calendar. Scope ('account-wide') is implied but no conditions or exclusions are provided.

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

schoology_get_section_updatesC

Get recent posts for one Schoology section.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden and largely fails it. 'Get' implies a read, but nothing is said about what 'recent' means (a time window? a fixed count?), pagination, ordering, or any auth requirements.

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?

One short, front-loaded sentence with no filler. It is efficient, though the terseness contributes to the missing behavioral and usage detail rather than being a virtue on its own.

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?

With no annotations, no output schema, no defined recency window, and an undocumented parameter, the definition is not complete enough for an agent to invoke it confidently. The undefined term 'recent' is the most consequential gap.

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?

Schema coverage is 0%, so the schema supplies only the type and a numeric pattern for sectionId. The phrase 'one Schoology section' does implicitly tie the call to a single section identifier, which is marginal added meaning, but the required-ID semantics and format are not explained in the description.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get recent posts' scoped to 'one Schoology section.' That is clear enough to distinguish it from list/read siblings, but it never names or contrasts a sibling such as schoology_get_recent_activity or schoology_get_materials, so differentiation is left to inference.

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 when-to-use guidance, no conditions, and no mention of alternatives. A caller cannot tell from this text whether it should use this tool or schoology_get_recent_activity for section-level posts.

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

schoology_get_upcoming_eventsC

Get upcoming Schoology events within 1 to 180 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing: no read-only confirmation, no auth requirements, no note on whether events are user-scoped, section-scoped, or paginated. 'Get' weakly implies a read, but nothing beyond that.

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?

A single short sentence with the resource and constraint front-loaded and zero filler. It is efficient, though its brevity is partly the reason other dimensions are thin.

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 low-complexity, one-parameter read tool with no annotations and no output schema, the description is minimally adequate but leaves open what an 'event' contains and what happens with the optional days parameter. Not misleading, but not complete enough to be confident.

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?

With one parameter at 0% schema description coverage, the description must compensate. 'Within 1 to 180 days' clarifies that the days parameter is a forward-looking horizon, but this value is largely mirrored by the schema's minimum/maximum, and the default behavior when days is omitted (it is optional) is left unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Get upcoming Schoology events') plus a temporal scope, so an agent can tell it apart from generic activity tools like get_recent_activity. However it does not differentiate itself from the sibling schoology_get_calendar, whose scope is ambiguous relative to 'upcoming events'.

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 when-to-use guidance, no indication of when this beats schoology_get_calendar, and no exclusions or prerequisites. The only guidance is the implicit 1-180 day window, which is restated from the schema.

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

schoology_list_sectionsB

List enrolled Schoology sections with official StudentVUE course grades.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing and signals a data merge with StudentVUE grades, but it does not disclose authentication requirements, pagination behavior, rate limits, or return format details.

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 single sentence is front-loaded and wastes no words. It is appropriately sized for a zero-parameter listing tool, though it is terse enough that important usage context is absent.

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?

The description gives the core purpose and a hint about returned data ('sections with official StudentVUE course grades'), which is useful because no output schema exists. However, it omits usage context, authentication expectations, and any detail about the shape or volume of returned sections and grades.

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 tool has zero parameters, and the rule baseline for zero parameters is 4. The description adds no parameter information, which is acceptable because there is no input schema to clarify.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('enrolled Schoology sections') and adds that results include official StudentVUE course grades. It is clear, but it does not explicitly differentiate itself from sibling tools like studentvue_get_grades or schoology_get_section_updates.

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 explicit when-to-use guidance, no conditions for choosing this tool over alternatives, and no mention of prerequisites. The only implied guidance is the bare 'List' operation itself.

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

schoology_read_documentC

Read text from a Schoology document or assignment attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionIdYes
documentIdYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation but says nothing about permission requirements, supported document formats, behavior on unsupported files, or whether it follows redirects/external links. For a content-extraction tool this is a meaningful gap.

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?

A single front-loaded sentence with no filler or redundancy. It is appropriately sized, though the brevity comes at the cost of the missing detail noted in other dimensions.

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 two-parameter tool with no annotations, no output schema, and 0% parameter coverage, the description is too thin. It should at minimum clarify what 'text' is returned, what happens for unsupported formats, and how it relates to the sibling retrieval tools.

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 description coverage is 0% and the description adds nothing about the two parameters. It does not explain that sectionId scopes the document to a course section or that documentId identifies a specific attachment, nor does it clarify the numeric-string pattern constraint.

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

Purpose4/5

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

The description names a specific verb ('Read text from') and resource ('Schoology document or assignment attachment'), which is clear enough for an agent to understand the operation. It does not, however, distinguish this tool from siblings like schoology_get_materials or schoology_get_assignments, which also surface document-like content.

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 the many sibling retrieval tools (get_materials, get_assignments, get_section_updates). The agent must infer that this is for extracting text content specifically, with no stated conditions, prerequisites, or exclusions.

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

studentvue_get_assignmentsC

Get official assignment grades from FCPS StudentVUE, optionally filtered by class or title.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
classIdNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It adds only that results are 'official' grades; it says nothing about authentication requirements (StudentVUE login), rate limits, or what a result contains. For a zero-annotation read tool this is thin.

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?

A single front-loaded sentence with no filler; the optional filtering clause is attached directly to the main verb.

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?

No output schema, no annotations, and 0% parameter description coverage, yet the description is one sentence. It omits return shape (grades, points, due dates), auth prerequisites, and query semantics — significant gaps for an agent to call it correctly.

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?

Schema description coverage is 0%, so the description must compensate. 'Filtered by class or title' loosely maps to classId and query, giving an agent a usable mental model, but it doesn't clarify that query is a title/text search nor explain the classId numeric format.

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

Purpose4/5

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

Specific verb (Get) plus resource (assignment grades) and source system (FCPS StudentVUE), which implicitly distinguishes it from the sibling schoology_get_assignments and studentvue_get_grades. The contrast is implied via 'official FCPS StudentVUE' rather than stated explicitly, so it stops short of a 5.

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 on when to choose this over schoology_get_assignments (the near-identical sibling) or over studentvue_get_grades. The 'optionally filtered' phrasing describes behavior, not context for selection.

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

studentvue_get_gradesB

Get official current course marks and percentages from FCPS StudentVUE.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a safe read ('Get') and notes the source is 'official', but says nothing about authentication requirements, freshness or caching of marks, rate limits, or error behavior when the portal is unreachable.

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?

A single front-loaded sentence with no filler; the resource and data source come first and every word earns its place.

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?

It conveys the shape of the return (course marks and percentages) which partially compensates for the absent output schema, but with no annotations and no parameters, more behavioral detail about reliability or scope would be needed to be fully complete.

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 tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose4/5

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

Names a specific verb ('Get') and resource ('current course marks and percentages') and identifies the data source (FCPS StudentVUE). It is distinguishable from the schoology_* siblings, though it does not explicitly contrast with studentvue_get_assignments, which is the closest neighbor.

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 when-to-use guidance, prerequisites, or alternatives are stated. The agent must infer that this is the tool for marks rather than assignments purely from the resource noun.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.1
    • First observedschoology_get_assignments
    • First observedschoology_get_calendar
    • First observedschoology_get_materials
    • First observedschoology_get_profile
    • First observedschoology_get_recent_activity
    • First observedschoology_get_section_updates
    • First observedschoology_get_upcoming_events
    • First observedschoology_list_sections
    • First observedschoology_read_document
    • First observedstudentvue_get_assignments
    • First observedstudentvue_get_grades

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly separated by source (Schoology vs StudentVUE) and action, but schoology_get_calendar and schoology_get_upcoming_events overlap around events, and schoology_get_assignments versus schoology_get_materials can both expose assignments. The descriptions help clarify intent, but some boundary cases remain.

Naming Consistency5/5

All tool names use a consistent snake_case source_action_object pattern, with verbs like get, list, and read used predictably. The schoology_ and studentvue_ prefixes further reinforce consistency.

Tool Count5/5

Eleven tools is well within a reasonable range for a multi-source school information server. Each tool appears to cover a distinct read-oriented capability, so no obvious bloat or thinness.

Completeness4/5

The surface covers core read-only student workflows: grades, assignments, sections, materials, calendar, events, profile, and document reading. Minor gaps may exist around course-level metadata or messaging, but core needs are well represented.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers