io.github.thehesiod/psquare

编码与调试

by thehesiod

服务于 ParentSquare 家校沟通平台的 MCP server,支持学校与家长之间的信息交互与流程集成。

什么是 io.github.thehesiod/psquare

服务于 ParentSquare 家校沟通平台的 MCP server,支持学校与家长之间的信息交互与流程集成。

README

ParentSquare MCP Server

MCP Registry PyPI

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.

Available on the MCP Registry as io.github.thehesiod/psquare and on PyPI as parentsquare-mcp.

Disclaimer

This project is not affiliated with, endorsed by, or sponsored by ParentSquare, Inc. "ParentSquare" and all related names, logos, and trademarks are the property of ParentSquare, Inc.

This server communicates with ParentSquare's undocumented internal APIs (scraping the web UI and calling its non-public /api/v2/ JSON endpoints) — these are not published, not guaranteed to be stable, and may change or be blocked at any time without notice. Use of those interfaces may violate ParentSquare's Terms of Service; you are responsible for reviewing the ToS and deciding whether your use is acceptable.

Use at your own risk. The authors and contributors accept no responsibility for any consequences of using this software, including but not limited to: account suspension or termination, data loss or corruption, missed or incorrect notifications, MFA lockouts, leaked session cookies, IP blocks, or any other direct or indirect damages. No warranty is provided — see LICENSE for the full MIT no-warranty clause.

If ParentSquare publishes an official API, this project should be considered deprecated in favor of that.

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 environment variables or 1Password CLI on session expiry

Setup

Prerequisites

Credentials can be provided in either of two ways (checked in this order):

  1. Environment variables — set PS_USERNAME and PS_PASSWORD
  2. 1Password CLI (op) — with a "Parentsquare" item containing username and password fields

Install in Claude Code

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

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

bash
claude mcp add --transport stdio parentsquare -- uvx --from "parentsquare-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 — when the session expires, the server loads your credentials from environment variables (or 1Password CLI) and re-authenticates (including MFA if needed).

To use environment variables with Claude Code, add an env block to your MCP config:

json
{
  "mcpServers": {
    "parentsquare": {
      "command": "uvx",
      "args": ["parentsquare-mcp"],
      "env": {
        "PS_USERNAME": "your@email.com",
        "PS_PASSWORD": "your-password"
      }
    }
  }
}

Security note: environment variables place your password in plaintext inside your MCP config file. If you chose a password manager specifically to avoid that, prefer the 1Password CLI path.

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

PackagePurposeLicense
mcpModel Context Protocol SDKMIT
requestsHTTP clientApache 2.0
beautifulsoup4HTML parsingMIT
icalendarICS calendar parsingBSD
pymupdfPDF 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

常见问题

io.github.thehesiod/psquare 是什么?

服务于 ParentSquare 家校沟通平台的 MCP server,支持学校与家长之间的信息交互与流程集成。

相关 Skills

前端设计

by anthropics

Universal
热门

面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。

想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。

编码与调试
未扫描165.3k

网页应用测试

by anthropics

Universal
热门

用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。

借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。

编码与调试
未扫描165.3k

网页构建器

by anthropics

Universal
热门

面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。

在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。

编码与调试
未扫描165.3k

相关 MCP Server

GitHub

编辑精选

by GitHub

热门

GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。

这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。

编码与调试
89.1k

by Context7

热门

Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。

它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。

编码与调试
60.0k

by tldraw

热门

tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。

这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。

编码与调试
49.5k

评论