36协议检查用MCP服务器
本仓库是一个MCP服务器,用于评估日本36协定(《劳动基准法》第36条)相关的每月上限达成风险,并提出补救措施(如休年假、设定每日工作时长上限)。
概要
输入当前月份的加班和休息日工作累计时间后,将输出以下两个上限的预计达成情况及补偿建议:
- 每月上限45小时(仅加班)
- 以80小时为基准(加班+假日工作,简易单月评价)
🆕 新功能(v2.0)
工作日(平日)自动计算功能
现已实现自动计算除去周六日的工作日天数!
workingDaysElapsed和workingDaysRemaining无需输入- 自动仅计算工作日
- 详情 工作日计算文档 请参照
使用示例
输入示例
简易使用方法(推荐)- 自动计算模式
{
"totalWorkHoursToDate": 150.5,
"holidayWorkHoursToDate": 8.0,
"currentDate": "2025-04-18"
}工作日数将自动计算(仅计算除周六日外的平日)。
详细使用方法 - 手动输入模式
{
"totalWorkHoursToDate": 150.5,
"holidayWorkHoursToDate": 8.0,
"workingDaysElapsed": 15,
"workingDaysRemaining": 8,
"currentDate": "2025-04-18",
"autoCalculateWeekdays": false
}输入项说明
totalWorkHoursToDate: 截至前天(昨天)的总工作时间 累计(小时)【必填】
- 直接输入考勤系统的“总工作时间” - 包括加班和节假日在内的所有工作时间 - ⚠️ 不包括今天的(仅确定值)
holidayWorkHoursToDate: 截至前日的节假日工作 累计(时间)【必填】workingDaysElapsed: 在前天之前工作天数【可选】
- 省略时自动计算(从月初到昨天的平日数) - 如需手动输入 autoCalculateWeekdays: false 进行指定
workingDaysRemaining: 包括今天月末剩余工作日数【可选】
- 省略时自动计算(从今天到月底的平日数) - 如需手动输入 autoCalculateWeekdays: false 进行指定
currentDate评估基准日(YYYY-MM-DD格式,省略时为今日)【可选】
- 用于计算月历天数
autoCalculateWeekdays工作日数自动计算(默认:true)【可选】
- true自动计算,不含周六日 - false使用手动输入值
计算机制
- 自动计算每月法定工作时间:
(月の暦日数 ÷ 7) × 40時間
- 例:30天 → 171.4小时
- 自动计算加班时间:
総労働時間 - 法定労働時間 - 月末预测:
昨日までの累計 + (残り日数 × 1日平均労働時間)
- 日平均 = 截至昨日的累计 ÷ 已过天数
输出示例
{
"evaluation45": {
"limit": 45,
"totalWorkHoursToDate": 150.5,
"projectedTotalWorkHours": 230.7,
"projectedOvertimeHours": 53.3,
"remainingToLimit": -8.3,
"riskLevel": "LIMIT",
"recoveryOptions": [
{
"paidLeaveDays": 0,
"maxDailyWorkHours": 9.56,
"description": "年休なし:残り8日間、1日あたり9.56時間以内"
},
{
"paidLeaveDays": 1,
"maxDailyWorkHours": 10.34,
"description": "年休1日取得:残り7日間、1日あたり10.34時間以内"
},
{
"paidLeaveDays": 2,
"maxDailyWorkHours": 11.42,
"description": "年休2日取得:残り6日間、1日あたり11.42時間以内"
}
]
},
"evaluation80": {
"limit": 80,
"totalWorkHoursToDate": 150.5,
"projectedTotalWorkHours": 230.7,
"projectedOvertimeHours": 61.3,
"remainingToLimit": 18.7,
"riskLevel": "OK",
"recoveryOptions": [
{
"paidLeaveDays": 0,
"maxDailyWorkHours": 12.94,
"description": "年休なし:残り8日間、1日あたり12.94時間以内"
}
]
},
"references": {
"appliedRules": [
"月45時間上限(時間外のみ)",
"80時間基準(休日労働含む、簡易単月評価)",
"月の法定労働時間: 171.4時間(30日の月)"
]
}
}输出项说明
各项评估(evaluation45, evaluation80)包括以下内容:
limit上限值(45或80)totalWorkHoursToDate截至昨日的总工作时间(输入值原样)projectedTotalWorkHours月末预测的总工时projectedOvertimeHours月末预测的加班(或加班+节假日)remainingToLimit距离上限剩余时间(为负数则预计已超)riskLevel风险等级
- OK绰绰有余 - WARN达到上限的80%以上 - LIMIT存在超过上限的风险
recoveryOptions多个恢复选项(排列)
- paidLeaveDays年假取得天数 - maxDailyWorkHours剩余期限内每日最高总工作时间 - description通俗易懂的说明文
重要由于对应弹性工作制,不计算“当前非工作时间”。仅基于预测进行评估。
执行图像
Claude Desktop的对话示例:
ユーザー: 昨日までの総労働時間が150.5時間、休日労働が8時間です。
15日働いて、今日含めて残り8日です。上限チェックしてください。
Claude: check36.assess_current_month を実行します...
【結果】
■ 月45時間上限(時間外のみ)
- 昨日までの総労働時間: 150.5時間
- 月末予測の総労働時間: 230.7時間
- 月末予測の時間外労働: 53.3時間
- 45hまでの残り: -8.3時間(超過見込み)⚠️ LIMIT
超えないための選択肢:
① 年休なし:残り8日間、1日あたり9.56時間以内
② 年休1日取得:残り7日間、1日あたり10.34時間以内
③ 年休2日取得:残り6日間、1日あたり11.42時間以内
■ 80時間基準(休日労働含む)
- 昨日までの総労働時間: 150.5時間
- 月末予測の総労働時間: 230.7時間
- 月末予測の時間外+休日: 61.3時間
- 80hまでの残り: 18.7時間(余裕あり)✅ OK
超えないための選択肢:
① 年休なし:残り8日間、1日あたり12.94時間以内
【アドバイス】
このペースだと月45時間(時間外)を超過する見込みです。
年休を1〜2日取得するか、残り期間の労働時間を1日9.56時間以内に抑えることをお勧めします。
(フレックス制度を活用して、1日の労働時間を柔軟に調整できます)设置
必要条件
- Python 3.10及以上版本
- pip 或 uv
安装
# リポジトリをクローン
git clone https://github.com/YasuYasuonFire/check_36.git
cd check_36
# 依存関係をインストール(開発用含む)
pip install -e ".[dev]"
# または venv を使用
python -m venv .venv
source .venv/bin/activate # Windowsの場合: .venv\Scripts\activate
pip install -e ".[dev]"执行测试
# 全テスト実行
pytest
# 詳細表示
pytest -v
# カバレッジ付き
pytest --cov=src/check36启动MCP服务器
# サーバー起動
python -m src.check36.server
# または
python src/check36/server.pyClaude Desktop的使用方法
1. 克隆仓库
首先,克隆此存储库并确认路径:
# リポジトリをクローン
git clone https://github.com/YasuYasuonFire/check_36.git
cd check_36
# 現在のパスを確認(このパスを後で使います)
pwd
# 例: /Users/username/projects/check_362. 添加到MCP配置文件
~/Library/Application Support/Claude/claude_desktop_config.json 进行编辑。
⚠️ 重要注意事项:
cwd在……方面上述确认的实际路径请指定command请根据您所使用的Python环境进行相应更改
模式1:使用系统自带的Python时
{
"mcpServers": {
"check36": {
"command": "python3",
"args": ["-m", "check36.server"],
"cwd": "/Users/username/projects/check_36"
}
}
}模式2:使用pyenv的情况
{
"mcpServers": {
"check36": {
"command": "/Users/username/.pyenv/shims/python",
"args": ["-m", "check36.server"],
"cwd": "/Users/username/projects/check_36"
}
}
}确认pyenv路径的方法:
which python
# 例: /Users/username/.pyenv/shims/python模式3:使用venv(虚拟环境)的情况
{
"mcpServers": {
"check36": {
"command": "/Users/username/projects/check_36/.venv/bin/python",
"args": ["-m", "check36.server"],
"cwd": "/Users/username/projects/check_36"
}
}
}创建venv时:
cd /Users/username/projects/check_36
python3 -m venv .venv
source .venv/bin/activate
pip install -e .模式4:使用uv(推荐)
{
"mcpServers": {
"check36": {
"command": "uv",
"args": ["run", "--directory", "/Users/username/projects/check_36", "python", "-m", "check36.server"],
"cwd": "/Users/username/projects/check_36"
}
}
}使用紫外线时的准备:
# uvのインストール(未インストールの場合)
curl -LsSf https://astral.sh/uv/install.sh | sh
# プロジェクトディレクトリで依存関係をインストール
cd /Users/username/projects/check_36
uv sync3. 设置确认要点
✅ 务必确认:
cwd该路径是否与实际的克隆目标一致command确认Python路径是否正确(which python(以确认)- JSON格式是否正确(如逗号、括号是否遗漏等)
- 如果已设置其他MCP服务器,请用逗号分隔
设置多个MCP服务器的示例:
{
"mcpServers": {
"other-server": {
"command": "...",
"args": ["..."]
},
"check36": {
"command": "python3",
"args": ["-m", "check36.server"],
"cwd": "/Users/username/projects/check_36"
}
}
}4. 重启Claude Desktop
请完全退出Claude Desktop应用程序并重新启动。
5. 使用示例
像这样对克劳德说话:
今月の総労働時間が150.5時間、休日労働が8時間です。
15日働いて、今日含めて残り8日です。上限チェックしてください。Claude自动地 assess_current_month_tool 调用并显示结果。
文件
- docs/requirements/README.md: 文档目录
- docs/requirements/01_legal_baseline.md:法律上限·术语定义
- docs/requirements/02_functional_requirements.md: 功能需求
- docs/requirements/03_nonfunctional_requirements.md: 非功能性需求
- docs/requirements/04_mcp_interface_spec.md: MCP接口规范
- docs/requirements/05_data_model.md:数据模型与输入模板
- docs/requirements/06_risks_constraints.md: 风险与限制
- schemas/: 输入输出模式
- templates/: 输入模板示例
- IMPLEMENTATION_PLAN.md: 实施计划
开发
项目构成
check_36/
├── src/check36/
│ ├── __init__.py
│ ├── server.py # MCPサーバーエントリポイント
│ ├── models.py # Pydanticモデル
│ ├── calculator.py # コア計算ロジック
│ └── utils.py # ユーティリティ関数
├── tests/
│ └── test_calculator.py
├── pyproject.toml
└── README.md代码质量检查
# 型チェック
mypy src/check36
# リンター
ruff check src/check36
# フォーマット
ruff format src/check36