kintai-plus-mcp 0.0.0-stage → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +239 -2
- package/dist/cli.mjs +3826 -0
- package/package.json +59 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 atzzCokeK
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,240 @@
|
|
|
1
|
-
#
|
|
1
|
+
# kintai-plus-mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **非公式** の MCP サーバーです。株式会社マネーフォワードとは関係がなく、同社による確認・保証は受けていません。
|
|
4
|
+
> 「マネーフォワード クラウド勤怠Plus」「AKASHI」などの名称・商標は、それぞれの権利者に帰属します。
|
|
5
|
+
|
|
6
|
+
[マネーフォワード クラウド勤怠Plus](https://biz.moneyforward.com/attendance-plus/)(旧 AKASHI)の公開 API を、Claude などの AI アシスタントから使えるようにする [Model Context Protocol](https://modelcontextprotocol.io) サーバーです。
|
|
7
|
+
|
|
8
|
+
「出勤して」「今月の残業はどれくらい?」「昨日の工数を設計 2 時間・実装 5 時間で入れて」のように話しかけるだけで、打刻・勤務実績の確認・工数入力ができます。
|
|
9
|
+
|
|
10
|
+
- 手元の PC で動くローカルの stdio サーバーです(トークンを第三者のサーバーに預けません)
|
|
11
|
+
- トークンは OS のキーチェーンに保存し、有効期限が近づくと自動で再発行します(環境変数で渡したトークンは、明示しない限り保存も再発行もしません)
|
|
12
|
+
- 打刻の位置情報・IP アドレスは、既定では AI に渡しません
|
|
13
|
+
|
|
14
|
+
公開 API の仕様(公式): [マネーフォワード クラウド勤怠Plus 公開API 仕様](https://akashi.zendesk.com/hc/ja/articles/115000475854)
|
|
15
|
+
|
|
16
|
+
> v0.1 は開発中です。主要な応答の形は実環境で確認済みです。まだ未確認の点は [docs/api-notes.md](./docs/api-notes.md) の「未確認事項」にあります。
|
|
17
|
+
|
|
18
|
+
## できること
|
|
19
|
+
|
|
20
|
+
| ツール | 内容 |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `get_my_profile` | 自分の従業員情報と権限 |
|
|
23
|
+
| `get_today_status` | 今日の状況(未出勤/勤務中/休憩中/退勤済み)と、ここまでの勤務時間 |
|
|
24
|
+
| `punch` 【書き込み】 | 打刻(出勤・退勤・直行・直帰・休憩入・休憩戻、テレワーク) |
|
|
25
|
+
| `get_stamps` | 打刻履歴(長い期間は自動で分割) |
|
|
26
|
+
| `get_working_records` | 勤務実績(労働区分・時刻・実働・休憩。31 日ごとに自動で分割) |
|
|
27
|
+
| `summarize_working_hours` | 実働合計・出勤日数・休日出勤日数・法定時間外の目安(月ごとの内訳つき) |
|
|
28
|
+
| `get_alerts` | アラート(打刻忘れ、遅刻、36協定 など) |
|
|
29
|
+
| `check_attendance_issues` | 打刻漏れチェック(退勤・出勤・休憩戻の打刻忘れ、12 時間超の日、勤務間インターバル 11 時間未満、休日出勤)。勤務実績にその時刻がある日は打刻漏れにしない。休憩が不明な経過時間は、12 時間超を情報にとどめる |
|
|
30
|
+
| `list_projects` / `list_tasks` / `get_my_projects` | プロジェクトとタスク |
|
|
31
|
+
| `get_manhours` | 工数(プロジェクト名・タスク名つき) |
|
|
32
|
+
| `save_manhours` 【書き込み】 / `delete_manhours` 【書き込み】 | 工数の登録・更新・削除 |
|
|
33
|
+
|
|
34
|
+
管理者(企業管理者・一般管理者)には、次のツールも表示されます。一般の従業員には表示されません。
|
|
35
|
+
|
|
36
|
+
| ツール | 内容 |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `list_staff` | 管理下の従業員の一覧(ID・氏名・社員番号・所属のみ) |
|
|
39
|
+
| `get_team_stamps` | 管理下の従業員の 1 日分の打刻と状況 |
|
|
40
|
+
| `get_working_statuses` | 勤務処理(欠勤・出張など) |
|
|
41
|
+
| `get_project_members` | プロジェクトのメンバー |
|
|
42
|
+
| `find_overtime_risks` | 残業リスク検出(今月の法定時間外の目安と月末の着地予測。既定のしきい値は 45 時間) |
|
|
43
|
+
|
|
44
|
+
### 定型プロンプト
|
|
45
|
+
|
|
46
|
+
対応しているクライアントでは、メニューから次のプロンプトを呼び出せます(使うツールが公開されているときだけ表示)。
|
|
47
|
+
|
|
48
|
+
| プロンプト | 内容 |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `end_of_day` | 退勤前チェック(今日の勤務と工数を確認し、入力漏れを埋めてから退勤を打刻) |
|
|
51
|
+
| `log_manhours` | 工数を入力する(日付と、やったことを渡せる) |
|
|
52
|
+
| `monthly_review` | 月の振り返り(勤務時間・残業の目安・打刻漏れ・アラート) |
|
|
53
|
+
| `team_status` | 管理者向け: チームの今日の状況と残業リスク |
|
|
54
|
+
|
|
55
|
+
## 必要なもの
|
|
56
|
+
|
|
57
|
+
- Node.js 22 以上
|
|
58
|
+
- クラウド勤怠Plus の API トークン(下の「API トークンの発行」)
|
|
59
|
+
|
|
60
|
+
## セットアップ
|
|
61
|
+
|
|
62
|
+
### 1. API トークンの発行
|
|
63
|
+
|
|
64
|
+
**管理者が行うこと**(一度だけ): 従業員設定 > 対象の従業員の「変更」 > 利用機能設定 で、「公開API利用可否」を「利用する」にします。
|
|
65
|
+
|
|
66
|
+
**本人が行うこと**: マイページ > APIトークン で発行します。トークンの有効期限は 1 ヶ月と 1 日です。`login` で登録したトークンは、登録時と、期限が近づいたときに再発行します。
|
|
67
|
+
|
|
68
|
+
> `login` で登録するトークンは、このツール専用にしてください。再発行すると、それまで使っていたトークンは使えなくなります。環境変数で渡すだけの場合は、既定では再発行しません(下の「環境変数でトークンを渡す」)。
|
|
69
|
+
|
|
70
|
+
### 2. ログイン
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
npx kintai-plus-mcp login
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
次の 3 つを聞かれます。
|
|
77
|
+
|
|
78
|
+
- **ログイン企業ID**
|
|
79
|
+
- **接続先**: ログイン後のブラウザの URL のドメイン(`atnd.ak4.jp` または `atnd-awj.ak4.jp`)
|
|
80
|
+
- **APIトークン**(入力は表示されません)
|
|
81
|
+
|
|
82
|
+
疎通を確認してから保存します。状態の確認と削除は次のとおりです。
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
npx kintai-plus-mcp status # 保存先・有効期限・権限(トークンは表示しません)
|
|
86
|
+
npx kintai-plus-mcp logout # 保存した認証情報を削除
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 3. AI クライアントへの登録
|
|
90
|
+
|
|
91
|
+
<details open>
|
|
92
|
+
<summary>Claude Desktop</summary>
|
|
93
|
+
|
|
94
|
+
`claude_desktop_config.json` に追加します。
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"kintai-plus": {
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "kintai-plus-mcp"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
</details>
|
|
107
|
+
|
|
108
|
+
<details>
|
|
109
|
+
<summary>Claude Code</summary>
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
claude mcp add kintai-plus -- npx -y kintai-plus-mcp
|
|
113
|
+
```
|
|
114
|
+
</details>
|
|
115
|
+
|
|
116
|
+
<details>
|
|
117
|
+
<summary>Cursor</summary>
|
|
118
|
+
|
|
119
|
+
`~/.cursor/mcp.json`(またはプロジェクトの `.cursor/mcp.json`):
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"mcpServers": {
|
|
124
|
+
"kintai-plus": {
|
|
125
|
+
"command": "npx",
|
|
126
|
+
"args": ["-y", "kintai-plus-mcp"]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
</details>
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary>VS Code(GitHub Copilot)</summary>
|
|
135
|
+
|
|
136
|
+
`.vscode/mcp.json`:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"servers": {
|
|
141
|
+
"kintai-plus": {
|
|
142
|
+
"type": "stdio",
|
|
143
|
+
"command": "npx",
|
|
144
|
+
"args": ["-y", "kintai-plus-mcp"]
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
</details>
|
|
150
|
+
|
|
151
|
+
<details>
|
|
152
|
+
<summary>Codex CLI</summary>
|
|
153
|
+
|
|
154
|
+
`~/.codex/config.toml`:
|
|
155
|
+
|
|
156
|
+
```toml
|
|
157
|
+
[mcp_servers.kintai-plus]
|
|
158
|
+
command = "npx"
|
|
159
|
+
args = ["-y", "kintai-plus-mcp"]
|
|
160
|
+
```
|
|
161
|
+
</details>
|
|
162
|
+
|
|
163
|
+
## 設定(環境変数)
|
|
164
|
+
|
|
165
|
+
| 変数 | 既定 | 内容 |
|
|
166
|
+
|---|---|---|
|
|
167
|
+
| `KINTAI_PLUS_READ_ONLY` | `false` | `true` で書き込みツール(打刻・工数)を出さない |
|
|
168
|
+
| `KINTAI_PLUS_CONFIRM_WRITES` | `false` | `true` で書き込みの前に確認ダイアログを出す(Elicitation に対応したクライアントのみ。未対応のクライアントでは書き込みが失敗します)。旧名の `CONFIRM_WRITES` も当面は読みます |
|
|
169
|
+
| `KINTAI_PLUS_INCLUDE_LOCATION` | `false` | `true` で打刻の位置情報・IP を返す |
|
|
170
|
+
| `KINTAI_PLUS_REFRESH_DAYS` | `15` | 有効期限の残りがこの日数を切ったら再発行する(1〜30) |
|
|
171
|
+
| `KINTAI_PLUS_AUTO_REFRESH` | `true` | `false` で自動の再発行を止める |
|
|
172
|
+
| `KINTAI_PLUS_PERSIST_ENV_TOKEN` | `false` | `true` で、環境変数のトークンを保存し、期限が不明なら再発行する。環境変数の値は使えなくなることがある |
|
|
173
|
+
| `KINTAI_PLUS_CREDENTIAL_STORE` | `auto` | 保存先: `auto`(キーチェーン → ファイル)/ `keychain` / `file` |
|
|
174
|
+
| `KINTAI_PLUS_CREDENTIALS_FILE` | `~/.config/kintai-plus-mcp/credentials.json` | ファイル保存のパス(指定するとファイル保存になる) |
|
|
175
|
+
| `KINTAI_PLUS_LOG_LEVEL` | `info` | `debug` / `info` / `warn` / `error` / `silent`(ログは stderr のみ) |
|
|
176
|
+
| `KINTAI_PLUS_MIN_INTERVAL_MS` | `300` | API リクエストの最小間隔(ミリ秒) |
|
|
177
|
+
|
|
178
|
+
### 環境変数でトークンを渡す(ボットなど)
|
|
179
|
+
|
|
180
|
+
`login` が使えないときは、環境変数だけで起動できます。**既定では保存せず、再発行 API も呼びません。**
|
|
181
|
+
|
|
182
|
+
```sh
|
|
183
|
+
KINTAI_PLUS_TOKEN=... KINTAI_PLUS_COMPANY_ID=... KINTAI_PLUS_HOST=atnd.ak4.jp npx kintai-plus-mcp
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
再発行 API は、渡したトークンを無効にして新しいトークンを返します。環境変数の値を自動で再発行すると、その値を共有している他のプロセスが突然使えなくなります。このサーバーは、明示しない限りそれをしません。
|
|
187
|
+
|
|
188
|
+
自動更新(期限が近づいたら再発行して保存)が必要なときは、このサーバー専用のトークンを `npx kintai-plus-mcp login` で登録してください。キーチェーンが使えない環境では、本人だけが読み書きできるファイル(パーミッション 600)に保存します。
|
|
189
|
+
|
|
190
|
+
環境変数のトークンを保存して再発行する動作は、`KINTAI_PLUS_PERSIST_ENV_TOKEN=true` を付けたときだけです。有効にすると、環境変数に書いたトークンは使えなくなることがあります。保存先にすでに認証情報があるときは、環境変数より保存先を優先します。
|
|
191
|
+
|
|
192
|
+
## 制約
|
|
193
|
+
|
|
194
|
+
- **申請(残業・休暇・打刻修正など)とスケジュールには対応していません**(公開 API にないため)
|
|
195
|
+
- **打刻はサーバーに届いた時刻で記録され、API からは修正・削除できません。** 間違えた場合は Web 画面から申請してください。このため、その日の打刻と矛盾する打刻(出勤済みなのに出勤、など)は実行しません。どうしても必要なときは AI に「強制して」と伝えてください(`force`)
|
|
196
|
+
- 残業時間は API にないため、「法定時間外の目安」(労働日・所定休日は 1 日 8 時間超、法定休日は全時間)として計算します。週 40 時間・変形労働時間制・フレックスは考慮しません。正式な値は勤怠Plus や給与計算で確認してください
|
|
197
|
+
- API の制約(勤務実績は 31 日、打刻は 6 ヶ月・1000 件、従業員一覧は 20 人/ページ、複数従業員の打刻は 1 日・50 人)は、サーバー側で分割・ページ送りします。1 回の呼び出しで取得できる期間には上限があります
|
|
198
|
+
- タイムゾーンは日本時間(Asia/Tokyo)固定です
|
|
199
|
+
- 人事マスタの書き込み(従業員の登録・削除、権限、異動など)は扱いません
|
|
200
|
+
|
|
201
|
+
## セキュリティとプライバシー
|
|
202
|
+
|
|
203
|
+
- トークンは OS のキーチェーン(macOS キーチェーン、Windows 資格情報マネージャー、Linux の Secret Service)に保存します。Linux で Secret Service がない場合は、再起動で消えるカーネルのキーリングではなく、ファイル(600)に保存します
|
|
204
|
+
- トークンは URL に載る API 仕様のため、ログ・エラーメッセージから必ず取り除きます
|
|
205
|
+
- 打刻の位置情報・IP は既定で AI に渡しません。従業員情報も ID・氏名・社員番号・所属に絞ります(メールアドレスは渡しません)
|
|
206
|
+
- `logout` は手元の認証情報を削除するだけです。トークン自体を無効にするには、マイページで操作してください
|
|
207
|
+
|
|
208
|
+
## 開発
|
|
209
|
+
|
|
210
|
+
```sh
|
|
211
|
+
pnpm install
|
|
212
|
+
pnpm test # Vitest(モックと架空のフィクスチャのみ)
|
|
213
|
+
pnpm lint # Biome
|
|
214
|
+
pnpm typecheck
|
|
215
|
+
pnpm build # tsdown
|
|
216
|
+
pnpm e2e # 実環境を叩く手動 E2E(読み取りのみ。手元でだけ実行)
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
設計の決定事項は [docs/design.md](./docs/design.md)、背景は [docs/adr/](./docs/adr/) にあります。
|
|
220
|
+
|
|
221
|
+
## ライセンス
|
|
222
|
+
|
|
223
|
+
[MIT](./LICENSE)
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## English
|
|
228
|
+
|
|
229
|
+
**Unofficial** MCP server for the public API of "Money Forward Cloud Kintai Plus" (formerly AKASHI), a Japanese attendance management service.
|
|
230
|
+
This project is not affiliated with, endorsed by, or sponsored by Money Forward, Inc. All trademarks belong to their respective owners.
|
|
231
|
+
|
|
232
|
+
- Punch in/out, check today's status, view punch history, working records, alerts, and man-hours, and record man-hours
|
|
233
|
+
- Admin tools (staff list, team punches, working statuses, project members) are shown only to admins
|
|
234
|
+
- Runs locally over stdio: `npx kintai-plus-mcp`. Register your token first with `npx kintai-plus-mcp login`
|
|
235
|
+
- The token is stored in the OS keychain (or a 600-permission file) and reissued automatically before it expires. A token passed only via `KINTAI_PLUS_TOKEN` is not stored or reissued unless `KINTAI_PLUS_PERSIST_ENV_TOKEN=true` (reissue invalidates the previous token)
|
|
236
|
+
- Location and IP address of punches are not sent to the AI by default
|
|
237
|
+
- Not supported: requests (申請) and schedules, because the public API does not provide them. Punches are recorded at the time the server receives them and cannot be edited via the API
|
|
238
|
+
- Requires Node.js 22+ and an API token issued from your Kintai Plus "My Page" (an admin must enable "公開API利用可否" for you)
|
|
239
|
+
- Official API reference (Japanese): https://akashi.zendesk.com/hc/ja/articles/115000475854
|
|
240
|
+
- License: MIT
|