Connects Claude to the Philippine Department of Education's schools masterlist dataset via five stdio tools: search_schools for filtering by region, division, or keyword; get_school_by_beis_id for direct lookups; list_regions and list_divisions for browsing administrative boundaries; and dataset_stats for quick counts and coverage checks. Runs locally with automatic dataset download on first launch, pinned to a canonical GitHub release tag. Reach for this when building education sector tools, validating school references in Philippine applications, or doing exploratory analysis on DepEd institutional data without standing up a database. Config drops into VS Code or Claude Desktop as a single npx command with an optional local cache path.
Local stdio MCP server for querying and analyzing the Philippine schools masterlist dataset.
Tools:
search_schoolsget_school_by_beis_idlist_regionslist_divisionsdataset_statsnpm install
npm start
Use npm start only when running from this repo manually.
.vscode/mcp.json): enough for normal usage. If status is Running, VS Code already started the server.claude_desktop_config.json): enough for normal usage. Restart Claude after config changes.npx -y @darwinphi/ph-schools-mcp-server ...: one-off CLI usage without cloning repo.npm install && npm start: local development/maintenance in this repository.mcp.json configured, no manual npx: works for chat tool calls (dataset_stats, search_schools, etc.).npx -y @darwinphi/ph-schools-mcp-server, no MCP client config: server process starts, but chat clients won't use it automatically.mcp.json configured plus manual npx start: usually unnecessary; let the MCP client manage start/stop.npx ... --help or npx ... sync-data ....Without MCP client config, automatic VS Code/Claude tool-calling will not work.
mcp.jsonUse mcp.json for normal day-to-day MCP usage in VS Code (or equivalent client config in Claude Desktop).
Use it for:
dataset_stats, search_schools, etc.)If MCP status shows Running, the client already started the server; manual npm start or manual npx start is usually unnecessary.
npxUse npx from a terminal when you need one-off CLI actions without cloning or developing this repo.
Use it for:
npx -y @darwinphi/ph-schools-mcp-server --helpnpx -y @darwinphi/ph-schools-mcp-server sync-data --tag v1.0.1 --output "$HOME/.ph-schools/data.json"npx -y @darwinphi/ph-schools-mcp-serverDo not use npx start as a replacement for VS Code/Claude MCP config. In normal usage, let the MCP client manage server startup from its config.
npm install and npm startUse these when working from this repository (developer/maintainer workflow), not for normal client usage.
Use them for:
Typical local workflow:
npm install
npm test
npm start
If your VS Code/Claude MCP config is already working, you usually do not need to run npm start manually.
# Start MCP server over stdio
npx -y @darwinphi/ph-schools-mcp-server
# Sync canonical dataset once to a chosen path
npx -y @darwinphi/ph-schools-mcp-server sync-data --tag v1.0.1 --output "$HOME/.ph-schools/data.json"
npx -y @darwinphi/ph-schools-mcp-server --help
npx -y @darwinphi/ph-schools-mcp-server sync-data --tag v1.0.1 --output "$HOME/.ph-schools/data.json"
This server is hybrid by default:
Default canonical URL (pinned tag v1.0.1):
https://raw.githubusercontent.com/darwinphi/ph-schools-dataset/v1.0.1/schools_masterlist_2020_2021.json
Runtime env vars:
PH_SCHOOLS_DATA_PATH: preferred local JSON file path (used directly if present; auto-synced to this path if missing)PH_SCHOOLS_DATA_URL: override download URL for sync-dataPH_SCHOOLS_DATA_TAG: canonical tag for sync-data when URL is not providedSet .vscode/mcp.json:
{
"servers": {
"phSchools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@darwinphi/ph-schools-mcp-server"],
"env": {
"PH_SCHOOLS_DATA_PATH": "/Users/your-user/.ph-schools/data.json"
}
}
}
}
If PH_SCHOOLS_DATA_PATH file is missing, the server automatically downloads from canonical source and writes to that path.
Update Claude config:
{
"mcpServers": {
"ph-schools": {
"command": "npx",
"args": ["-y", "@darwinphi/ph-schools-mcp-server"],
"env": {
"PH_SCHOOLS_DATA_PATH": "/Users/your-user/.ph-schools/data.json"
}
}
}
}
Alternative if npx is unreliable in your shell: install globally and use "command": "ph-schools-mcp-server".
If PH_SCHOOLS_DATA_PATH file is missing, the server automatically downloads from canonical source and writes to that path.
Typical macOS config file:
~/Library/Application Support/Claude/claude_desktop_config.json
npm test
npm run test:package
Run dataset_stats and summarize key insights.List all divisions in Region I using list_divisions.Search schools in region "Region I" and division "Ilocos Norte".Get school by BEIS ID 100001 using get_school_by_beis_id.Search schools with query "High School".One-time npm setup (Trusted Publishing):
@darwinphi/ph-schools-mcp-server → Settings → Trusted publishers.darwinphiph-schools-mcp-servercd.ymlNPM_TOKEN; release workflow uses OIDC (id-token: write).Manual release flow (v1):
src/constants.js.npm version patch # or minor / major
What npm version patch does:
package.json version (e.g., 1.0.1 -> 1.0.2)package-lock.json version fieldsv1.0.2)server.json version to match package.json.npm ci
npm test
npm run test:package
git push
git push --tags
gh release create v<new_version> --generate-notes --title "v<new_version>"
Example:
gh release create v1.0.2 --generate-notes --title "v1.0.2"
v*) automatically trigger CD Release workflow.For metadata-only updates, use workflow Publish MCP Registry Metadata.
darwinphi/ph-schools-dataset (canonical repository backed by gov.ph source data).PH_SCHOOLS_DATA_PATHAbsolute path to a local schools dataset JSON file.
PH_SCHOOLS_DATA_URLOptional source URL used by sync-data.
PH_SCHOOLS_DATA_TAGOptional canonical dataset tag used by sync-data when URL is not provided.