Skip to main content

MCP server for ParentSquare school communication platform

Project description

ParentSquare MCP Server

An MCP (Model Context Protocol) server that gives Claude access to ParentSquare, a school-parent communication platform. Since ParentSquare has no public API, this server scrapes the web interface using saved session cookies.

Features

Feed & Posts

  • get_feeds — Browse paginated school feed with titles, authors, summaries, and attachment names
  • get_post — Full post details with body text, comments, poll results, signup items, and inline image/PDF content (Claude can "see" attached calendars, flyers, etc.)
  • get_group_feed — Posts from a specific group

Calendar

  • get_calendar_events — Events from ICS calendar as structured JSON (title, start/end, location, description)
  • Falls back to guiding Claude to search feed posts for image/PDF calendars when ICS is empty

Communication

  • list_conversations / get_conversation — Read message threads
  • get_directory — Staff directory as structured JSON (name, role, phone, user_id)
  • get_staff_member — Full staff details with email, office hours, and inline profile photo

Media & Files

  • list_photos — Photo gallery with URLs
  • list_files — Document files
  • download_file — Download any attachment to local disk

Participate

  • list_signups — Sign-up and RSVP posts with progress tracking (e.g. "53/103 Items")
  • list_notices — Alerts and secure documents
  • list_polls — Polls with vote counts and winning options
  • list_forms — Permission slips and signable forms
  • list_payments — Payment items with prices and summary stats
  • list_volunteer_hours — Logged volunteer hours with totals

Groups & Discovery

  • list_schools — Schools and students as structured JSON
  • list_school_features — Available sections per school (parsed from sidebar)
  • list_groups — Groups with member counts, descriptions, and membership status
  • list_links — Quick-access links (Google Drive, external sites)

Student

  • get_student_dashboard — School, grade, classes, and teachers as structured JSON

Authentication

  • submit_mfa_code — Complete MFA verification with a 6-digit code
  • Supports MCP elicitation for inline MFA prompts
  • Session cookies persisted to ~/.parentsquare_cookies.json
  • Credentials loaded from 1Password CLI on session expiry

Setup

Prerequisites

  • 1Password CLI (op) with a "Parentsquare" item containing username and password fields

Install in Claude Code

claude mcp add --transport stdio parentsquare -- uvx --from git+https://github.com/thehesiod/psquare-mcp parentsquare-mcp

To enable PDF text extraction for post attachments (optional, AGPL-3.0 licensed):

claude mcp add --transport stdio parentsquare -- uvx --from "psquare-mcp[pdf] @ git+https://github.com/thehesiod/psquare-mcp" parentsquare-mcp

That's It

No further configuration needed. The server auto-discovers your schools, students, and user ID from ParentSquare on first use. Authentication is handled automatically via 1Password CLI — when the session expires, the server loads your credentials from 1Password and re-authenticates (including MFA if needed).

How It Works

The server uses requests + BeautifulSoup to scrape ParentSquare's server-rendered HTML pages. Each tool follows the pattern:

  1. Fetch the HTML page via PSClient.get_page() or JSON via PSClient.get_json() (auto-relogins on session expiry)
  2. Parse with a dedicated parser in parsers/ that extracts structured data into dataclasses
  3. Return results as either structured JSON dicts (for data-lookup tools) or markdown text (for content-rich tools)

Data-lookup tools (list_schools, get_directory, get_calendar_events, get_student_dashboard, get_staff_member) return structured JSON for easy programmatic access. Content tools (get_post, get_feeds, get_conversation) return markdown.

On first use, the server auto-discovers your schools, students, and user ID from ParentSquare (no config file needed).

For get_post, image attachments are downloaded and returned as MCP Image objects (so Claude can see them), and PDF attachments have their text extracted via pymupdf. get_staff_member also returns inline profile photos.

Groups use a GraphQL endpoint (/graphql) instead of HTML scraping. The directory and staff details use the internal /api/v2/ JSON:API.

Dependencies

Package Purpose License
mcp Model Context Protocol SDK MIT
requests HTTP client Apache 2.0
beautifulsoup4 HTML parsing MIT
icalendar ICS calendar parsing BSD
pymupdf PDF text extraction (optional) AGPL-3.0

License

MIT — see LICENSE. Note: the optional pymupdf dependency is AGPL-3.0 licensed.

mcp-name: io.github.thehesiod/psquare

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parentsquare_mcp-0.1.2.tar.gz (75.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

parentsquare_mcp-0.1.2-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

Details for the file parentsquare_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: parentsquare_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 75.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for parentsquare_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 abf8a4b0c62f883efbf1bf11286aae70b53e3dd675de9d4a41b411c217654ee3
MD5 74c9ce66f3e12068d7ccea4996e9b827
BLAKE2b-256 52eacec033e177b96f04d2cde7516bb147486db99e57c9d46d2fea8b9804baeb

See more details on using hashes here.

File details

Details for the file parentsquare_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: parentsquare_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 44.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for parentsquare_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5a5968ab1d1a36deb9d50a5c4248562efbe2ec43bfbf236d9f4f795eead37aab
MD5 7da4a242806a760f12f16e84e82db3b4
BLAKE2b-256 0164cdb087a51fc592b5721092ac6715eb81e94beb520ce6aac2c8ccc2f77fd3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page