mcp-powerschool

mcp-powerschool

A FastMCP server for PowerSchool that enables students to check grades, assignments, grade history, and attendance through the Model Context Protocol.

Category
Visit Server

README

PowerSchool MCP Server

A FastMCP server for PowerSchool that enables students to check grades, assignments, grade history, and attendance through the Model Context Protocol.

Deploy to Render

Features

This MCP server provides the following tools for students:

  • get_student_info: Get current student information (name, ID, grade level, school)
  • get_current_grades: View current grades for all courses
  • get_assignments: List assignments (optionally filter by course)
  • get_grade_history: View historical grade data with date filtering
  • get_courses: List all enrolled courses/sections
  • get_attendance: View attendance records
  • get_server_info: Check server configuration and status

Configuration

Required Environment Variables

You need to configure the following environment variables to connect to your PowerSchool instance:

# PowerSchool server URL (without trailing slash)
POWERSCHOOL_URL=https://your-school.powerschool.com

# OAuth2 Client Credentials from PowerSchool Plugin
POWERSCHOOL_CLIENT_ID=your_client_id
POWERSCHOOL_CLIENT_SECRET=your_client_secret

# Student Authentication (for password grant type)
POWERSCHOOL_USERNAME=student_username
POWERSCHOOL_PASSWORD=student_password

PowerSchool Setup

This server requires a PowerSchool plugin with OAuth2 enabled. Your PowerSchool administrator needs to:

  1. Install a PowerSchool plugin with <oauth/> enabled in plugin.xml
  2. Configure API permissions for student data access
  3. Generate OAuth2 client credentials (client ID and secret)
  4. Enable the necessary API endpoints:
    • /ws/v1/student - Student information
    • /ws/v1/student/grades - Grade data
    • /ws/v1/student/assignments - Assignment data
    • /ws/v1/student/sections - Course/section data
    • /ws/v1/student/attendance - Attendance data

For more information about PowerSchool's API, see:

Local Development

Setup

Fork the repo, then run:

git clone <your-repo-url>
cd mcp-powerschool
conda create -n mcp-powerschool python=3.13
conda activate mcp-powerschool
pip install -r requirements.txt

Configure Environment Variables

Create a .env file or set environment variables:

export POWERSCHOOL_URL=https://your-school.powerschool.com
export POWERSCHOOL_CLIENT_ID=your_client_id
export POWERSCHOOL_CLIENT_SECRET=your_client_secret
export POWERSCHOOL_USERNAME=your_username
export POWERSCHOOL_PASSWORD=your_password

Test Locally

python src/server.py
# then in another terminal run:
npx @modelcontextprotocol/inspector

Open http://localhost:3000 and connect to http://localhost:8000/mcp using "Streamable HTTP" transport (NOTE THE /mcp!).

Available Tools

Once connected, you can test the following tools:

  1. get_server_info - Verify configuration
  2. get_student_info - Get student details
  3. get_current_grades - View all current grades
  4. get_courses - List enrolled courses
  5. get_assignments - View assignments (optional: pass section_id)
  6. get_grade_history - View historical grades (optional: pass start_date, end_date)
  7. get_attendance - View attendance records

Deployment

Option 1: One-Click Deploy to Render

  1. Click the "Deploy to Render" button above
  2. Configure the required environment variables in Render's dashboard:
    • POWERSCHOOL_URL
    • POWERSCHOOL_CLIENT_ID
    • POWERSCHOOL_CLIENT_SECRET
    • POWERSCHOOL_USERNAME
    • POWERSCHOOL_PASSWORD

Option 2: Manual Deployment

  1. Fork this repository
  2. Connect your GitHub account to Render
  3. Create a new Web Service on Render
  4. Connect your forked repository
  5. Render will automatically detect the render.yaml configuration
  6. Add the required environment variables in Render's dashboard

Your server will be available at https://your-service-name.onrender.com/mcp (NOTE THE /mcp!)

Usage with AI Assistants

You can connect this MCP server to various AI assistants that support the Model Context Protocol:

Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "powerschool": {
      "url": "https://your-service-name.onrender.com/mcp"
    }
  }
}

Poke

You can connect your MCP server to Poke at poke.com/settings/connections.

To test the connection explicitly, ask poke something like: Tell the subagent to use the "powerschool" integration's "get_current_grades" tool.

If you run into persistent issues of poke not calling the right MCP (e.g. after you've renamed the connection), you may send clearhistory to poke to delete all message history and start fresh.

Example Usage

Here are some example queries you can make through your AI assistant:

  • "What are my current grades?"
  • "Show me my assignments for math class"
  • "What's my attendance record this semester?"
  • "How have my grades changed over the last month?"
  • "List all my courses and teachers"
  • "Show me my student information"

API Reference

PowerSchool API Endpoints

This server uses the PowerSchool REST API. The main endpoints are:

  • GET /ws/v1/student - Get student information
  • GET /ws/v1/student/grades - Get current grades
  • GET /ws/v1/student/assignments - Get all assignments
  • GET /ws/v1/student/assignments/section/{id} - Get assignments for a section
  • GET /ws/v1/student/sections - Get enrolled sections/courses
  • GET /ws/v1/student/attendance - Get attendance records
  • GET /ws/v1/student/grades/history - Get historical grades

Authentication

The server uses OAuth2 for authentication with PowerSchool. It supports both:

  1. Client Credentials Grant - For server-to-server authentication
  2. Password Grant - For student username/password authentication

The authentication token is automatically cached and refreshed as needed.

Security Notes

⚠️ Important Security Considerations:

  1. Credentials Storage: Store credentials securely using environment variables or secret management services. Never commit credentials to version control.

  2. HTTPS: Always use HTTPS in production to protect credentials and student data in transit.

  3. Access Control: This server is designed for individual student use. Each deployment should be configured with credentials for a single student.

  4. Token Security: Authentication tokens are cached in memory and automatically refreshed. They are never persisted to disk.

  5. Production Deployment: When deploying to production, ensure your hosting platform (like Render) properly secures environment variables.

Troubleshooting

Configuration Issues

If you get configuration errors, verify:

  • All required environment variables are set
  • PowerSchool URL doesn't have a trailing slash
  • Client ID and secret are correct
  • Student credentials are valid (if using password grant)

Connection Issues

If the server can't connect to PowerSchool:

  • Verify PowerSchool URL is accessible
  • Check that the PowerSchool plugin is installed and OAuth is enabled
  • Ensure API endpoints are enabled for student access
  • Check firewall rules if running on-premises

Authentication Issues

If authentication fails:

  • Verify client credentials are correct
  • Check that student username/password are valid
  • Ensure the OAuth2 grant type (password or client_credentials) is enabled

Use the get_server_info tool to check configuration status.

Development

Adding New Tools

You can add more PowerSchool API endpoints by:

  1. Adding a method to the PowerSchoolAPI class
  2. Creating a corresponding MCP tool with @mcp.tool decorator
  3. Following the existing pattern for error handling and response format

Example:

@mcp.tool(description="Get school calendar events")
def get_calendar() -> dict:
    try:
        client = get_api_client()
        result = client._make_request("/ws/v1/student/calendar")
        return {
            "success": True,
            "data": result
        }
    except Exception as e:
        return {
            "success": False,
            "error": str(e)
        }

License

This project is open source and available under the MIT License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues related to:

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured