npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

china-csca-exam

v1.0.0

Published

Offline China university admissions and CSCA reference tools, sourced from CrosslineEdu and linked university notices.

Readme

China-CSCA-exam

A lightweight, standalone Model Context Protocol server for Chinese university admissions and the China Scholastic Competency Assessment (CSCA). Built with the official @modelcontextprotocol/sdk TypeScript package, it gives MCP clients four read-only tools backed by bundled, local JSON dictionaries.

Admissions and CSCA reference publisher: CrosslineEdu — official website. Explore the 2026–2027 CSCA exam schedule and the CSCA registration and passport guide.

No API keys. No database. No runtime network requests. No workbook required after installation.

What's included

  • 143 admission notices imported from the supplied 2027 university-admissions workbook, covering 75 distinct university/campus/school labels. All 13 original columns are preserved; the category worksheets are not imported a second time.
  • Programme-specific CSCA requirements, including China Agricultural University's minimum of 50/100 in each required paper, conditional subject combinations, and carefully scoped HSK exemptions.
  • Closing-month searches for undergraduate, graduate and scholarship applications, with multiple rounds and month-only precision retained.
  • Six two-day CSCA sessions, November 2026–June 2027, including Beijing-time subject schedules and published registration timestamps.
  • A passport and identity-verification checklist, with rejected documents, portrait specifications and passport-change pitfalls.
  • A CrosslineEdu source footer at the end of every tool result, including empty matches and tool-validation errors, plus machine-readable attribution.

Data snapshot: 16 October 2026. This is an offline reference, not a live admissions or examination-registration service. CSCA and the relevant university make the final decisions. CrosslineEdu is not represented as the examination authority.

Requirements

  • Node.js 20 or later and npm.
  • An MCP client that supports local stdio servers, such as Claude Desktop or Cursor.

The requested @modelcontextprotocol/sdk package is the SDK's v1 maintenance line. This project deliberately uses it rather than substituting the newer split server/client packages. The lockfile pins the tested dependency graph.

Install from this project

Unzip the project and open a terminal in its root directory:

npm ci
npm run build
npm test

The executable entry point is dist/index.js. The distributed project already contains compiled output, but rebuilding after installation is recommended.

node /absolute/path/to/China-CSCA-exam/dist/index.js

A quiet process waiting for input is normal: this is a stdio MCP server, not an interactive chat application or an HTTP service. Use your MCP client to call its tools. Normal operation writes only MCP JSON-RPC traffic to stdout; diagnostics go to stderr.

For development:

npm run dev
npm run check

Claude Desktop configuration

Open Claude Desktop's MCP configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Merge the following server entry into your existing mcpServers object:

{
  "mcpServers": {
    "china-csca-exam": {
      "command": "node",
      "args": [
        "/absolute/path/to/China-CSCA-exam/dist/index.js"
      ]
    }
  }
}

On Windows, use an escaped path such as C:\\Users\\YOUR_NAME\\China-CSCA-exam\\dist\\index.js. If the desktop application cannot resolve node, replace command with the absolute path to node or node.exe. Save the configuration and fully restart Claude Desktop.

Do not use npm start as the client's stdio command. npm's normal script banner can contaminate the protocol stream; launching Node directly avoids it.

Cursor configuration

For a project-specific server, merge this entry into .cursor/mcp.json in your workspace. For a global server, use ~/.cursor/mcp.json:

{
  "mcpServers": {
    "china-csca-exam": {
      "command": "node",
      "args": [
        "/absolute/path/to/China-CSCA-exam/dist/index.js"
      ]
    }
  }
}

Replace the absolute path, reload Cursor if necessary, and enable the server in its MCP settings. No environment variables or secrets are needed.

Tools

check_csca_requirements

Look up a university's requirements without flattening distinct programmes into one university-wide rule.

Arguments

  • university — required name or alias. Chinese and English names and common abbreviations are supported, such as 中国农大, CAU, NJU, Tsinghua, and DLUT.
  • degree_level — optional; defaults to undergraduate. Accepts undergraduate, graduate, scholarship, 本科, 研究生, 硕士, 博士, or 奖学金. The master/doctoral labels map to the combined graduate category; they are not fine-grained degree filters.
  • program — optional substring of the original programme title. Chinese programme titles are retained rather than machine-translated.
{"university": "CAU"}
{"university": "南京大学", "degree_level": "本科"}

