College Scorecard Mcp Server

io.github.cyanheads由 GitHub 帳號 cyanheads 發布v0.5.0更新於 Nov 3, 2026

搜尋、比較和分析美國大學資料——費用、收入、專業和成果。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

Search, compare, and analyze U.S. college data — costs, earnings, programs, and outcomes.

發布方自己的服務:Scorecard

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取資料與分析

概覽

College Scorecard 的託管 MCP 服務(college-scorecard.caseyjhand.com);無需登入;Streamable HTTP;9 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

端點
college-scorecard.caseyjhand.com
最近檢查

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 College Scorecard Mcp Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.cyanheads%2Fcollege-scorecard-mcp-server/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "college-scorecard": {
      "type": "http",
      "url": "https://college-scorecard.caseyjhand.com/mcp"
    }
  }
}

README

@cyanheads/college-scorecard-mcp-server

Search, compare, and analyze U.S. college data — costs, earnings, programs, and outcomes — via MCP. STDIO or Streamable HTTP.

9 Tools • 3 Resources • 1 Prompt • 1 Skill


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

ToolDescription
scorecard_search_schoolsSearch institutions by name, location, type, size, acceptance rate, and single-sex flags; sort by supported API fields. Returns core identity and cost metrics.
scorecard_get_schoolFull institutional profiles — costs, admissions, outcomes, aid, demographics, single-sex flags, and completion rates.
scorecard_compare_schoolsNormalized side-by-side comparison of 2–5 schools on a named topic. Returns metric values, ordinal ranks, and a comparison summary.
scorecard_get_programsPaged field-of-study outcomes: completion-based 1/4-year earnings, legacy highest-credential earnings, debt, and campus awards with separate provenance.
scorecard_search_programsFind programs by CIP and credential or keyword, retain degree identity, and rank earnings within each fetched school page.
scorecard_get_earningsEarnings 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.
scorecard_value_analysisWorkflow tool: parallel-fetches cost, debt, repayment, and earnings data, then computes ROI metrics — debt-to-earnings ratio and net price to earnings ratio.
scorecard_lookup_cipSearch all 464 current NCES CIP 2020 four-digit groups by code, keyword, or related program name. Served offline.
scorecard_list_fieldsSearch the Scorecard field catalog by keyword. Returns matching field paths, descriptions, data types, and sort support. Use before passing custom fields parameters.

Resources

ResourceDescription
scorecard://school/{id}Institutional profile by unit ID — injectable context for school-specific conversations
scorecard://programs/{id}First page of program-level outcomes for a school
scorecard://programs/{id}/page/{offset}/{limit}Continuation through a school's programs in provider order

All resource data is also reachable via tools. Use scorecard_search_schools or scorecard_get_school to discover school IDs before constructing resource URIs.

The college-scorecard-guide covers campus/CIP identity, paging, outcome populations, OPEID6 pooling, and price-basis gates. It ships with plugins, npm, Docker, and MCPB, and is served through the MCP Skills extension.

Prompts

PromptDescription
scorecard_compare_promptStructures a multi-school comparison analysis using Scorecard data

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_page is capped at 100; page is zero-indexed. State lists accept WA,CA.
  • Returns core identity and cost metrics for quick scanning.
  • sort takes an API expression such as latest.cost.avg_net_price.overall:asc (:desc reverses it). men_only and women_only accept 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_ids lists fetched IDs with no record and unprocessed_ids lists the excess.
  • Default profiles cover costs, admissions, outcomes, financial aid, demographics, and completion rates. Custom fields returns selected_fields with the requested values, and absent_fields lists requested paths missing from the response.
  • Projected program arrays use program_limit (default 20, capped at 100) and program_offset; follow each school's program_pages continuation. Raw values and provider positions stay aligned.
  • HBCU and single-sex flags are true/false when known and unknown when absent.

