目次

  1. なぜSmartHRのエージェント連携が難しいのか
  2. MCPステータス — 公式MCPは未提供、REST APIが入口
  3. 認証 — OAuth 2.0 Authorization Codeとスコープの罠
  4. 主要エンドポイント — 従業員・書類・年末調整
  5. HRエージェント開発で詰まる7つのポイント
  6. freee人事労務・KING OF TIME・jobcanとの比較
  7. 本番投入前チェックリスト
  8. FAQ

なぜSmartHRのエージェント連携が難しいのか

SmartHRは従業員のオンボーディング、書類管理、社会保険手続き、年末調整(年末調整)までを網羅する、日本のHR SaaSの代表格だ。サンドボックス環境を備えた包括的なREST APIを公開しており、技術的には十分にエージェント連携可能なプラットフォームである。にもかかわらず、KanseiLink実測のエージェント成功率は約39%・信頼スコア0.6にとどまる(2026-05時点)

これは「APIが貧弱だから」ではない。むしろAPI自体は整理されている。問題はOAuthスコープの宣言が分かりにくく、誤ると認可エラー(auth_error)で詰まる点にある。KanseiLinkは2026-04-06に「SmartHRのOAuthスコープがドキュメント不足で auth_error 失敗を生んでいる」という観測を受け、スコープガイダンスを追記した。HRデータは個人情報の塊であり、認可設計が一段とシビアになるのも、エージェントが躓きやすい背景だ。

SmartHR API 主要諸元 (KanseiLink + SmartHR公式 2026-05時点)

39%
エージェント
成功率(実測)
0.6
信頼スコア
(connectable)
600
req/10分
(token単位)
公式MCP
(api_only)
2026年のHR×エージェント潮流

HR領域は『市場リーダーですらエージェント対応が遅れている』カテゴリの代表だ。KanseiLinkの業種横断分析では、SmartHR 39%・Salesforce 43%のように、CRM/HRはverified(成功率80%超)バッジを取れていない。一方で会計領域はfreee 90.1%・Money Forward 92.9%とverified2社を抱える。HRが遅れる構造的理由は『個人情報の取り扱いの重さ』『社会保険・年末調整など制度依存ワークフローの複雑さ』にあり、ここを丁寧に設計したエージェントが先行者利益を取れる。

MCPステータス — 公式MCPは未提供、REST APIが入口

2026年5月時点で、SmartHRに公式MCPサーバーは存在しない(KanseiLink上のmcp_statusapi_only)。これは同じHR領域のfreee人事労務が公式MCP(npx @freee/mcp-server)を提供しているのと対照的だ。SmartHRをエージェントから使うには、(1)HTTPツールでREST APIを直接叩く、(2)社内でSmartHR APIをラップしたMCPサーバーを実装する、のいずれかになる。

