@him0/freee-mcp 0.2.7 → 0.3.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/README.md +85 -257
- package/bin/cli.js +412 -2456
- package/dist/index.cjs +413 -2457
- package/dist/index.esm.js +412 -2456
- package/dist/openapi/minimal-types.d.ts +27 -0
- package/dist/openapi/schema-loader.d.ts +9 -5
- package/dist/openapi/schema.d.ts +2 -2
- package/package.json +21 -17
package/README.md
CHANGED
|
@@ -1,92 +1,80 @@
|
|
|
1
1
|
# @him0/freee-mcp
|
|
2
2
|
|
|
3
|
-
freee APIを
|
|
3
|
+
freee API を Claude から使えるようにする MCP サーバー & Claude Plugin です。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
MCP サーバー(API 呼び出し機能)と skill(API リファレンス)を組み合わせて利用することを想定しています。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[](https://www.npmjs.com/package/@him0/freee-mcp)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
> **Note**: このプロジェクトは開発中であり、予期せぬ不具合が発生する可能性があります。問題を発見された場合は [Issue](https://github.com/him0/freee-mcp/issues) として報告していただけると幸いです。プルリクエストも歓迎しています。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- OAuth 2.0 + PKCE認証による安全なAPI接続
|
|
13
|
-
- 永続コールバックサーバーによる認証フロー
|
|
14
|
-
- **複数事業所対応**: 同一ユーザーでの複数事業所への動的切り替え
|
|
15
|
-
- 自動トークン管理(保存・更新・有効期限チェック)
|
|
16
|
-
- APIリクエストの自動バリデーション(Zod使用)
|
|
17
|
-
- エラーハンドリングとレスポンス整形
|
|
11
|
+
## 特徴
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
- **MCP サーバー**: freee API を Claude Desktop / Claude Code から直接呼び出し
|
|
14
|
+
- **Claude Plugin**: 詳細な API リファレンスドキュメント付きスキルを提供
|
|
15
|
+
- **複数 API 対応**: 会計・人事労務・請求書・工数管理の4つの freee API をサポート
|
|
16
|
+
- **OAuth 2.0 + PKCE**: セキュアな認証フロー、トークン自動更新
|
|
17
|
+
- **複数事業所対応**: 事業所の動的切り替えが可能
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
## クイックスタート
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
### 1. freee アプリケーションの登録
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
npx @him0/freee-mcp
|
|
27
|
-
```
|
|
23
|
+
[freee アプリストア](https://app.secure.freee.co.jp/developers) で新しいアプリを作成:
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
- **リダイレクトURI**: `http://127.0.0.1:54321/callback`
|
|
26
|
+
- **Client ID** と **Client Secret** を取得
|
|
27
|
+
- 必要な権限にチェック
|
|
28
|
+
|
|
29
|
+
### 2. セットアップ
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
|
|
33
|
-
# または
|
|
34
|
-
pnpm add @him0/freee-mcp
|
|
32
|
+
npx @him0/freee-mcp configure
|
|
35
33
|
```
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
### 初回セットアップ(推奨)
|
|
35
|
+
対話式ウィザードが認証情報の設定、OAuth認証、事業所選択を行います。
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
### 3. Claude Desktop に追加
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
- [freee アプリストア](https://app.secure.freee.co.jp/developers) にアクセス
|
|
45
|
-
- 新しいアプリケーションを作成
|
|
46
|
-
- 以下の設定を行う:
|
|
47
|
-
- **リダイレクトURI**: `http://127.0.0.1:54321/callback` (デフォルトポート)
|
|
48
|
-
- アプリケーションの **Client ID** と **Client Secret** を取得
|
|
49
|
-
- **権限設定**: 必要な機能の 参照・更新 にチェックを入れる
|
|
39
|
+
`configure` が出力する設定を Claude Desktop の設定ファイルに追加:
|
|
50
40
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
| OS | 設定ファイルパス |
|
|
42
|
+
| ------- | ----------------------------------------------------------------- |
|
|
43
|
+
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
44
|
+
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
45
|
+
| Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
55
46
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"freee": {
|
|
51
|
+
"command": "npx",
|
|
52
|
+
"args": ["@him0/freee-mcp", "client"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
65
57
|
|
|
66
|
-
|
|
58
|
+
## Claude Plugin として使う
|
|
67
59
|
|
|
68
|
-
|
|
60
|
+
Claude Code でプラグインとしてインストールすると、API リファレンス付きのスキルが利用できます:
|
|
69
61
|
|
|
70
|
-
環境変数を使用する場合:
|
|
71
62
|
```bash
|
|
72
|
-
|
|
73
|
-
FREEE_CLIENT_SECRET=your_client_secret # freeeアプリの Client Secret
|
|
74
|
-
FREEE_CALLBACK_PORT=54321 # OAuthコールバックポート(オプション)
|
|
63
|
+
claude plugin add him0/freee-mcp
|
|
75
64
|
```
|
|
76
65
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
### 認証の仕組み
|
|
66
|
+
### 含まれるリファレンス
|
|
80
67
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
68
|
+
| API | 内容 | ファイル数 |
|
|
69
|
+
| -------- | -------------------------------------------- | ---------- |
|
|
70
|
+
| 会計 | 取引、勘定科目、取引先、請求書、経費申請など | 31 |
|
|
71
|
+
| 人事労務 | 従業員、勤怠、給与明細、年末調整など | 27 |
|
|
72
|
+
| 請求書 | 請求書、見積書、納品書 | 3 |
|
|
73
|
+
| 工数管理 | ユーザー情報 | 1 |
|
|
86
74
|
|
|
87
|
-
|
|
75
|
+
Claude との会話中に API の使い方を質問すると、これらのリファレンスを参照して正確な情報を提供します。
|
|
88
76
|
|
|
89
|
-
|
|
77
|
+
## 起動モード
|
|
90
78
|
|
|
91
79
|
freee-mcp は2つのモードで起動できます:
|
|
92
80
|
|
|
@@ -94,225 +82,65 @@ freee-mcp は2つのモードで起動できます:
|
|
|
94
82
|
# クライアントモード(推奨):HTTPメソッド別の6ツール
|
|
95
83
|
npx @him0/freee-mcp client
|
|
96
84
|
|
|
97
|
-
# API
|
|
85
|
+
# APIモード:エンドポイントごとの個別ツール(数百個)
|
|
98
86
|
npx @him0/freee-mcp api
|
|
99
87
|
# または
|
|
100
88
|
npx @him0/freee-mcp
|
|
101
89
|
```
|
|
102
90
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
npm install -g @him0/freee-mcp
|
|
108
|
-
|
|
109
|
-
# クライアントモードで起動
|
|
110
|
-
freee-mcp client
|
|
111
|
-
|
|
112
|
-
# APIモードで起動
|
|
113
|
-
freee-mcp api
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### MCPサーバーとしての登録
|
|
91
|
+
| モード | ツール数 | 特徴 | 推奨 |
|
|
92
|
+
| ------ | -------- | ---- | ---- |
|
|
93
|
+
| client | 6個 | コンテキスト使用量が少ない、任意のパスを指定可能 | ✅ |
|
|
94
|
+
| api | 数百個 | エンドポイントごとに専用ツール、コンテキスト消費大 | ❌ |
|
|
117
95
|
|
|
118
|
-
|
|
96
|
+
## 利用可能なツール
|
|
119
97
|
|
|
120
|
-
|
|
121
|
-
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
122
|
-
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
123
|
-
- Linux: `~/.config/Claude/claude_desktop_config.json`
|
|
98
|
+
### 管理ツール
|
|
124
99
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
```
|
|
100
|
+
| ツール | 説明 |
|
|
101
|
+
| ---------------------- | -------------------------- |
|
|
102
|
+
| `freee_authenticate` | OAuth 認証を実行 |
|
|
103
|
+
| `freee_auth_status` | 認証状態を確認 |
|
|
104
|
+
| `freee_set_company` | 事業所を切り替え |
|
|
105
|
+
| `freee_list_companies` | 事業所一覧を取得 |
|
|
106
|
+
| `freee_help` | 使い方ガイド |
|
|
107
|
+
| `freee_status` | 現在の状態と推奨アクション |
|
|
136
108
|
|
|
137
|
-
|
|
109
|
+
### API ツール(クライアントモード)
|
|
138
110
|
|
|
139
|
-
|
|
111
|
+
HTTPメソッドごとのシンプルなツール構成:
|
|
140
112
|
|
|
141
|
-
|
|
113
|
+
| ツール | 説明 | 例 |
|
|
114
|
+
| ---------------------- | ------------------ | ------------------ |
|
|
115
|
+
| `freee_api_get` | データ取得 | `/api/1/deals` |
|
|
116
|
+
| `freee_api_post` | 新規作成 | `/api/1/deals` |
|
|
117
|
+
| `freee_api_put` | 更新 | `/api/1/deals/123` |
|
|
118
|
+
| `freee_api_delete` | 削除 | `/api/1/deals/123` |
|
|
119
|
+
| `freee_api_patch` | 部分更新 | `/api/1/deals/123` |
|
|
120
|
+
| `freee_api_list_paths` | エンドポイント一覧 | - |
|
|
142
121
|
|
|
143
|
-
|
|
144
|
-
```json
|
|
145
|
-
{
|
|
146
|
-
"mcpServers": {
|
|
147
|
-
"freee": {
|
|
148
|
-
"command": "npx",
|
|
149
|
-
"args": ["@him0/freee-mcp", "client"],
|
|
150
|
-
"env": {
|
|
151
|
-
"FREEE_CLIENT_ID": "your_client_id",
|
|
152
|
-
"FREEE_CLIENT_SECRET": "your_client_secret",
|
|
153
|
-
"FREEE_COMPANY_ID": "your_company_id",
|
|
154
|
-
"FREEE_CALLBACK_PORT": "54321"
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
**APIモード(個別ツール)**:
|
|
162
|
-
```json
|
|
163
|
-
{
|
|
164
|
-
"mcpServers": {
|
|
165
|
-
"freee": {
|
|
166
|
-
"command": "npx",
|
|
167
|
-
"args": ["@him0/freee-mcp", "api"],
|
|
168
|
-
"env": {
|
|
169
|
-
"FREEE_CLIENT_ID": "your_client_id",
|
|
170
|
-
"FREEE_CLIENT_SECRET": "your_client_secret",
|
|
171
|
-
"FREEE_CALLBACK_PORT": "54321"
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
122
|
+
パスは OpenAPI スキーマに対して自動検証されます。
|
|
177
123
|
|
|
178
124
|
## 開発者向け
|
|
179
125
|
|
|
180
|
-
開発に参加する場合は、以下のようにソースからビルドできます:
|
|
181
|
-
|
|
182
126
|
```bash
|
|
183
127
|
git clone https://github.com/him0/freee-mcp.git
|
|
184
128
|
cd freee-mcp
|
|
185
129
|
pnpm install
|
|
186
130
|
|
|
187
|
-
#
|
|
188
|
-
pnpm
|
|
189
|
-
|
|
190
|
-
#
|
|
191
|
-
pnpm
|
|
192
|
-
|
|
193
|
-
# 型チェック
|
|
194
|
-
pnpm type-check
|
|
195
|
-
|
|
196
|
-
# リント
|
|
197
|
-
pnpm lint
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## 利用可能なツール
|
|
201
|
-
|
|
202
|
-
### 主要なMCPツール
|
|
203
|
-
|
|
204
|
-
- **認証管理**: `freee_authenticate`, `freee_auth_status`, `freee_clear_auth`, `freee_current_user`
|
|
205
|
-
- **事業所管理**: `freee_set_company`, `freee_get_current_company`, `freee_list_companies`
|
|
206
|
-
- **ガイダンス**: `freee_help`, `freee_getting_started`, `freee_status`
|
|
207
|
-
|
|
208
|
-
### freee APIツール
|
|
209
|
-
|
|
210
|
-
#### APIクライアントモード(推奨)
|
|
211
|
-
|
|
212
|
-
`freee-mcp client` で起動すると、HTTPメソッドごとのサブコマンドツールでAPIにアクセスできます。この方式はコンテキストウィンドウを節約し、大規模言語モデルとの親和性が高いです。
|
|
213
|
-
|
|
214
|
-
APIクライアントモードでは、以下の6つのツールが利用可能です:
|
|
215
|
-
|
|
216
|
-
- **`freee_api_get`**: GETリクエスト(データ取得)
|
|
217
|
-
- パラメータ:
|
|
218
|
-
- `path`: APIパス(例: `/api/1/deals`, `/api/1/deals/123`)
|
|
219
|
-
- `query`: クエリパラメータ(オプション)
|
|
220
|
-
|
|
221
|
-
- **`freee_api_post`**: POSTリクエスト(新規作成)
|
|
222
|
-
- パラメータ:
|
|
223
|
-
- `path`: APIパス(例: `/api/1/deals`)
|
|
224
|
-
- `body`: リクエストボディ
|
|
225
|
-
- `query`: クエリパラメータ(オプション)
|
|
226
|
-
|
|
227
|
-
- **`freee_api_put`**: PUTリクエスト(更新)
|
|
228
|
-
- パラメータ:
|
|
229
|
-
- `path`: APIパス(例: `/api/1/deals/123`)
|
|
230
|
-
- `body`: リクエストボディ
|
|
231
|
-
- `query`: クエリパラメータ(オプション)
|
|
232
|
-
|
|
233
|
-
- **`freee_api_delete`**: DELETEリクエスト(削除)
|
|
234
|
-
- パラメータ:
|
|
235
|
-
- `path`: APIパス(例: `/api/1/deals/123`)
|
|
236
|
-
- `query`: クエリパラメータ(オプション)
|
|
131
|
+
pnpm dev # 開発サーバー(ウォッチモード)
|
|
132
|
+
pnpm build # ビルド
|
|
133
|
+
pnpm type-check # 型チェック
|
|
134
|
+
pnpm lint # リント
|
|
135
|
+
pnpm test:run # テスト
|
|
237
136
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
- `path`: APIパス(例: `/api/1/deals/123`)
|
|
241
|
-
- `body`: リクエストボディ
|
|
242
|
-
- `query`: クエリパラメータ(オプション)
|
|
243
|
-
|
|
244
|
-
- **`freee_api_list_paths`**: 利用可能なすべてのAPIエンドポイント一覧
|
|
245
|
-
|
|
246
|
-
すべてのツールでパスはOpenAPIスキーマに対して自動検証されます。
|
|
247
|
-
|
|
248
|
-
使用例:
|
|
249
|
-
```json
|
|
250
|
-
// GETリクエスト
|
|
251
|
-
freee_api_get { "path": "/api/1/deals", "query": { "limit": 10 } }
|
|
252
|
-
|
|
253
|
-
// POSTリクエスト
|
|
254
|
-
freee_api_post {
|
|
255
|
-
"path": "/api/1/deals",
|
|
256
|
-
"body": { "issue_date": "2024-01-01", "type": "income", ... }
|
|
257
|
-
}
|
|
137
|
+
# API リファレンスの再生成
|
|
138
|
+
pnpm generate:references
|
|
258
139
|
```
|
|
259
140
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
`freee-mcp api`(またはデフォルト)で起動すると、freee APIのすべてのエンドポイントが個別のMCPツールとして公開されます。各ツールは以下の命名規則に従います:
|
|
263
|
-
|
|
264
|
-
- GET: `get_[resource_name]`
|
|
265
|
-
- POST: `post_[resource_name]`
|
|
266
|
-
- PUT: `put_[resource_name]_by_id`
|
|
267
|
-
- DELETE: `delete_[resource_name]_by_id`
|
|
268
|
-
|
|
269
|
-
**注意**: 個別ツールモードでは多数のツールが生成されるため、LLMのコンテキストウィンドウを圧迫する可能性があります。大規模なAPIを扱う場合はクライアントモードの使用を推奨します。
|
|
270
|
-
|
|
271
|
-
#### モード比較
|
|
272
|
-
|
|
273
|
-
| 項目 | クライアントモード | 個別ツールモード |
|
|
274
|
-
|------|-------------------|-----------------|
|
|
275
|
-
| ツール数 | 6個(GET/POST/PUT/DELETE/PATCH + list_paths) | 数百個(各エンドポイントごと) |
|
|
276
|
-
| コンテキスト使用量 | 低 | 高 |
|
|
277
|
-
| 柔軟性 | 高(任意のパスを指定可能) | 中(定義済みエンドポイントのみ) |
|
|
278
|
-
| パス検証 | あり(OpenAPIスキーマ) | あり(型定義) |
|
|
279
|
-
| 推奨用途 | 大規模API、探索的利用 | 特定エンドポイントの頻繁な利用 |
|
|
280
|
-
|
|
281
|
-
## 使い方
|
|
282
|
-
|
|
283
|
-
### 初回セットアップ
|
|
284
|
-
|
|
285
|
-
```bash
|
|
286
|
-
# 1. 使い方ガイドを確認
|
|
287
|
-
freee_help
|
|
288
|
-
|
|
289
|
-
# 2. 初回セットアップガイド
|
|
290
|
-
freee_getting_started
|
|
291
|
-
|
|
292
|
-
# 3. 現在の状態確認
|
|
293
|
-
freee_status
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### 基本的なワークフロー
|
|
297
|
-
|
|
298
|
-
1. **事業所設定**: `freee_set_company [事業所ID]`
|
|
299
|
-
2. **認証**: `freee_authenticate`
|
|
300
|
-
3. **API使用**: `get_deals`, `freee_current_user` など
|
|
301
|
-
|
|
302
|
-
詳細な使用方法、事業所切り替え、トラブルシューティングについては、MCPツール内のガイダンス機能をご利用ください:
|
|
303
|
-
|
|
304
|
-
- `freee_help` - 全体的な使い方とワークフロー
|
|
305
|
-
- `freee_getting_started` - 初回セットアップの詳細ガイド
|
|
306
|
-
- `freee_status` - 現在の状態と推奨アクション
|
|
307
|
-
|
|
308
|
-
## 技術スタック
|
|
141
|
+
### 技術スタック
|
|
309
142
|
|
|
310
|
-
|
|
311
|
-
- Model Context Protocol SDK
|
|
312
|
-
- OAuth 2.0 + PKCE認証
|
|
313
|
-
- Zod(バリデーション)
|
|
314
|
-
- esbuild(ビルド)
|
|
315
|
-
- Node.js HTTP server(OAuth コールバック)
|
|
143
|
+
TypeScript / Model Context Protocol SDK / OAuth 2.0 + PKCE / Zod / esbuild
|
|
316
144
|
|
|
317
145
|
## ライセンス
|
|
318
146
|
|
|
@@ -321,4 +149,4 @@ ISC
|
|
|
321
149
|
## 関連リンク
|
|
322
150
|
|
|
323
151
|
- [freee API ドキュメント](https://developer.freee.co.jp/docs)
|
|
324
|
-
- [Model Context Protocol](https://
|
|
152
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|