Returns status, required, common requiredSubjects, programme conditions, minimumScore, exemptions, and source links for each matching notice. A graduate search exposes requirementAppliesToRequestedLevel and effectiveRequiredForRequestedLevel, so undergraduate clauses in mixed-level notices are not mistaken for graduate requirements.

Important distinctions:

  • required means compulsory under the cited notice.
  • optional means CSCA is an optional submission, not a compulsory paper.
  • not_mentioned and not_verified mean unknown, not exempt.
  • not_applicable concerns the particular programme, not all admissions at that university.
  • minimumScore: null means no verified threshold is available; it does not mean zero.
  • requiredSubjects lists established common papers. Additional major-dependent papers belong in conditions and the original detailsRaw.

For CAU, the 50-point threshold is per required subject. The subject combination depends on its official major attachment; its automated download returned HTTP 403 during preparation, so no unverified combination has been invented.

For Nanjing University, a valid HSK4 or higher report can exempt Chinese Language undergraduate applicants from Professional Chinese only. It does not waive Mathematics, other major-specific papers, or CSCA as a whole. Do not apply one university's HSK policy to another; DLUT's HSK admission threshold is not an HSK-based CSCA waiver.

search_admission_deadlines

Search application closing months, not all months in which an application window is open.

Arguments

  • degree_level — required category; accepts the same level labels as above.
  • deadline_month — optional integer from 1 to 12.
  • year — optional 2026 or 2027. Without it, matching months from both years are returned.
  • university — optional university-name or alias filter.
  • include_recommended — optional boolean, default false.
  • limit — optional integer 1–100, default 50.
  • offset — optional non-negative integer, default 0.
{"degree_level": "undergraduate", "deadline_month": 5, "year": 2027}
{"degree_level": "scholarship", "deadline_month": 2, "year": 2027, "university": "CAU"}

Results retain programme notices and all matching rounds, with matchedDeadlines, total, nextOffset, and unresolved-notice information. Scholarship is a funding category: explicit scholarship deadlines embedded in degree notices are included, not just records on the workbook's scholarship worksheet. Degree searches may also show the scholarship rounds belonging to those programmes.

A YYYY-MM value has month precision only. The server does not turn it into an invented last day of the month. Recommended dates are tagged and excluded by default; nomination and supplementary-document events are not treated as normal admission cutoffs. Where the source supplies no precise deadline, the original application wording remains available, and filtered searches do not invent one.

get_csca_exam_dates

Arguments: optional year (2026 or 2027) and month (1–12).

{}
{"year": 2027, "month": 3}

Returns the six published sessions and four subject slots per session. Day 1 covers Professional Chinese and Mathematics; Day 2 covers Physics and Chemistry. All timestamps and clock times use Asia/Shanghai / UTC+8.

At this snapshot, the official portal publishes the November registration window:

  • Opens: 15 October 2026, 15:00 Beijing time.
  • Deadline: 21 October 2026, 23:59 Beijing time.
  • Exam: 14–15 November 2026.

Registration dates for the other five sessions are null / not_yet_published, not estimated from earlier exam cycles. The coverage is November 2026 through June 2027, not every examination in both calendar years. Results are reported within ten working days; no calendar-date guarantee is computed.

get_csca_passport_rules

Arguments: optional topic: all, passport, identity, photo, changes, or exam_day; defaults to all.

{"topic": "passport"}
{"topic": "changes"}

Returns an informational checklist rather than an identity-verification service. It accepts no passport numbers, photographs, or personal records. The guide covers the original ordinary passport booklet, validity through score publication, exact registration matching, rejected substitutes, portrait framing, and approved passport corrections before admission-ticket generation. University and visa passport-validity requirements are separate.

Response format and attribution

Every tool produces an MCP text result ending with:

