freee-mcp-solo
# freee-mcp-solo
個人事業主・フリーランスの日常経理に特化した [freee会計](https://www.freee.co.jp/) 用 MCP (Model Context Protocol) サーバー。
Claude Code や Claude Desktop から、仕訳登録・請求書作成・月次確認をシンプルなツール呼び出しで実行できます。
## 特徴
- **ユースケース駆動** — freee API の 1:1 ラッパーではなく、「仕訳」「請求書作成」「月次確認」という実際の業務に最適化
- **名前ベースの操作** — 勘定科目・取引先・口座を名前で指定。ID への変換はサーバーが自動処理
- **設定ファイルで柔軟に** — 振込先、入金期日ルール、件名テンプレートを YAML で管理
- **全角/半角を自動正規化** — 「PayPay銀行」で「PayPay銀行(API)」にマッチ
## ツール一覧
| ツール | 用途 |
|---|---|
| `authenticate` | OAuth認証・状態確認 |
| `pending_transactions` | 未処理の口座明細を一覧表示 |
| `create_deal` | 取引(仕訳)を登録 |
| `monthly_summary` | 月次の収支を勘定科目別に集計 |
| `list_deals` | 登録済みの取引を科目・期間で絞込表示 |
| `create_invoice` | 請求書を作成(下書き) |
| `list_invoices` | 請求書の一覧を表示 |
> **注意:** `pending_transactions` が返す「未処理明細」は *未仕訳の明細ではありません*。freee は取引を登録しても口座明細の消し込み(マッチング)を自動では行わないため、**仕訳済みの明細も一覧に残り続けます**。一覧をそのまま `create_deal` でループ処理すると二重計上になります。仕訳前に `list_deals` で既存取引を確認し、突合してから登録してください。
## 前提条件
- Node.js 20 以上
- freee 会計アカウント(個人事業主プラン以上)
- freee 開発者アプリの Client ID / Client Secret([開発者ページ](https://app.secure.freee.co.jp/developers)で取得)
## セットアップ
### 1. インストール
```bash
npm install -g freee-mcp-solo
```
または、ソースからビルド:
```bash
git clone https://github.com/kogasura/freee-mcp-solo.git
cd freee-mcp-solo
npm install
npm run build
```
### 2. 設定ファイルの作成
```bash
mkdir -p ~/.config/freee-mcp-solo
cp config.example.yaml ~/.config/freee-mcp-solo/config.yaml
```
`config.yaml` に freee アプリの認証情報と振込先を設定:
```yaml
# freee API 認証情報
auth:
client_id: "your_client_id" # freee 開発者ページで取得
client_secret: "your_client_secret"
callback_port: 54321
# company_id, company_name は初回認証時に自動設定されます
# 振込先情報(請求書に記載)
payment:
bank_info: "○○銀行 △△支店 普通 1234567 カ)サンプル"
# 請求書のデフォルト設定
invoice:
tax_entry_method: exclusive # exclusive(外税) / inclusive(内税)
default_account_item: "売上高"
layout: default_classic
message: "下記の通りご請求申し上げます。"
# 取引先ごとの設定
partners:
株式会社サンプル:
due_date_rule: "+1month_end" # 翌月末
partner_title: "御中"
subject_template: "開発費_{YY}年{MM}月"
```
#### 入金期日ルール (`due_date_rule`)
| ルール | 意味 |
|---|---|
| `+1month_end` | 翌月末日 |
| `+2months_15` | 翌々月15日 |
| `+1month_20` | 翌月20日 |
| `+30days` | 30日後 |
#### 件名テンプレート (`subject_template`)
| 変数 | 展開結果 |
|---|---|
| `{YYYY}` | 4桁の年(例: 2026) |
| `{YY}` | 2桁の年(例: 26) |
| `{MM}` | 2桁の月(例: 03) |
| `{M}` | 月(例: 3) |
### 3. Claude Code / Claude Desktop に登録
`.mcp.json` に以下を追加:
```json
{
"mcpServers": {
"freee-solo": {
"type": "stdio",
"command": "freee-mcp-solo"
}
}
}
```
ソースからビルドした場合:
```json
{
"mcpServers": {
"freee-solo": {
"type": "stdio",
"command": "node",
"args": ["/path/to/freee-mcp-solo/dist/index.js"]
}
}
}
```
Claude Desktop の場合は `claude_desktop_config.json` に同様の設定を追加:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
### 4. 初回認証
Claude Code で `authenticate` ツールを実行すると、ブラウザで freee のログイン画面が開きます。ログイン・認可すると OAuth トークンが保存され、事業所情報が `config.yaml` に自動設定されます。
## 使い方
### 仕訳作業
```
ユーザー: 未処理の明細を仕訳して
Claude: pending_transactions() を実行
→ 未処理明細 5件:
#1 03/25 出金 ¥1,100 さくらインターネット
#2 03/25 出金 ¥2,200 ANTHROPIC
...
Claude: list_deals(account_item: "通信費") で既存取引と突合
→ #2 の ¥2,200 は登録済み。残り4件が未計上
Claude: 以下の仕訳でよいですか?
#1 通信費 / さくらインターネット / レンタルサーバー
...
ユーザー: ok
Claude: create_deal() x 4 を実行 → 登録完了
Claude: monthly_summary() で件数・金額が想定どおりか検算
```
### 請求書作成
```
ユーザー: 今月の請求書を30万で作って
Claude: create_invoice(
partner_name: "株式会社サンプル",
issue_date: "2026-03-31",
items: [{ description: "開発費_26年03月", qty: 1, unit_price: 300000 }]
)
→ 請求書を作成しました (ID: 12345)
請求番号: INV-0000000001
金額: ¥300,000(税抜) / ¥330,000(税込)
入金期日: 2026-04-30(自動計算)
```
### 月次確認
```
ユーザー: 今月の収支は?
Claude: monthly_summary()
→ 2026年3月 収支サマリー
収入: ¥990,000
支出: ¥234,567
差引利益: ¥755,433
```
### 内訳の確認
`monthly_summary` は科目別の合計しか返しません。内訳を見るには `list_deals` を使います。
```
ユーザー: 3月の支払手数料の中身は?
Claude: list_deals(
start_date: "2026-03-01",
end_date: "2026-03-31",
account_item: "支払手数料"
)
→ 取引一覧: 4件(2026-03-01 〜 2026-03-31/科目: 支払手数料)
#1 (id:xxx) 03-01 支出 ¥145 支払手数料 [PayPay銀行]
#2 (id:xxx) 03-09 支出 ¥145 支払手数料 [PayPay銀行]
...
表示分合計: ¥580
```
## 使用する freee API
| API | エンドポイント | 用途 |
|---|---|---|
| 会計 API | `https://api.freee.co.jp/api/1/` | 仕訳・口座明細・マスタデータ |
| 請求書 API | `https://api.freee.co.jp/iv/` | 請求書の作成・一覧 |
## ライセンス
MIT
TDQS
Scored across 7 tools
Each tool targets a distinct resource/action: authentication, unprocessed transactions, deal creation, monthly summary, deal listing, invoice creation, and invoice listing. There is no overlap or ambiguity among them.
Most tools follow a verb_noun pattern (create_deal, list_deals, create_invoice, list_invoices), but authenticate, pending_transactions, and monthly_summary deviate. The naming is still readable and consistently snake_case, so only minor deviations.
Seven tools is well within the ideal 3-15 range and covers the server's accounting scope without unnecessary bloat. Each tool serves a clear purpose.
Core create/list workflows exist for deals and invoices, but there are no update or delete operations for either entity. This is a notable gap that could leave agents unable to correct errors or manage drafts fully.