@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 CHANGED
@@ -1,92 +1,80 @@
1
1
  # @him0/freee-mcp
2
2
 
3
- freee APIをModel Context Protocol (MCP)サーバーとして提供する実装です。OpenAPI定義を使用して、freee APIのエンドポイントを自動的にMCPツールとして公開します。
3
+ freee API Claude から使えるようにする MCP サーバー & Claude Plugin です。
4
4
 
5
- ⚠️ **注意**: このプロジェクトは開発中であり、予期せぬ不具合が発生する可能性があります。問題を発見された場合は、Issueとして報告していただけると幸いです。また、改善のためのプルリクエストも歓迎しています。
5
+ MCP サーバー(API 呼び出し機能)と skill(API リファレンス)を組み合わせて利用することを想定しています。
6
6
 
7
- ## 概要
7
+ [![npm version](https://badge.fury.io/js/@him0%2Ffreee-mcp.svg)](https://www.npmjs.com/package/@him0/freee-mcp)
8
8
 
9
- このプロジェクトは以下の機能を提供します:
9
+ > **Note**: このプロジェクトは開発中であり、予期せぬ不具合が発生する可能性があります。問題を発見された場合は [Issue](https://github.com/him0/freee-mcp/issues) として報告していただけると幸いです。プルリクエストも歓迎しています。
10
10
 
11
- - freee APIのエンドポイントをMCPツールとして自動公開
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
- - Node.js v22+
19
+ ## クイックスタート
22
20
 
23
- ## インストール
21
+ ### 1. freee アプリケーションの登録
24
22
 
25
- ```bash
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
- npm install @him0/freee-mcp
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
- **`freee-mcp configure` コマンドで対話式セットアップ**を行うことを推奨します:
37
+ ### 3. Claude Desktop に追加
42
38
 
43
- 1. **freee側でのアプリケーション登録**:
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
- 2. **対話式セットアップの実行**:
52
- ```bash
53
- npx @him0/freee-mcp configure
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
- - OAuth認証情報(Client ID, Client Secret)の入力
58
- - ブラウザでのOAuth認証
59
- - 事業所一覧の取得とデフォルト事業所の選択
60
- - 設定ファイル(`~/.config/freee-mcp/config.json`)への保存
61
- - Claude desktop用の設定スニペット表示
62
-
63
- 3. **Claude desktop設定**:
64
- configure コマンドが表示する設定をコピーして、Claude desktopの設定ファイルに追加してください。
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
- FREEE_CLIENT_ID=your_client_id # freeeアプリの Client ID
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
- 環境変数を使用している場合、起動時に非推奨の警告が表示されます。`freee-mcp configure` で設定ファイルに移行してください。
78
-
79
- ### 認証の仕組み
66
+ ### 含まれるリファレンス
80
67
 
81
- 1. **永続コールバックサーバー**: MCPサーバー起動時に指定ポート(デフォルト54321)でOAuthコールバック受付サーバーが起動します
82
- 2. **認証フロー**: `freee_authenticate` ツール実行時にブラウザで認証ページが開き、認証後にコールバックを受信します
83
- 3. **トークン保存**: 認証後、トークンは `~/.config/freee-mcp/tokens.json` にユーザーベースで安全に保存されます(ファイル権限600)
84
- 4. **自動更新**: アクセストークンの有効期限が切れた場合、リフレッシュトークンを使用して自動的に更新されます
85
- 5. **タイムアウト**: 認証リクエストは5分でタイムアウトします
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
- ```bash
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
- `freee-mcp configure` を実行後、以下の設定を Claude desktop の設定ファイルに追加してください:
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
- ```json
127
- {
128
- "mcpServers": {
129
- "freee": {
130
- "command": "npx",
131
- "args": ["@him0/freee-mcp"]
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
- 認証情報は `~/.config/freee-mcp/config.json` から自動的に読み込まれるため、環境変数の設定は不要です。
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 dev
189
-
190
- # ビルド
191
- pnpm build
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
- - **`freee_api_patch`**: PATCHリクエスト(部分更新)
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
- - TypeScript
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://github.com/modelcontextprotocol)
152
+ - [Model Context Protocol](https://modelcontextprotocol.io)