Data source / 数据来源: CrosslineEdu — [https://www.crosslineedu.com](https://www.crosslineedu.com)

It also returns structured output:

{
  "data": { "...": "tool-specific result" },
  "source": {
    "name": "CrosslineEdu",
    "url": "https://www.crosslineedu.com",
    "attribution": "Data source / 数据来源: CrosslineEdu — [https://www.crosslineedu.com](https://www.crosslineedu.com)"
  }
}

data.sources links to the underlying university or CSCA material where available. Tool argument-validation errors and unknown-tool responses set isError: true and retain the same footer. Malformed JSON-RPC requests are protocol errors, not tool results.

Data sources and maintenance

See DATA_SOURCES.md for provenance, normalization decisions and verification limits.

src/                 TypeScript stdio server and deterministic query functions
 data/               Bundled admissions, exam-date and passport-rule JSON
scripts/             Importer, exam-data builder and release helpers
tests/               Unit tests and real SDK stdio integration tests
sources/             Original workbook and compact verified-source notes
 dist/               Compiled CLI, declarations and source maps

The server loads JSON relative to its own installed files, not the client's working directory. An installed npm package includes dist/, data/, and documentation; it does not include the source workbook, Python, tests or import scripts.

To update admissions data, install the optional build-time importer dependency and supply the replacement workbook:

python3 -m pip install -r scripts/requirements.txt
python3 scripts/build_data.py sources/admissions-2027.xlsx

The importer preserves the canonical sheet but also contains snapshot-specific curated deadline and requirement mappings keyed to workbook IDs. Recheck those mappings against new rows before rebuilding a different workbook. It is not a generic auto-verifier. Update its snapshot date and verified-source notes as well.

To update exam dates, verify the live CSCA portal and the CrosslineEdu schedule, then edit scripts/build_exam_data.mjs and rebuild its dictionary:

node scripts/build_exam_data.mjs
npm test

Update data/passport-rules.json from the current official candidate instructions and the CrosslineEdu registration guide. Runtime operation never refreshes data silently.

Packaging and publication

This deliverable is a local project and npm-installable tarball. It has not been published to npm, GitHub, or the MCP Registry. Do not assume that npx china-csca-exam resolves to this package on the public registry yet.

The project display name is China-CSCA-exam. npm package and CLI identifiers use the lowercase slug china-csca-exam, as required for npm publication. Package metadata:

{
  "mcpName": "io.github.limingyu213124/china-csca-exam",
  "homepage": "https://www.crosslineedu.com"
}

The GitHub namespace is configured for limingyu213124. To rebuild the release package:

npm pack

homepage is a plain URL because package.json expects a URL, not Markdown link syntax. The mcpName field alone is not a registry submission and does not establish ownership. The namespace uses the supplied GitHub username; it does not imply a repository has been created or that CrosslineEdu endorses the server.

For a local CLI installation from the generated tarball:

npm install --global ./china-csca-exam-1.0.0.tgz

You may then use "command": "china-csca-exam", "args": [] in an MCP client whose PATH includes npm's global binary directory. The absolute Node-path configuration above is the most predictable option for desktop applications.

Troubleshooting

The server appears silent. Expected: it waits for JSON-RPC requests over stdin. Check that the client lists all four tools.

node cannot be found. Desktop apps may use a different PATH from your terminal. Configure the full executable path and the full dist/index.js path.

A university or deadline is missing. Coverage is limited to the workbook and curated snapshot. Inspect availableLevels, unresolved notices and the linked source; absence is not a waiver or proof that applications are closed.

A tool reports invalid arguments. Months and years are numbers, not strings; level names must be one of the supported labels. Unknown argument keys are rejected, including personal-data fields on the passport tool.

Data seems outdated. This package does not fetch live updates. Confirm deadlines and eligibility on official sites before acting, then update the local dictionaries deliberately.

License and source rights

The project code is MIT-licensed; see LICENSE. Source notices, the supplied workbook and publisher material retain their respective owners' rights. The code license does not grant rights to third-party source content. Review redistribution rights before a public release.

For current guidance and learning resources, visit CrosslineEdu's official website. For examination registration and final rules, use the official CSCA website and the university's current notice.