scorecard_compare_schools tool

  • Accepts 2–1,000 raw unit IDs and compares the first five distinct normalized IDs on costs, admissions, outcomes, or aid. missing_ids were queried; unprocessed_ids were not.
  • Equal independent values share a rank (1, 1, 3). Missing values, pooled outcome rows containing shared OPEID6 groups, and mixed academic/program-year price rows are unranked.
  • Each cell's availability distinguishes 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.
  • Completion-based 1/4-year medians and counts carry separate availability and provenance. Legacy earnings_1yr_median/earnings_count retain highest-credential semantics; their availability and suppression counts remain separate.
  • min_earnings and ordering use completion-based one-year earnings, with no legacy fallback. Page with limit (default 20, capped at 100) and offset; total counts matches before paging, and nextOffset is null at the end.
  • median_debt is completers' cumulative Stafford/Grad PLUS borrowing. ipeds_awards_year1 and ipeds_awards_year2 count 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. page/per_page paginate schools; offset/limit page matching program rows within that school page.
  • Returns school IDs and names with program metrics, credential_level, and credential_title. Available earnings sort first; availability, debt, and award fields match scorecard_get_programs.
  • min_earnings filters locally, so totals and pagination are upstream school counts before filtering. Earnings and debt thresholds are inclusive and exclude unknown values.
  • Follow next until null: it drains program rows on the current school page before advancing. shown counts returned programs; schools_shown counts fetched schools. Rankings use current completion-based one-year earnings within the fetched page only.

scorecard_get_earnings tool

  • Accepts one school ID and optional data-file start years from 1996–2025 (file vintages, not entry years). Omit years or 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_availability and trend[].availability classify each metric. current_context and trend[].context give data_file_year, entry_cohorts, measurement_years, and dollar_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_income selects the applicable net price bracket ($0–30k, $30k–48k, $48k–75k, $75k–110k, or $110k+).
  • Returns ratios alongside their source figures. effective_net_price is the price used, and net_price_basis is income_bracket, overall, or unavailable.
  • If the bracket is missing, the overall price is used and data_notes says so. Ratios require positive annual earnings.
  • Tuition and attendance independently prefer academic-year prices, otherwise reported program-year prices; each has its own basis. Program tuition never substitutes for net price. OPEID6-pooled outcomes are identified alongside campus prices.

scorecard_lookup_cip tool

  • Search by nonblank keyword or partial name (default limit 20, capped at 50). Dotted 11.07 and undotted 1107 are equivalent; continue with offset and returned nextOffset while more results remain.
  • Returns exact group titles and family identities from all 464 current NCES CIP 2020 four-digit groups. Verified six-digit program aliases return their group; no matches return an empty collection with guidance.

scorecard_list_fields tool

  • Search 84 curated offline field entries by nonblank query (default limit 30, capped at 100). Use before passing custom fields to scorecard_get_school.
  • Returns field paths, descriptions, data types, categories, and API sorting support; tip flags results containing unsortable fields.

scorecard://school/{id} resource

  • Institutional profile as application/json — identity, cost, admissions, outcomes, aid, and completion data
  • id is the school unit ID (integer as string) from scorecard_search_schools
  • list returns a handful of example school URIs; use scorecard_search_schools to discover others

scorecard://programs/{id} resource

  • First 20 program rows as application/json, in provider order, with current/legacy earnings populations, scope, provenance, debt, and campus awards. Legacy nullable metrics retain null; new metrics expose availability.
  • id is the school unit ID from scorecard_search_schools
  • list returns a handful of example school URIs; use scorecard_search_schools to discover others
  • Follow nextUri through scorecard://programs/{id}/page/{offset}/{limit} until null. Page limits above 100 normalize to 100, with a hard ceiling of 1,000; offsets are zero-based. Tool ordering differs, so do not reuse offsets between tools and resources.

