About degreeroi
degreeroi is a read-only CLI and MCP server for exploring U.S. college and major return-on-investment data from the LE TEEN College ROI API. It provides 30-year college net present values, major-level lifetime returns, and value rankings.
Key features
- 01List and inspect major ROI figures
- 02Search colleges and view 30-year NPV
- 03Rank best-value colleges by state or nationwide
- 04Compare resident and non-resident returns
- 05View out-of-state NPV penalties
- 06Retrieve API and dataset metadata
Use cases
- 01Compare lifetime ROI across majors
- 02Assess a college's 30-year value and costs
- 03Find state or nationwide best-value colleges
MCP support
Exposes read-only major and college ROI queries, rankings, and API metadata as tools for MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
7Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| kind | enum | No | The kind for this call.category | subfield |
| sort | enum | No | Sort order for the results (optional).median_roi | mean_roi | break_even_age | name |
| limit | integer | No | Maximum number of results to return (optional). |
| parent | string | No | Parent identifier (optional). |
Details
From the project READMEdegreeroi
What is a degree actually worth, in dollars, over a working life? degreeroi answers with data instead of brochure copy: lifetime return on investment for college majors, and 30-year net present value for the U.S. colleges where the maths clears a positive bar. It is a thin, read-only client for the LE TEEN College ROI API — static JSON, no key, no signup — exposed both as a small CLI and as a stdio MCP server from a single bin.
The major figures cover 19 categories and 115 CIP subfields: median and mean lifetime ROI, the share of graduates who never break even, the break-even age, and an AI-exposure band, with full distributions on the detail view. The college figures cover the 500 four-year schools that clear a positive-NPV envelope (out of roughly 1,656 U.S. four-years): what a degree is worth over 30 years to a resident and to a non-resident, what attendance costs, what graduates earn, and when the degree pays for itself. Every dollar figure is a lifetime / 30-year total in USD.
One consequence of the envelope is worth stating plainly: a school that is not in the 500 is not in the data. Asking for it returns a not-found, because absence is itself the signal — degreeroi never invents a record for a school the dataset leaves out.
Configuration
COLLEGE_ROI_API_URL(optional) — API base URL. Defaults tohttps://le-teen.com/api.
That is all. There is no API key: the upstream API is free and keyless. Responses are cached in-process for 24 hours, matching the API's own CDN cache, and nothing is ever written back.
Tools
list_majors— compact ROI rows for the major categories and subfields. Optional filters:kind(categoryorsubfield),parent(the category a subfield belongs to),sort(median_roi,mean_roi,break_even_ageorname) andlimit. Only the filters you set are sent.get_major— the full record for one major: the ROI distribution (p25, median, mean, p75), completion-adjusted and dropout ROI, graduate and program counts, and the AI-exposure detail.search_colleges— search the 500 envelope colleges byname,stateorcontrol, with alimit. Rows carry resident and non-resident 30-year NPV, cost of attendance, median earnings and break-even age.get_college— the full record for one college, including its IPEDS unitid and FREOPP coverage. A college outside the envelope answerscollege not found: <college>.best_value_colleges— best-value four-years at resident pricing: the top 15 per state when astateis given (trim withlimit), or a nationwide top-pick summary when it is not.out_of_state_penalty— public four-years ranked by how much 30-year NPV a non-resident gives up versus a resident; optionally narrow withstateandlimit.get_api_info— metadata for the underlying API: endpoints, licence, dataset DOI and attribution. Answered locally from the pinned metadata; it makes no upstream call.
Behaviour worth knowing:
- List tools pass the API's compact projections through unchanged; detail tools pass the full upstream record through unchanged.
- A non-2xx upstream reply fails with
degreeroi error: HTTP <status>(except the detail tools' 404, which is the honest not-found above), and an unreachable API withdegreeroi unreachable.
Endpoint provenance
The original project's README pins the seven tools,
their semantics, the API base
(https://le-teen.com/api, static JSON), the filter
notions on list_majors (kind/parent, sort, limit)
and on search_colleges (name/state/control), and
the dataset facts (19 categories, 115 subfields, 500
envelope colleges, DOI 10.5281/zenodo.21351602,
CC BY 4.0, LE TEEN at le-teen.com). It does not
enumerate endpoint paths or parameter tables, so
those are labelled reconstructions in this rebuild —
one GET per networked tool under the API base:
GET <base>/majorswith only the set filters as query parameters (used bylist_majors).GET <base>/majors/{major}(used byget_major).GET <base>/collegeswith only the set filters as query parameters (used bysearch_colleges).GET <base>/colleges/{college}(used byget_college).GET <base>/best-value-collegeswithstate/limitwhen set (used bybest_value_colleges).GET <base>/out-of-state-penaltywithstate/limitwhen set (used byout_of_state_penalty).get_api_infois served from the pinned metadata, with the endpoints as implemented above.
The major and college path segments are
URL-encoded.
Data sources behind the API: FREOPP program-level estimates, IPEDS institutional data and BEA price deflators. Data licence CC BY 4.0 — cite LE TEEN, le-teen.com.
CLI
Each tool is a subcommand taking one JSON argument string:
npx @reneturcios/degreeroi list_majors '{"kind":"subfield","sort":"median_roi","limit":10}'
npx @reneturcios/degreeroi get_major '{"major":"computer-science"}'
npx @reneturcios/degreeroi search_colleges '{"state":"CA","control":"public"}'
npx @reneturcios/degreeroi get_college '{"college":"example-state-university"}'
npx @reneturcios/degreeroi best_value_colleges '{"state":"CA"}'
npx @reneturcios/degreeroi out_of_state_penalty '{"limit":20}'
npx @reneturcios/degreeroi get_api_info '{}'
npx @reneturcios/degreeroi --version
Output is the tool's result text (the upstream body
on success). Exit codes: 0 on success, 1 on a
runtime error, 2 on a usage error.
MCP server
npx -y @reneturcios/degreeroi mcp
MCP client config:
{
"mcpServers": {
"degreeroi": {
"command": "npx",
"args": ["-y", "@reneturcios/degreeroi", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/degreeroi
docker run --rm ghcr.io/cloudcorprecords/degreeroi get_api_info '{}'
Development
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev # run the CLI from source
License
MIT — Copyright (c) 2026 Rene Turcios
The data served by the upstream API is CC BY 4.0 (LE TEEN, le-teen.com; dataset DOI 10.5281/zenodo.21351602).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.