Wilma MCP服务器
一 MCP(模型上下文协议) 服务器 威尔玛 -Visma的芬兰学校交流平台。这允许克劳德和其他兼容MCP的人工智能助手与学校数据进行交互,包括时间表、消息等。
特性
- 日程 -查看包含科目、时间和教师的每日或每周时间表
- 消息 -阅读收件箱中已读/未读状态的邮件,查看完整内容,标记为已读
- 收件人 -列出可用的邮件收件人(教师、工作人员)
- 发送消息 -撰写并向教师发送信息
先决条件
- Python 3.11或更高版本
- 威尔玛账户(学生、监护人或教师)
- 您学校的Wilma URL(例如。,
https://yourschool.inschool.fi)
安装
# Clone the repository
git clone https://github.com/jessemc98/wilma-mcp.git
cd wilma-mcp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install -e .配置
创建一个 .env 将您的Wilma凭据归档:
cp .env.example .env编辑 .env:
WILMA_BASE_URL=https://yourschool.inschool.fi
WILMA_USERNAME=your_username
WILMA_PASSWORD=your_password安全说明:永远不要承诺你的 .env 文件到版本控制。使用OpenClaw
如果你使用 开爪,该项目包括 SKILL.md 它会自动教您的代理如何使用Wilma MCP工具。
{
"mcpServers": {
"wilma": {
"command": "/path/to/wilma-mcp/venv/bin/python",
"args": ["-m", "wilma_mcp.server"],
"cwd": "/path/to/wilma-mcp"
}
}
}- 放置或符号链接
SKILL.md将其添加到您的OpenClaw技能目录中,以便代理可以发现它。
使用Claude Desktop
将服务器添加到Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wilma": {
"command": "/path/to/wilma-mcp/venv/bin/python",
"args": ["-m", "wilma_mcp.server"],
"cwd": "/path/to/wilma-mcp"
}
}
}更新配置后重新启动Claude Desktop。
可用工具
get_schedule
获取特定日期的学校时间表。
参数:
date_str(可选):获取时间表的日期。默认为“今天”。
- 支持:“今天”、“明天”、“昨天” - 工作日名称:“星期一”、“星期二”等。(英语或芬兰语) - 日期格式:“2024-03-15”、“15.3.2024”
例子: “我星期一的日程安排是什么?”
get_week_schedule
获取整整一周的日程安排。
参数:
start_date(可选):一周的开始日期。默认为今天。
例子: “给我看看下周的日程安排”
get_messages
从收件箱获取邮件列表。每条消息都显示一个已读/未读指示符(📖 阅读,📬 未读)。
参数:
folder(可选):文件夹名称-“收件箱”、“已发送”或“存档”。默认为“收件箱”。limit(可选):要返回的最大消息数。默认值为20。
例子: “检查我的消息”
get_message
阅读内容完整的特定消息。注意:在Wilma服务器上查看邮件会自动将其标记为已读。
参数:
message_id:要读取的消息的ID。
例子: “阅读邮件12345”
set_message_read
明确地将邮件标记为已读。可用于将邮件标记为已读,而无需阅读其全部内容。Wilma不支持将邮件标记为未读,这是一个平台限制。
参数:
message_id:要标记为已读的消息的ID。
例子: “将邮件12345标记为已读”
get_recipients
获取可用邮件收件人(教师、工作人员)的列表。
例子: “我可以向谁发送消息?”
send_message
向教师或工作人员发送新消息。
参数:
recipient_id:收件人的ID(使用get_recipients查找ID)subject:消息主题body:消息正文/内容reply_to_id(可选):消息ID(如果这是回复)
例子: “向123老师发送一条关于家庭作业的信息”
reply_to_message
回复现有邮件。这是首选的回复方式,因为它通过Wilma的回复表单自动处理收件人解析,而无需查找收件人ID。
参数:
message_id:要回复的邮件的ID(发件人get_messages)body:回复消息正文/内容
例子: “回复消息12345,说我会参加”
对话示例
配置后,您可以询问Claude:
- “我今天的日程安排是什么?”
- “我星期五有课吗?”
- “显示我的未读邮件”
- “阅读老师的留言”
- “明天几点开始上学?”
技术说明
- 威尔玛没有官方公开的API。该服务器对web界面进行逆向工程。
- 身份验证使用通过登录流获得的会话Cookie。
- 日程数据是从日程页面中的嵌入式JavaScript中提取的。
- 消息列表使用JSON端点;单个消息需要HTML解析。
- 已读/未读跟踪:Wilma的JSON API包括
Status每条消息的字段——真实表示未读,虚假/缺席表示已读。查看消息(GET请求)将其标记为服务器端已读。没有API将消息标记为未读。 - 如果Wilma的web界面发生变化,服务器可能需要更新。
发展
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest未来功能(计划中)
- 成绩和评估
- 缺勤/出勤记录
- 即将到来的考试
- 学校新闻/公告
- 课程列表
许可证
MIT许可证-请参阅 许可证 文件。
免责声明
这是一个非官方项目,与Visma无关或不受其认可。使用风险自负。请遵守威尔玛的服务条款和费率限制。
贡献
欢迎投稿!请随时提交拉取请求。