scorecard_compare_prompt prompt

  • Arguments: school_names (comma-separated list) and focus (costs | outcomes | programs), both required
  • costs and outcomes run school discovery, scorecard_compare_schools, profiles, and value analysis. programs runs school discovery, CIP lookup, and scorecard_get_programs per 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 completion earnings at one and four years, alongside legacy highest-credential outcomes; each series carries its population and vintage
  • Field pre-selection per tool — curated field sets appropriate to each tool's purpose; optional fields override for custom queries
  • Embedded CIP taxonomy (464 groups) and field catalog (84 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 / PrivacySuppressed provider markers
  • Derived metrics sit alongside source figures in scorecard_value_analysis, and scorecard_compare_schools adds ordinal ranks
  • School sorting uses indexed API fields; check scorecard_list_fields before 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_error and cancellation remains RequestCancelled

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:

json
{  "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.

json
{  "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):

json
{  "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:

json
{  "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:

sh
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 SCORECARD_API_KEY=... bun run start:http# Server listens at http://localhost:3010/mcp

Prerequisites

  • 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

  1. Clone the repository:
sh
git clone https://github.com/cyanheads/college-scorecard-mcp-server.git
  1. Navigate into the directory:
sh
cd college-scorecard-mcp-server
  1. Install dependencies:
sh
bun install
  1. Configure environment:
sh
cp .env.example .env# edit .env and set SCORECARD_API_KEY

Configuration

All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Key environment variables:

VariableDescriptionDefault
SCORECARD_API_KEYRequired. API key from api.data.gov (1,000 req/hour).—
MCP_TRANSPORT_TYPETransport: stdio or httpstdio
MCP_HTTP_PORTHTTP server port3010
MCP_HTTP_ENDPOINT_PATHHTTP endpoint path where the MCP server is mounted/mcp
MCP_PUBLIC_URLPublic origin override for TLS-terminating reverse-proxy deploymentsnone
MCP_SESSION_MODEHTTP session mode: stateless, stateful, or autostateless
MCP_AUTH_MODEAuthentication: none, jwt, or oauthnone
MCP_LOG_LEVELLog level (debug, info, warning, error, etc.)info
MCP_GC_PRESSURE_INTERVAL_MSOpt-in forced-GC loop interval in ms (Bun only); try 60000 if heap grows under HTTP load0 (disabled)
LOGS_DIRDirectory for log files (Node.js only)<project-root>/logs
STORAGE_PROVIDER_TYPEStorage backend: in-memory, filesystem, supabase, cloudflare-kv/r2/d1in-memory
OTEL_ENABLEDEnable OpenTelemetry instrumentationfalse

See .env.example for the full list of optional overrides.

Running the server

Local development

  • Build and run:

    sh
    # One-time buildbun run rebuild
    # Run the built serverbun run start:stdio# orbun run start:http
  • Run checks and tests:

    sh
    bun run devcheck   # Lint, format, typecheck, securitybun run test       # Vitest test suitebun run lint:mcp   # Validate MCP definitions against spec

Docker

sh
docker build -t college-scorecard-mcp-server .docker run --rm -e SCORECARD_API_KEY=your-key -p 3010:3010 college-scorecard-mcp-server

The 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

DirectoryPurpose
src/index.tscreateApp() entry point — registers tools/resources/prompts and inits services.
src/configServer-specific environment variable parsing and validation with Zod.
src/mcp-server/toolsTool definitions (*.tool.ts). Nine tools across search, profile, programs, earnings, and analysis.
src/mcp-server/resourcesResource definitions. School profile and program outcomes resources.
skills/college-scorecard-guidePublished usage gates for school/program comparisons and complete retrieval.
src/mcp-server/promptsPrompt definitions. Multi-school comparison prompt.
src/servicesScorecardService — fetch wrapper with retry, field selection, and pagination against the College Scorecard API.
tests/Unit and integration tests mirroring src/.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for request-scoped logging, ctx.state for tenant-scoped storage
  • Register new tools, resources, and prompts in the createApp() arrays in src/index.ts
  • Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields
  • During maintenance, run bun run check:earnings-provenance (Python 3 required) to compare embedded institution earnings metadata with the official dictionary. Pass a local XLSX path to reuse a download; requests never fetch the dictionary.

Contributing

Issues are welcome. Run checks and tests before submitting:

sh
bun run devcheckbun run test

License

Apache-2.0 — see LICENSE for details.

來源:README.md,提交 57d70d5

工具

9

scorecard_lookup_cip

Lookup CIP Code

Search the Classification of Instructional Programs (CIP) taxonomy by keyword or partial name. Returns matching CIP codes with standard titles. Use this before passing cip_code filters to scorecard_search_programs or scorecard_get_programs when you know a program by name but not its code. Served entirely from embedded static data — no API call, no rate limit impact.

輸入參數limitquery必填offset

scorecard_list_fields

List Scorecard Fields

Search the College Scorecard field catalog by keyword. Returns matching field paths, descriptions, data types, and whether each field supports API-side sorting. Use before passing custom field paths to the fields parameter on scorecard_get_school to find a supported path. Served entirely from embedded static data — no API call, no rate limit impact.

輸入參數limitquery必填

scorecard_search_schools

Search Schools

Search and filter U.S. colleges and universities by name, location, type, size, and acceptance rate. Returns core identity and cost metrics. Use scorecard_get_school for profiles or scorecard_search_programs for programs. Geographic distance requires a U.S. ZIP; ZIP alone uses the provider default radius. State accepts comma-separated two-letter codes (e.g. WA,CA). Ownership: 1=public, 2=private nonprofit, 3=for-profit. Degree level: 0=Not classified, 1=certificate, 2=associate, 3=bachelor, 4=Entirely graduate-degree granting.

輸入參數zippagesortquerystatecip_codedistancemen_onlyper_pageownershipsize_rangewomen_only另有 2 個

scorecard_get_school

Get School Profile

Institutional profiles for one or more school IDs. Accepts up to 1,000 elements, deduplicates normalized IDs, serves the first 100 distinct IDs, and reports missing and unprocessed IDs separately. Use scorecard_compare_schools for comparisons. Custom fields return requested paths and their JSON values in selected_fields, absent paths in absent_fields, and real identity; default profiles include costs, admissions, outcomes, aid, and completion rates.

輸入參數id必填fieldsprogram_limitprogram_offset

scorecard_get_programs

Get School Programs

Page through field-of-study programs at one school, ranked and filtered by completion-based one-year earnings. Legacy highest-credential earnings remain separate from current one- and four-year completion series, with dictionary provenance. Earnings and debt pool across campuses sharing OPEID6 within CIP/credential; awards are campus-specific. Use scorecard_lookup_cip to find CIP codes by name.

輸入參數id必填limitoffsetcip_codemin_earningscredential_level

scorecard_get_earnings

Get School Earnings

Institution-level earnings of federally aided undergraduate entrants working and not enrolled, regardless of completion. Reports medians at 6/8/10 years after entry, 6/10-year percentiles, and non-male/male 6-year medians. For graduate program earnings use scorecard_get_programs. years selects API data-file start years (1996–2025), including files without earnings observations. Per-metric availability and official cohort/measurement/dollar context accompany values; unknown metadata stays absent. No re-inflation is performed.

輸入參數id必填years

scorecard_search_programs

Search Programs

Find programs across institutions, ranked and filtered by completion-based one-year median earnings within the fetched school page. Legacy highest-credential values remain separate with their own provenance. Earnings and debt pool across campuses sharing OPEID6 within CIP/credential; awards are campus-specific. School page/per_page/total count schools; limit/offset page the matching program rows. Follow next to drain this school page before advancing to the next school page. Use scorecard_lookup_cip to find CIP codes.

輸入參數pagelimitstateoffsetcip_codemax_debtper_pageownershipmin_earningsprogram_namemax_net_pricecredential_level

scorecard_compare_schools

Compare Schools

Side-by-side comparison of the first five distinct normalized school IDs, accepting up to 1,000 raw IDs. Remaining IDs are unprocessed; request them separately. Ordinal competition ranks share ties; shared OPEID6 outcomes and mixed-period price rows are unranked. Topics: costs, admissions, outcomes, aid. Use scorecard_get_school for full profiles.

輸入參數ids必填topic必填

scorecard_value_analysis

Value Analysis

Analyze costs, debt, repayment progress, and earnings for one school. Returns debt-to-earnings and net-price-to-annual-earnings ratios alongside the source figures. family_income selects the applicable net-price bracket. Repayment progress is the share of borrowers paying down principal 3 years after entering repayment.

輸入參數id必填family_income

版本歷史

6
  1. v0.5.0最新Nov 3, 2026
  2. v0.4.0Oct 14, 2026
  3. v0.3.0Oct 13, 2026
  4. v0.2.0Sep 30, 2026
  5. v0.1.9Sep 22, 2026
  6. v0.1.8Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Scorecard 整合