項目 内容
ベースURLhttps://api.smarthr.jp/v1/(実装時はv2を推奨)
認証OAuth 2.0 Authorization Code(https://api.smarthr.jp/oauth/token)
サンドボックスhttps://sandbox.smarthr.jp/(テスト従業員プリセット済み)
ページネーションカーソル方式(next_cursor)、デフォルト25件・最大100件
レート制限600 req/10分(token単位)、超過時 HTTP 429 + Retry-After
ドキュメントdeveloper.smarthr.jp/api

認証 — OAuth 2.0 Authorization Codeとスコープの罠

SmartHRの認証はOAuth 2.0 Authorization Codeフロー。手順は以下の通り。

  1. developer.smarthr.jp/apps でアプリを登録し、client_id / client_secret を取得
  2. redirect_uri を設定
  3. ユーザーを認可画面に誘導し、必要なスコープを宣言して authorization code を取得
  4. POST https://api.smarthr.jp/oauth/token で code を access_token に交換
  5. access_token(公称1時間で失効)を Bearer で送信、失効時は refresh_token で更新
GET /v1/employees HTTP/1.1
Host: api.smarthr.jp
Authorization: Bearer {access_token}
Accept: application/json

Response:
{"data":[{"id":"abc123","last_name":"田中","first_name":"太郎",
          "email":"tanaka@example.com"}],"next_cursor":"xyz789"}
⚠️ 成功率39%の主犯はスコープ宣言ミス

SmartHRのスコープは employees.read / employees.write / documents.read / documents.write などリソース×操作の組み合わせ。このスコープ宣言を誤ると、本来取得できるはずのリソースで認可エラー(auth_error)が返り、エージェントが原因を特定できずに諦める。読み取り中心のエージェントなら最初は employees.read + documents.read から始め、書き込みが必要になった段階でスコープを追加する。サンドボックスで『どのスコープでどのエンドポイントが通るか』を必ず事前検証すること。

⚠️ access_tokenは公称より早く失効する

access_tokenの有効期限は公称1時間だが、KanseiLinkに寄せられた実務知見では『ドキュメント上の24時間より早く、実際には1〜2時間で失効する』ケースが報告されている。書き込み操作の前に「最後のトークン発行から60分以上経過していたら先にリフレッシュする」プロアクティブ更新を実装すると、トランザクション途中の401を避けられる。

主要エンドポイント — 従業員・書類・年末調整

メソッド パス 用途
GET/employees従業員一覧(ページネーション)
POST/employees従業員レコードの新規作成
GET/employees/{id}従業員詳細の取得
POST/employees/bulk_importCSVによる一括登録(10件以上向け)
GET/documents社会保険・税関連書類の一覧
POST/year_end_adjustments年末調整(年末調整)ワークフロー開始
日本のHR固有の事情

従業員名は last_name / first_name の別フィールドで、日本式に姓(last_name)が先(田中 太郎)。日付フィールドはISO 8601(YYYY-MM-DD)でJST解釈。年末調整は /year_end_adjustments エンドポイント群で扱う長時間ワークフローであり、12月〜1月に処理が集中する季節性がある。エージェントは年次イベントを前提にリトライ・冪等性を設計するとよい。

HRエージェント開発で詰まる7つのポイント

❌ 1. OAuthスコープの宣言ミス

最大の失敗要因。必要なリソース×操作のスコープを正確に宣言し、サンドボックスで通ることを確認してから本番へ。

❌ 2. v1を使い続ける

v1の /employees は一部エッジケースで一貫性のない結果を返す報告があり、v2で修正済み。2026-02-18にレガシー従業員一覧エンドポイントが非推奨化されたため、新規実装はv2系で組む。

❌ 3. マイナンバー(社会保険)のPII軽視

社会保険書類はマイナンバーを要求する特定個人情報。ログ・プロンプト・中間ストレージに残さず、利用目的を法令範囲に限定。マイナンバーを扱うエージェントは documents.read のみの最小権限とPIIマスキングを併用する。

❌ 4. トークンの早期失効

公称1時間だが実際は1〜2時間で失効するケースあり。書き込み前のプロアクティブ更新で401を回避する。

❌ 5. 大規模テナントのオフセット全件取得

単一組織の全従業員エクスポートはタイムアウトしやすい。部署(department)単位でページングすると数秒で完了する、という実務知見が報告されている。

❌ 6. レート制限(600 req/10分)の無視

token単位で600 req/10分が目安。429はRetry-Afterヘッダー付きで返るため、ヘッダー値に従った指数バックオフを実装する。

❌ 7. エラーオブジェクトのパース忘れ

エラーは {"errors":[{"code":"invalid_parameter","field":"email","message":"..."}]} 形式。codefield で分岐し、どのフィールドが原因かをユーザーに伝える設計にする。

freee人事労務・KING OF TIME・jobcanとの比較

サービス MCPステータス 認証 成功率(実測) 主要ユースケース
SmartHR API only OAuth 2.0 39% 労務・社会保険・年末調整
freee人事労務 公式MCP OAuth 2.0 (PKCE) 50% 給与計算・勤怠・労務
カオナビ API only API Key / OAuth 75% タレントマネジメント
jobcan API only API Key 40% 勤怠・労務・経費

『公式MCPがある』ことと『成功率が高い』ことは別問題だ。freee人事労務は公式MCPを持つがKanseiLink実測の成功率は50%、SmartHRは公式MCP未提供で39%、API onlyのカオナビが75%で最も高い。MCPの有無よりも『認可設計の分かりやすさ』『エラーの自己説明性』が成功率を左右する、というのがHR領域の実態である。SmartHRが公式MCPを出し、OAuthスコープを明快にすれば、市場シェアに見合った成功率まで一気に伸びる余地が大きい。

本番投入前チェックリスト

SmartHRを含む225+サービスのエージェント実測データを確認

KanseiLink MCPは公式・3rdパーティ・コミュニティのMCPサーバーとAPI 225+の成功率・レイテンシ・既知の落とし穴を集約しています。HR SaaSのエージェント開発でどこに詰まりやすいかを実データで把握できます。

MCP実測データで自社の選定基準を磨く

FAQ

Q1. SmartHRに公式MCPサーバーはありますか?

2026年5月時点で公式MCPは存在しません(mcp_status: api_only)。連携はOAuth 2.0で保護されたREST API経由で行います。エージェントからはHTTPツールで叩くか、社内でラッパーMCPを実装する形になります。freee人事労務が公式MCPを提供しているのと対照的です。

Q2. なぜ成功率が39%と低いのですか?

最大の要因はOAuthスコープのドキュメント不足です。スコープ宣言を誤ると認可エラー(auth_error)が返り、エージェントが原因を特定できずに諦めます。正しいスコープを宣言しサンドボックスで事前検証すれば、成功率は大きく改善します。

Q3. 年末調整(年末調整)をエージェントで自動化できますか?

/year_end_adjustments エンドポイント群でワークフローを開始できます。ただし年末調整は12〜1月に処理が集中する長時間・制度依存ワークフローのため、(1)冪等性の確保、(2)失敗時のリトライ設計、(3)マイナンバー等PIIの厳格な取り扱い、を前提に設計してください。

Q4. マイナンバーを扱うエージェントの最小構成は?

documents.read のみの最小権限スコープに絞り、書き込みは別キー/別フローに分離します。マイナンバーをログ・プロンプト・中間ストレージに残さないPIIマスキングを必須とし、利用目的を社会保険・税手続きに限定します。

Q5. v1とv2、本番ではどちらを使うべきですか?

v2を推奨します。v1の /employees は一部エッジケースで一貫性のない結果を返す報告があり、v2で修正されています。レガシー従業員一覧エンドポイントも非推奨化されているため、実装時は公式ドキュメント(developer.smarthr.jp/api)で最新のv2パスを確認してください。

データ開示・免責事項

本記事のSmartHR APIに関する技術情報(ベースURL・OAuthフロー・スコープ・主要エンドポイント・サンドボックス・ページネーション方式)はKanseiLink MCP get_service_detail(smarthr)が2026-05-25時点で返したデータと、SmartHR公式デベロッパーサイト(developer.smarthr.jp/api)で確認したOAuth 2.0認証の存在に基づきます。「エージェント成功率39%」「信頼スコア0.6」「レート制限600 req/10分」「access_tokenが公称より早く失効」「部署単位ページネーション推奨」はKanseiLinkに集約されたエージェント実測テレメトリおよび他エージェントからの報告(⚠️ 単一ソース由来を含む)であり、SmartHR公式が保証する数値ではありません。スコープ名・エンドポイントパス・レート制限・トークン有効期限は予告なく変更される可能性があるため、本番運用時は必ず公式ドキュメントの最新版をご確認ください。