freee-mcpBLOCK
Model Context Protocol (MCP) server for freee API integration
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
freee会計、人事労務、請求書、工数管理、販売、IT管理、固定資産、業務委託管理、サーベイ、開業、人事評価、申告、サイン(電子契約)を AI Agent から操作できるようにする freee 公式の MCP サーバーと Agent Skills です。
- MCP サーバー: freee API の呼び出し・認証・リクエスト検証を担当
- Agent Skills: API リファレンスと操作レシピを AI Agent のコンテキストに注入し、正確な API 利用をガイド
[](https://www.npmjs.com/package/freee-mcp)
特徴
- 複数 API 対応: 会計・人事労務・請求書・工数管理・販売・IT管理・固定資産・業務委託管理・サーベイ・開業・人事評価・申告の12個の freee API をサポート
- 対応操作数: 547 操作(サイン(電子契約)含む、
scripts/generate-references.tsが自動更新) - 利用条件: サーベイ・開業・人事評価・申告は、対応する接続環境、OAuth クライアント、契約プラン、利用者権限が必要
- サイン(電子契約)対応: freee サインの文書管理 API を専用コマンド(
freee-sign-mcp)でサポート - OAuth 2.0 + PKCE: セキュアな認証フロー、トークン自動更新
- 複数事業所対応: 事業所の動的切り替えが可能
Agent Skills と MCP の通信の流れ
Agent Skills(API リファレンス・操作レシピ)と MCP サーバー(API 呼び出し)を組み合わせて利用します。
sequenceDiagram participant User as ユーザー participant Agent as AI Agent participant Skill as Agent Skills(API リファレンス・操作レシピ) participant MCP as MCP サーバー participant API as freee API User->>Agent: リクエスト「取引一覧を取得して」 Note over Agent,Skill: 1. Agent Skills からリファレンスを取得 Agent->>Skill: freee-api-skill 呼び出し Skill-->>Agent: API リファレンス注入(エンドポイント、パラメータ仕様) Note over Agent,MCP: 2. MCP Tool で API を実行 Agent->>MCP: freee_api_get 呼び出しpath: /api/1/deals MCP->>MCP: OpenAPI スキーマで検証 MCP->>MCP: 認証トークン付与 Note over MCP,API: 3. freee API への通信 MCP->>API: GET /api/1/dealsAuthorization: Bearer xxx API-->>MCP: JSON レスポンス MCP-->>Agent: 取引データ Agent-->>User: 結果を整形して表示
この仕組みにより:
- Agent Skills: 必要な API リファレンスや操作レシピを段階的にコンテキストに注入(コンテキスト効率化)
- MCP: 認証・リクエスト検証・API 呼び出しを担当
クイックスタート
方法 1: Remote MCP で接続する(推奨)
freee が提供する Remote MCP サーバーに接続する方法です。ローカルでのセットアップが不要で、すぐに利用を開始できます。
Claude 及び Claude Desktop では「カスタマイズ」より「カスタムコネクタを追加」を開き、以下を設定してください。
- 名前:
freee - URL:
https://mcp.freee.co.jp/mcp
⚠️ freee 公式以外の URL を入力しないようにご注意ください。
<
3bb5d136c598OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add freee-mcp --env FREEE_AUTHORIZATION_ENDPOINT=${FREEE_AUTHORIZATION_ENDPOINT} --env FREEE_CLIENT_SECRET=${FREEE_CLIENT_SECRET} --env FREEE_SIGN_CLIENT_SECRET=${FREEE_SIGN_CLIENT_SECRET} --env FREEE_TOKEN_ENDPOINT=${FREEE_TOKEN_ENDPOINT} -- npx -y [email protected]{
"mcpServers": {
"freee-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"FREEE_AUTHORIZATION_ENDPOINT": "${FREEE_AUTHORIZATION_ENDPOINT}",
"FREEE_CLIENT_SECRET": "${FREEE_CLIENT_SECRET}",
"FREEE_SIGN_CLIENT_SECRET": "${FREEE_SIGN_CLIENT_SECRET}",
"FREEE_TOKEN_ENDPOINT": "${FREEE_TOKEN_ENDPOINT}"
}
}
}
}Exposed tools (5)
4 read · 0 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
sign_auth_status | read | |
sign_authenticate | read | |
sign_clear_auth | destructive | |
sign_server_info | read | |
with_body | read |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
if (hostname === '169.254.169.254' || hostname === 'metadata.google.internal') {.claude/skills
.codex/skills
console.log(` Added mapping: ${apiKey} "${tag}" -> "${englishName}"`);console.log(`Processing ${apiKey}...`);console.log(`No mappings found for ${apiKey}`);console.log(`Generated ${entries.length} files for ${apiKey}`);{ apiKey: "fixed-asset-management-api", schemaFile: join(OPENAPI_DIR, "fixed-asset-management-api-schema.json"), prefix: "fixed-asset-management", outputDir: OUTPUT_DIR },{ apiKey: "partner-management-api", schemaFile: join(OPENAPI_DIR, "partner-management-api-schema.json"), prefix: "partner-management", outputDir: OUTPUT_DIR },sign_clear_auth
.coderabbit.yaml
.prettierignore
.worktreeinclude
zip -r ../../freee-api-skill.zip .
readFileSync(new URL('../../openapi/minimal/mcponly.json', import.meta.url), 'utf-8'),path.resolve(__dirname, '../../openapi/minimal'), // development (bun)
} from '../../auth/server.js';
} from '../../config/mcp-config.js';
- コールバックURL: `http://127.0.0.1:54321/callback`
redirectUri: 'http://127.0.0.1:54321/callback',
const redirectUri = 'http://127.0.0.1:54321/callback';
'http://127.0.0.1:54321/callback',
redirect_uri: 'http://127.0.0.1:54321/callback',
@modelcontextprotocol/sdk, @opentelemetry/api, @opentelemetry/context-async-hooks, @opentelemetry/core, @opentelemetry/exporter-metrics-otlp-http, @opentelemetry/exporter-trace-otlp-http, @opentelemet
openapi/accounting-api-schema.json
Gates applied: no_behavioural_pass.
3bb5d136c598full audit observations/trust-audit/mcp-server/freee__freee-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 3bb5d136c598 | BLOCK | D | 69 | first audit |
Questions
What is the freee-mcp MCP server?
Model Context Protocol (MCP) server for freee API integration
What tools does freee-mcp expose?
5 in total: 4 read-only, 0 that write, and 1 that can delete or overwrite (sign_clear_auth). Every one is listed on this page with its risk.
Is freee-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does freee-mcp need?
It reads FREEE_AUTHORIZATION_ENDPOINT, FREEE_CLIENT_SECRET, FREEE_SIGN_CLIENT_SECRET, FREEE_TOKEN_ENDPOINT, JWT_SECRET, OPENAI_APPS_CHALLENGE_TOKEN, SIGN_AUTHORIZATION_ENDPOINT, SIGN_JWT_SECRET and SIGN_TOKEN_ENDPOINT from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does freee-mcp run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as freee-mcp at 0.36.5.
How current is this page?
The grade is for one exact copy of the source (3bb5d136c598), read on 2026-10-12. The repository is watched and re-audited when it changes.