parentsquare-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@parentsquare-mcpWhat's on the school calendar this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ParentSquare MCP (TypeScript)
A local MCP server that lets Claude, Cursor, and other MCP clients read your ParentSquare account: feeds, calendar, messages, directory, groups, and the rest. ParentSquare does not publish a public API, so this talks to the same web pages and internal endpoints the site uses in a browser.
This repo is a TypeScript port for local use. The original Python implementation is thehesiod/psquare-mcp (MIT). That project did the hard work of mapping ParentSquare's HTML, JSON:API, GraphQL, and ICS endpoints. This port follows the same behavior and tool names.
Disclaimer
This project is not affiliated with ParentSquare, Inc. It uses undocumented internal APIs that can change or stop working without notice. You are responsible for deciding whether that fits ParentSquare's terms and your own risk tolerance. Session cookies and credentials stay on your machine, but treat them like passwords.
Related MCP server: pronote-mcp
What you can do
The server exposes the same 23 tools as the Python version, including:
Feeds and posts (
get_feeds,get_post,get_group_feed)Calendar (
get_calendar_events)Messages (
list_conversations,get_conversation)Directory (
get_directory,get_staff_member)Photos and files (
list_photos,list_files,download_file)Sign-ups, notices, polls, links, payments, volunteer hours, forms
Schools, groups, and student dashboard (
list_schools,list_groups,get_student_dashboard)MFA (
submit_mfa_code)
get_post can return inline images. PDF text extraction works if you install the optional pdf-parse dependency (pnpm install picks it up from optionalDependencies when available).
Requirements
Node.js 20+
pnpm
ParentSquare login credentials, either:
PS_USERNAMEandPS_PASSWORDenvironment variables, or1Password CLI with an item named
Parentsquare(fieldsusernameandpassword)
Setup
git clone <this-repo>
cd parentsquare-mcp
pnpm installOn first run the server loads saved cookies from ~/.parentsquare_cookies.json if present. When the session expires it re-authenticates using env vars or 1Password. MFA codes go through the submit_mfa_code tool.
To bootstrap cookies manually without storing a password in env:
pnpm export-cookiesThat walks you through copying the Cookie header from Chrome DevTools (the ps_s session cookie is httpOnly, so the Network tab is required).
Run locally
pnpm startThe server speaks MCP over stdio. Point your client at it with something like:
{
"mcpServers": {
"parentsquare": {
"command": "node",
"args": ["/absolute/path/to/parentsquare-mcp/dist/index.js"],
"cwd": "/absolute/path/to/parentsquare-mcp",
"env": {
"PS_USERNAME": "your@email.com",
"PS_PASSWORD": "your-password"
}
}
}
}Run pnpm build after cloning or pulling changes so dist/ exists. Use node with the compiled entry point rather than pnpm exec tsx: Cursor's MCP spawn environment often does not include Homebrew's pnpm on PATH.
Replace the paths with your checkout location. If you use 1Password instead of env vars, omit the env block.
Environment variables
Variable | Purpose | Default |
| Login email | — |
| Login password | — |
| Cookie JSON path |
|
|
|
|
How it works
Each tool fetches HTML or JSON from ParentSquare, parses it (cheerio for HTML, node-ical for calendars), and returns markdown or JSON. The HTTP client keeps cookies fresh, re-logs in when redirected to /signin, and sends a Chrome User-Agent because ParentSquare returns 403 otherwise. Schools, students, and your user ID are discovered from page content on first use. No config file lists your schools.
License
MIT. See LICENSE. Copyright (c) 2026 Scott Weaver; based on thehesiod/psquare-mcp by Alexander Mohr (also MIT). Optional PDF support uses pdf-parse, which has its own license terms.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Brightspace (D2L): check grades, due dates, announcements, rosters & more using Claude, ChatGPT, Cursor, or any MCP client. Built with TypeScript and the D2L REST API.Last updated1215028MIT
- -license-quality-maintenanceA local MCP server that exposes Pronote (French school management system) data via MCP, enabling AI assistants to retrieve schedules, homework, grades, absences, and more. Supports token-based authentication with QR code setup.Last updated
- AlicenseAqualityDmaintenanceEnables Claude to access ParentSquare school-parent communication platform, including feeds, calendar, conversations, and media files.Last updated233MIT
- Alicense-qualityDmaintenanceAn MCP server for accessing Dutch school schedules from Magister. Enables Claude and other MCP-compatible AI assistants to query school schedules, drop-off times, and pick-up times.Last updated143MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tdlm/parentsquare-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server