china-csca-exam
v1.0.0
Published
Offline China university admissions and CSCA reference tools, sourced from CrosslineEdu and linked university notices.
Maintainers
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 testThe 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.jsA 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 checkClaude 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, andDLUT.degree_level— optional; defaults toundergraduate. Acceptsundergraduate,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:
requiredmeans compulsory under the cited notice.optionalmeans CSCA is an optional submission, not a compulsory paper.not_mentionedandnot_verifiedmean unknown, not exempt.not_applicableconcerns the particular programme, not all admissions at that university.minimumScore: nullmeans no verified threshold is available; it does not mean zero.requiredSubjectslists established common papers. Additional major-dependent papers belong inconditionsand the originaldetailsRaw.
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 from1to12.year— optional2026or2027. Without it, matching months from both years are returned.university— optional university-name or alias filter.include_recommended— optional boolean, defaultfalse.limit— optional integer1–100, default50.offset— optional non-negative integer, default0.
{"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 mapsThe 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.xlsxThe 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 testUpdate 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 packhomepage 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.tgzYou 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.
