PowerSchool MCP服务器
A. FastMCP PowerSchool服务器,使学生能够通过模型上下文协议检查成绩、作业、成绩历史和出勤情况。

特性
此MCP服务器为学生提供以下工具:
- get_student_info:获取当前学生信息(姓名、ID、年级、学校)
- get_current_grades:查看所有课程的当前成绩
- 获取分配:列出作业(可选按课程筛选)
- get_grade_history:通过日期过滤查看历史成绩数据
- get_courses:列出所有已注册的课程/部分
- 获取_考勤:查看考勤记录
- get_server_info:检查服务器配置和状态
配置
所需的环境变量
您需要配置以下环境变量以连接到PowerSchool实例:
# 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_passwordPowerSchool设置
此服务器需要启用了OAuth2的PowerSchool插件。您的PowerSchool管理员需要:
- 安装PowerSchool插件 `
启用于plugin.xml` - 为学生数据访问配置API权限
- 生成OAuth2客户端凭据(客户端ID和密钥)
- 启用必要的API终结点:
- /ws/v1/student -学生信息 - /ws/v1/student/grades -等级数据 - /ws/v1/student/assignments -分配数据 - /ws/v1/student/sections -课程/章节数据 - /ws/v1/student/attendance -考勤数据
有关PowerSchool API的更多信息,请参阅:
本地开发
设置
分叉repo,然后运行:
git clone
cd mcp-powerschool
conda create -n mcp-powerschool python=3.13
conda activate mcp-powerschool
pip install -r requirements.txt配置环境变量
创建一个 .env 文件或设置环境变量:
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本地测试
python src/server.py
# then in another terminal run:
npx @modelcontextprotocol/inspector打开http://localhost:3000并连接到 http://localhost:8000/mcp 使用“流式HTTP”传输(注意 /mcp!).
可用工具
连接后,您可以测试以下工具:
- get_server_info -验证配置
- get_student_info -获取学生详细信息
- get_current_grades -查看所有当前成绩
- get_courses -列出已注册的课程
- 获取分配 -查看作业(可选:pass section_id)
- get_grade_history -查看历史成绩(可选:通过start_date、end_date)
- 获取_考勤 -查看考勤记录
部署
选项1:一键部署渲染
- 单击上面的“部署到渲染”按钮
- 在Render的仪表板中配置所需的环境变量:
- POWERSCHOOL_URL - POWERSCHOOL_CLIENT_ID - POWERSCHOOL_CLIENT_SECRET - POWERSCHOOL_USERNAME - POWERSCHOOL_PASSWORD
选项2:手动部署
- 分叉此存储库
- 将您的GitHub帐户连接到Render
- 在Render上创建新的Web服务
- 连接您的分叉存储库
- 渲染将自动检测
render.yaml配置 - 在Render的仪表板中添加所需的环境变量
您的服务器将在 https://your-service-name.onrender.com/mcp (注意 /mcp!)
使用AI助手
您可以将此MCP服务器连接到支持模型上下文协议的各种AI助手:
克劳德桌面版
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"powerschool": {
"url": "https://your-service-name.onrender.com/mcp"
}
}
}戳
您可以将MCP服务器连接到Poke poke.com/设置/连接.
要显式测试连接,请按如下方式提问: Tell the subagent to use the "powerschool" integration's "get_current_grades" tool.
如果您遇到持续的poke未调用正确的MCP的问题(例如,在您重命名连接后),您可以发送 clearhistory 戳以删除所有消息历史记录并重新开始。
示例用法
以下是您可以通过AI助手进行的一些示例查询:
- “我目前的成绩是多少?”
- “给我看数学课的作业”
- “我这学期的出勤记录是多少?”
- “上个月我的成绩有什么变化?”
- “列出我的所有课程和老师”
- “显示我的学生信息”
API 参考
动力学校API终点
此服务器使用PowerSchool REST API。主要终点是:
GET /ws/v1/student-获取学生信息GET /ws/v1/student/grades-获取当前成绩GET /ws/v1/student/assignments-获取所有作业GET /ws/v1/student/assignments/section/{id}-获取某个部分的作业GET /ws/v1/student/sections-获取已注册的部分/课程GET /ws/v1/student/attendance-获取考勤记录GET /ws/v1/student/grades/history-获取历史成绩
认证
服务器使用OAuth2与PowerSchool进行身份验证。它同时支持:
- 客户端凭证授权 -用于服务器到服务器身份验证
- 密码授予 -用于学生用户名/密码验证
身份验证令牌会根据需要自动缓存和刷新。
安全说明
⚠️ 重要安全注意事项:
- 凭据存储:使用环境变量或秘密管理服务安全地存储凭据。切勿将凭据提交到版本控制。
- 超文本传输安全协议:在生产环境中始终使用HTTPS来保护传输中的凭据和学生数据。
- 访问控制:此服务器专为学生个人使用而设计。每个部署都应该为单个学生配置凭据。
- 令牌安全:身份验证令牌缓存在内存中并自动刷新。它们从不持久化到磁盘。
- 生产部署:部署到生产环境时,请确保您的宿主平台(如Render)正确保护环境变量。
故障排除
配置问题
如果遇到配置错误,请验证:
- 所有必需的环境变量都已设置
- PowerSchool URL没有尾随斜线
- 客户端ID和密码正确
- 学生证书有效(如果使用密码授权)
连接问题
如果服务器无法连接到PowerSchool:
- 验证PowerSchool URL是否可访问
- 检查是否安装了PowerSchool插件并启用了OAuth
- 确保为学生访问启用API端点
- 如果在本地运行,请检查防火墙规则
身份验证问题
如果身份验证失败:
- 验证客户端凭据是否正确
- 检查学生用户名/密码是否有效
- 确保启用了OAuth2授权类型(密码或client_credentials)
使用 get_server_info 用于检查配置状态的工具。
发展
添加新工具
您可以通过以下方式添加更多PowerSchool API端点:
- 向添加方法
PowerSchoolAPI类 - 使用创建相应的MCP工具
@mcp.tool装饰器 - 遵循现有的错误处理和响应格式模式
例子:
@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)
}许可证
这个项目是开源的,可以在MIT许可证下使用。
贡献
欢迎投稿!请随时提交拉取请求。
支持
关于以下问题:
- 此MCP服务器:在GitHub上打开一个问题
- 动力学校API:请联系PowerSchool支持人员或学校管理员
- MCP协议:参见 模型上下文协议文档
