College Scorecard MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@College Scorecard MCP Serversearch for colleges with high median earnings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Public Hosted Server: https://college-scorecard.caseyjhand.com/mcp
Overview
US college data from the Department of Education College Scorecard: costs, earnings, programs, and outcomes across roughly 6,500 institutions. Search and compare schools, look up earnings by field of study, and compute ROI metrics like debt-to-earnings ratio.
Tools
Tool | Description |
| Search institutions by name, location, type, size, acceptance rate, and single-sex flags; sort by supported API fields. Returns core identity and cost metrics. |
| Full institutional profiles — costs, admissions, outcomes, aid, demographics, single-sex flags, and completion rates. |
| Normalized side-by-side comparison of 2–5 schools on a named topic. Returns metric values, ordinal ranks, and a comparison summary. |
| Field-of-study programs at one school: median 1-year earnings, cumulative Stafford/Grad PLUS debt, and IPEDS awards in the two pooled debt-cohort years. |
| Find programs by CIP and credential or keyword, retain degree identity, and rank earnings within each fetched school page. |
| Earnings of federally aided undergraduate entrants working and not enrolled, regardless of completion: 6/8/10-year medians, 6/10-year P25/P75, and non-male/male 6-year medians. |
| Workflow tool: parallel-fetches cost, debt, repayment, and earnings data, then computes ROI metrics — debt-to-earnings ratio and net price to earnings ratio. |
| Search 186 curated NCES CIP 2020 four-digit groups by code, keyword, or related program name. Served offline. |
| Search the Scorecard field catalog by keyword. Returns matching field paths, descriptions, data types, and sort support. Use before passing custom |
Resources
Resource | Description |
| Institutional profile by unit ID — injectable context for school-specific conversations |
| Program-level outcomes for a school |
All resource data is also reachable via tools. Use scorecard_search_schools or scorecard_get_school to discover school IDs before constructing resource URIs.
Prompts
Prompt | Description |
| Structures a multi-school comparison analysis using Scorecard data |
Related MCP server: mcp-college-scorecard
Capability reference
scorecard_search_schools tool
Search by name, state, ownership, degree level, size, acceptance rate, CIP code, or ZIP and distance (miles or
km).per_pageis capped at 100;pageis zero-indexed. State lists acceptWA,CA.Returns core identity and cost metrics for quick scanning.
sorttakes an API expression such aslatest.cost.avg_net_price.overall:asc(:descreverses it).men_onlyandwomen_onlyaccept true or false.
scorecard_get_school tool
Accepts a school ID or an array of up to 1,000. The first 100 distinct IDs are fetched;
missing_idslists fetched IDs with no record andunprocessed_idslists the excess.Default profiles cover costs, admissions, outcomes, financial aid, demographics, and completion rates. Custom
fieldsreturnsselected_fieldswith the requested values, andabsent_fieldslists requested paths missing from the response.HBCU and single-sex flags are true/false when known and unknown when absent.
scorecard_compare_schools tool
Accepts 2–5 school unit IDs and one topic:
costs,admissions,outcomes, oraid.Returns metric values and ranks from one API call: equal values share a rank (1, 1, 3) and unavailable values are unranked.
Each cell's
availabilitydistinguishes available, unavailable, and privacy-suppressed values.
scorecard_get_programs tool
Accepts one school ID, with optional CIP code (dotted or undotted),
credential_level, and minimum earnings filters. A school with no matching programs returns an empty collection; a nonexistent school is a lookup error.Returns median earnings and graduate counts 1 year after the highest credential.
earnings_availabilityisavailable,unavailable, orprivacy_suppressed, withsuppressed_countandunavailable_count.median_debtis completers' cumulative Stafford/Grad PLUS borrowing.ipeds_awards_year1andipeds_awards_year2count awards in each year of the pooled debt cohort, not students.
scorecard_search_programs tool
Search by CIP code or program name, with optional integer
credential_level(1–8 and 99), state, ownership, net price, earnings, and debt filters. Zero-indexedpageandper_page(up to 100) paginate schools, so returned program rows may exceedper_page.Returns school IDs and names with program metrics,
credential_level, andcredential_title. Available earnings sort first; availability, debt, and award fields matchscorecard_get_programs.min_earningsfilters locally, so totals and pagination are upstream school counts before filtering. Earnings and debt thresholds are inclusive and exclude unknown values.
scorecard_get_earnings tool
Accepts one school ID and optional data-file start
yearsfrom 1996–2025 (file vintages, not entry years). Omityearsor pass[]for the snapshot only.Covers federally aided undergraduate entrants working and not enrolled, regardless of completion: medians at 6/8/10 years after entry, 6/10-year P25/P75, and non-male/male 6-year medians.
current_availabilityandtrend[].availabilityclassify each metric.current_contextandtrend[].contextgivedata_file_year,entry_cohorts,measurement_years, anddollar_year; values keep the provider's dollar basis, so check it before comparing across vintages.
scorecard_value_analysis tool
Accepts one school ID; optional
family_incomeselects the applicable net price bracket ($0–30k, $30k–48k, $48k–75k, $75k–110k, or $110k+).Returns ratios alongside their source figures.
effective_net_priceis the price used, andnet_price_basisisincome_bracket,overall, orunavailable.If the bracket is missing, the overall price is used and
data_notessays so. Ratios require positive annual earnings.
scorecard_lookup_cip tool
Search by nonblank keyword or partial name (default limit 20, capped at 50). Dotted
11.07and undotted1107are equivalent.Returns exact group titles and family identities from 186 current NCES CIP 2020 four-digit groups, a subset of the full taxonomy. Related six-digit program names also match and return their group; no matches return an empty collection with guidance.
scorecard_list_fields tool
Search 78 curated offline field entries by nonblank query (default limit 30, capped at 100). Use before passing custom
fieldstoscorecard_get_school.Returns field paths, descriptions, data types, categories, and API sorting support;
tipflags results containing unsortable fields.
scorecard://school/{id} resource
Institutional profile as
application/json— identity, cost, admissions, outcomes, aid, and completion dataidis the school unit ID (integer as string) fromscorecard_search_schoolslistreturns a handful of example school URIs; usescorecard_search_schoolsto discover others
scorecard://programs/{id} resource
Program-level outcomes as
application/json— CIP code, title, credential level, 1-year earnings, cumulative Stafford/Grad PLUS debt, andipeds_awards_year1/ipeds_awards_year2with the same meanings as the program tools; missing metrics are nullidis the school unit ID fromscorecard_search_schoolslistreturns a handful of example school URIs; usescorecard_search_schoolsto discover others
scorecard_compare_prompt prompt
Arguments:
school_names(comma-separated list) andfocus(costs|outcomes|programs), both requiredcostsandoutcomesrun school discovery,scorecard_compare_schools, profiles, and value analysis.programsruns school discovery, CIP lookup, andscorecard_get_programsper school, then compares earnings, debt, and IPEDS awards for matching credentials.
Features
Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
College Scorecard-specific:
Full College Scorecard API coverage: ~6,500 Title IV institutions, ~2,800 data fields spanning costs, outcomes, demographics, financial aid, and field-of-study earnings
Program-level earnings: median earnings of graduates working and not enrolled 1 year after their highest credential, per school × CIP code × credential level
Field pre-selection per tool — curated field sets appropriate to each tool's purpose; optional
fieldsoverride for custom queriesEmbedded CIP taxonomy (186 groups) and field catalog (78 fields) served offline
Geographic filtering via U.S. zip code + distance radius
Agent-friendly output:
Availability distinguishes numbers (including zero), missing values, and explicit
PS/PrivacySuppressedprovider markersDerived metrics sit alongside source figures in
scorecard_value_analysis, andscorecard_compare_schoolsadds ordinal ranksSchool sorting uses indexed API fields; check
scorecard_list_fieldsbefore choosing a sort expression. Six-year earnings does not support API sorting.Provider failures report distinct validation, authentication, throttling, timeout, and availability reasons; availability uses
api_errorand cancellation remainsRequestCancelled
Getting started
Public Hosted Instance
A public instance is available at https://college-scorecard.caseyjhand.com/mcp — no installation required. No API key needed; the instance supplies its own. Point any MCP client at it via Streamable HTTP:
{
"mcpServers": {
"college-scorecard-mcp-server": {
"type": "streamable-http",
"url": "https://college-scorecard.caseyjhand.com/mcp"
}
}
}Self-Hosted / Local
Add the following to your MCP client configuration file. See api.data.gov/signup for a free API key.
{
"mcpServers": {
"college-scorecard-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/college-scorecard-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"SCORECARD_API_KEY": "your-api-key"
}
}
}
}Or with npx (no Bun required):
{
"mcpServers": {
"college-scorecard-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/college-scorecard-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"SCORECARD_API_KEY": "your-api-key"
}
}
}
}Or with Docker:
{
"mcpServers": {
"college-scorecard-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"-e", "SCORECARD_API_KEY=your-api-key",
"ghcr.io/cyanheads/college-scorecard-mcp-server:latest"
]
}
}
}For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 SCORECARD_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcpPrerequisites
Bun v1.4.0 or higher (or Node.js v24+).
A College Scorecard API key — free registration at api.data.gov/signup. Rate limit: 1,000 requests/hour per key.
Installation
Clone the repository:
git clone https://github.com/cyanheads/college-scorecard-mcp-server.gitNavigate into the directory:
cd college-scorecard-mcp-serverInstall dependencies:
bun installConfigure environment:
cp .env.example .env
# edit .env and set SCORECARD_API_KEYConfiguration
All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Key environment variables:
Variable | Description | Default |
| Required. API key from api.data.gov (1,000 req/hour). | — |
| Transport: |
|
| HTTP server port |
|
| HTTP endpoint path where the MCP server is mounted |
|
| Public origin override for TLS-terminating reverse-proxy deployments | none |
| HTTP session mode: |
|
| Authentication: |
|
| Log level ( |
|
| Opt-in forced-GC loop interval in ms (Bun only); try |
|
| Directory for log files (Node.js only) |
|
| Storage backend: |
|
|
|
See .env.example for the full list of optional overrides.
Running the server
Local development
Build and run:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:httpRun checks and tests:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t college-scorecard-mcp-server .
docker run --rm -e SCORECARD_API_KEY=your-key -p 3010:3010 college-scorecard-mcp-serverThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/college-scorecard-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
Project structure
Directory | Purpose |
|
|
| Server-specific environment variable parsing and validation with Zod. |
| Tool definitions ( |
| Resource definitions. School profile and program outcomes resources. |
| Prompt definitions. Multi-school comparison prompt. |
|
|
| Unit and integration tests mirroring |
Development guide
See CLAUDE.md for development guidelines and architectural rules. The short version:
Handlers throw, framework catches — no
try/catchin tool logicUse
ctx.logfor request-scoped logging,ctx.statefor tenant-scoped storageRegister new tools, resources, and prompts in the
createApp()arrays insrc/index.tsWrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields
Contributing
Issues are welcome. Run checks and tests before submitting:
bun run devcheck
bun run testLicense
Apache-2.0 — see LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search US colleges and compare historical admissions, costs and aid using public federal data.
College Scorecard MCP — US Department of Education College Scorecard API
Higher education data: tuition, graduation rates, and earnings
Education Data MCP — US K-12 schools, districts, funding and child poverty.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceQuery SEC EDGAR filings, XBRL financials, and company data through MCP.468 npm11Apache 2.0
- AlicenseNot gradedqualityBmaintenanceCollege Scorecard MCP — US Department of Education College Scorecard API446 npmMIT
- AlicenseAqualityDmaintenanceMCP server to query UK higher-education open data including National Student Survey results, student outcomes, and graduate earnings. Data is downloaded locally from official sources and compared against benchmarks.5MIT
- AlicenseAqualityBmaintenanceMCP server providing U.S. college ROI data (30-year NPV, major ROI, best-value rankings, and out-of-state tuition penalty) by wrapping a free, keyless API.714 npmMIT