BoondManager MCP Server について
BoondManager MCP Serverは、AIクライアントをBoondManagerのERP/CRM APIに接続し、レコードの検索、参照、作成、更新を可能にします。営業、プロジェクト、財務、人事、管理を扱い、参照リソースとワークフロープロンプトも提供します。
主な機能
- 01BoondManagerレコードの検索と管理
- 02CRM、プロジェクト、財務、人事データの操作
- 03参照辞書をリソースとして公開
- 04定型ワークフロー向けプロンプト
- 05検索・書き込みツールの構造化結果
活用シーン
- 01営業機会や期限超過請求書の確認
- 02プロジェクト配置に適したコンサルタントの検索
- 03チーム、プロジェクト、コンサルタント情報の要約
- 04領収書情報から経費明細を作成
MCP 対応
API操作をMCPツールとして公開し、参照辞書と現在のユーザー情報をリソースとして提供します。MCPプロンプトは関連ツールの呼び出しを順序付け、定型ワークフローを支援します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
182掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | integer | いいえ | ページ番号(デフォルト: 1、最大: 100) |
| sort | string | いいえ | 並べ替えフィールド(例: lastName、firstName、updateDate) |
| flags | array | いいえ | タグ ID。 |
| order | enum | いいえ | 並び順(asc/desc)asc | desc |
| tools | array | いいえ | ツール/技術の ID(setting.tool 辞書)。デフォルトは OR ロジックです。AND ロジックにするには、'#AND#' を 1 番目の要素として追加します:tools=['#AND#','12','34']。 |
| fields | array | いいえ | プロジェクション:各結果に表示する属性(例:['title','updateDate'])。省略時は標準の概要を使用します。不明な名前は無視されます。 |
| period | string | いいえ | 時間フィルター:'created'、'updated'、'available'、'noAction'/'withActions'/'withoutActions'。`startDate` + `endDate` と組み合わせて使用します。 |
| endDate | string | いいえ | 終了日(YYYY-MM-DD)。`period` と併用します。 |
| shields | array | いいえ | 充足度レベル。 |
| sources | array | いいえ | 採用ソースの ID(setting.source 辞書)。 |
| keywords | string | いいえ | キーワード(デフォルトでは履歴書 + 技術資料を検索)。`keywordsType` と組み合わせて使用できます。 |
| location | string | いいえ | 住所テキスト。`geoDistance` が必要です。 |
| pageSize | integer | いいえ | ページあたりの結果数(最大:500、デフォルト:30) |
| languages | array | いいえ | 言語は `langueId|niveauId` 形式(例:['anglais|courant'])。 |
| startDate | string | いいえ | 開始日(YYYY-MM-DD)。`period` と併用します。 |
| trainings | array | いいえ | 研修 ID。 |
| coordinates | string | いいえ | GPS 座標 'lat,lon'。`geoDistance` が必要です。 |
| evaluations | array | いいえ | 評価 ID。 |
| experiences | array | いいえ | 経験レベルの ID。 |
| geoDistance | integer | いいえ | 半径(km、5-200)。 |
| keywordsType | enum | いいえ | `keywords` の対象フィールド(デフォルト:'resumeTd')。resumeTd | lastName | firstName | fullName | strictFullName | emails | title | titleSkills | phones | reference | resume | td |
| activityAreas | array | いいえ | 活動分野の ID(setting.activityArea 辞書)。 |
| contractTypes | array | いいえ | 検索する契約タイプの ID(setting.typeOf.contract 辞書)。 |
| mobilityAreas | array | いいえ | モビリティエリアの ID。 |
| candidateTypes | array | いいえ | 候補者タイプの ID(setting.typeOf.resource 辞書)。 |
| expertiseAreas | array | いいえ | 専門分野の ID。 |
| perimeterPoles | array | いいえ | ポールの ID。責任者がこれらのポールに所属するエンティティを保持します。 |
| candidateStates | array | いいえ | 候補者状態の ID(boond_application_dictionary 経由の setting.state.candidate 辞書)。 |
| narrowPerimeter | boolean | いいえ | true の場合、`perimeter*` フィルターを AND で結合します(デフォルトは OR)。 |
| perimeterDynamic | array | いいえ | 現在のユーザーを基準とする動的な範囲(自分の ID を知らなくても使えるショートカット)。値:'data'(自分のデータ)、'managers'(自分のチーム/直属の部下)、'agencies'(自分のエージェンシー)、'poles'(自分のポール)、'businessUnits'(自分の BU)。組み合わせ可能です。 |
| availabilityTypes | array | いいえ | 稼働状況タイプの ID(setting.availability 辞書)。 |
| perimeterAgencies | array | いいえ | エージェンシーの ID。責任者がこれらのエージェンシーに所属するエンティティを保持します。 |
| perimeterManagers | array | いいえ | マネージャー(リソース)の ID。責任者がこれらのマネージャーのいずれかであるエンティティを保持します。「自分のチーム/人物 X の直属の部下」には [X_id] を渡します。自分の ID は boond_application_current_user で取得します。 |
| providerCompanies | array | いいえ | 下請け会社の ID。 |
| perimeterManagersType | enum | いいえ | `perimeterManagers` の対象となる責任者タイプ:'main'(Main Manager)または 'hr'(HR Manager)。main | hr |
| perimeterBusinessUnits | array | いいえ | ビジネスユニットの ID。責任者がこれらの BU に所属するエンティティを保持します。 |
詳細
BoondManager MCP サーバー
Silamirのオープンソースプロジェクトです。
ワンクリックインストール:
LM Studio、Goose、Gemini CLIは、それぞれの専用手順(ネイティブディープリンクまたはコマンド)でインストールします。詳しくはインストールのセクションをご覧ください。GitHubではHTTP以外のスキームのリンク(
lmstudio://、goose://)をクリック可能にできないため、ここにはワンクリックボタンがありません。
BoondManager API向けのMCP(Model Context Protocol)サーバーです。Claude(Desktop、Cowork、Code)から、お使いのBoondManagerインスタンス内のレコードを検索、参照、作成、変更できます。
42のドメインにわたるBoondManager APIの238個のツールを提供します。自動生成されたカタログ(ツール+プロンプト+リソース)については、TOOLS.mdをご覧ください。
構造化出力。 読みやすいテキストに加えて、
search、create、update、deleteツールは、MCP のoutputSchemaに準拠したstructuredContentを返します。search→{ total?, count, items[] }(完全な JSON:API リソースではなく、簡潔な概要)、create/update→{ id?, type? }、delete→{ id, deleted, reason? }。構造化出力を活用する MCP クライアントは、呼び出しを連鎖させる際に信頼できるエンティティ参照を取得できます。getツールは引き続きテキストのみを返します(テキストはすでに処理可能な JSON です)。
目次
- 対象領域
- 事前にオーケストレーションされたプロンプト
- インストール : Claude Desktop、Claude Code、Cursor、VS Code
- 設定と認証
- トランスポート(stdio、HTTP + OAuth2、Docker)
- 使用例
- トラブルシューティング
対象領域
CRM・営業
| 領域 | ツール | 操作 |
|---|---|---|
| 候補者 | 10 | CRUD + 情報、技術データ、管理情報、アクション、ポジショニング |
| リソース | 20 | CRUD + 情報、技術データ(+ 更新)、管理情報、福利厚生、アクション、ポジショニング、プロジェクト、作業時間レポート、経費レポート、休暇レポート、タイムシート、参照情報(作成/更新/削除) |
| 連絡先 | 11 | CRUD + 情報、アクション、商談、プロジェクト、注文、請求書 |
| 企業 | 14 | CRUD + 情報、連絡先、アクション、商談、プロジェクト、注文、請求書、仕入れ、仕入先請求書 |
| 商談 | 10 | CRUD + 情報、アクション、ポジショニング、プロジェクト、シミュレーション |
プロジェクト管理
| 領域 | ツール | 操作 |
|---|---|---|
| プロジェクト | 12 | CRUD + 情報、アクション、シミュレーション、納品グループ、注文、仕入れ、生産性 |
| ポジショニング | 4 | 検索、取得、作成、削除 |
| 納品/CRA | 2 | 検索、取得 |
| 仕入れ/外注 | 4 | 検索、取得、作成、削除 |
請求・財務
| 領域 | ツール | 操作 |
|---|---|---|
| 顧客請求書 | 5 | 完全な CRUD |
| 仕入先請求書 | 2 | 検索、取得 |
| 注文書 | 5 | 完全な CRUD |
| 支払い | 2 | 検索、取得 |
| 経費精算書 | 5 | 完全な CRUD |
| 製品 | 5 | 完全な CRUD |
人事・時間
| 領域 | ツール | 操作 |
|---|---|---|
| 休暇 | 5 | 完全な CRUD |
| 休暇スケジュール | 1 | 検索(全体ビュー) |
| タイムシート | 3 | 検索、取得、リソースのタイムシート |
| 契約 | 2 | 取得、作成 |
| 福利厚生 | 2 | 検索、取得 |
活動の追跡
| 領域 | ツール | 操作 |
|---|---|---|
| アクション | 5 | 検索、取得、作成、更新、削除 |
| 承認 | 2 | 検索、取得 |
| ToDo リスト | 2 | 検索、取得 |
レポート
| 領域 | ツール | 操作 |
|---|---|---|
| 企業レポート | 1 | 検索 |
| プロジェクトレポート | 1 | 検索 |
| リソースレポート | 1 | 検索 |
| サマリーレポート | 1 | 検索 |
| 生産計画レポート | 1 | 検索 |
管理と設定
| 領域 | ツール | 操作 |
|---|---|---|
| ユーザーアカウント | 2 | search, get |
| 支店 | 2 | search, get |
| ビジネスユニット | 2 | search, get |
| 部門 | 2 | search, get |
| 役割 | 2 | search, get |
| カレンダー | 2 | search, get |
| フラグ/ラベル | 2 | search, get |
| Webhook | 2 | search, get |
| 監査ログ | 2 | search, get |
| 通知 | 2 | search, get |
| ディスカッションスレッド | 2 | search, get |
| ドキュメント/履歴書 | 4 | get(ダウンロード)、create(URL、ローカルファイル、中継スロット、または base64 によるアップロード+履歴書の解析)、upload_slot(SharePoint 中継)、delete |
| アプリケーション | 2 | 辞書、現在のユーザー |
エンティティごとのタブの詳細
主要なエンティティには、目的に合わせてアクセスできるよう、タブごとの専用ツールが用意されています。
| エンティティ | 利用可能なタブ |
|---|---|
| 候補者 | information, technical-data, administrative, actions, positionings |
| リソース | information, technical-data, administrative, advantages, actions, positionings, projects, times-reports, expenses-reports, absences-reports |
| 連絡先 | information, actions, opportunities, projects, orders, invoices |
| 企業 | information, contacts, actions, opportunities, projects, orders, invoices, purchases, provider-invoices |
| 商談 | information, actions, positionings, projects, simulation |
| プロジェクト | information, actions, simulation, deliveries-groupments, orders, purchases, productivity |
MCP リソース(辞書)
サーバーは、Boond の参照辞書をMCP リソースとして公開します(Claude Desktop、MCP Inspector など、リソースの表示に対応しているクライアント向け)。これにより、追加のツール呼び出しなしで、モデルが整数の state や typeOf をラベルに変換できます。
| URI | 内容 |
|---|---|
boond://application/current-user | 現在のユーザーのプロフィール(id、支店、権限) |
boond://dictionary/states/{entity} | エンティティごとの状態:resources、candidates、contacts、companies、opportunities、projects、invoices、orders、positionings、deliveries、payments、purchases、provider-invoices、products、quotations、probations |
boond://dictionary/typeOf/{entity} | エンティティごとのタイプ:resources、contacts、projects、contracts、deliveries、purchases、activities |
boond://dictionary/actions/{entity} | 関連付け先エンティティごとのアクションタイプ:candidates、contacts、resources、opportunities、projects、invoices、orders(boond_actions_create の typeOf) |
boond://dictionary/{sources,origins} | 応募元、商談の起点 |
boond://dictionary/{paymentMethods,paymentTerms,taxRates,contractEndReasons} | 仕訳で使用される財務/人事パラメーター |
boond://application/current-user/rights | ユーザーのレベル、支店/部門/BU、アプリ、エンティティごとの権限(current-user の要約ビュー) |
boond://dictionary/countries | 国の一覧 |
boond://dictionary/currencies | 通貨の一覧 |
boond://dictionary/languages | 言語の一覧 |
この厳選された一覧に含まれない辞書については、boond_application_dictionary ツールを引き続き利用できます。
事前に構成されたプロンプト
ツールに加え、サーバーはMCP プロンプト(事前に配線されたテンプレート)を公開し、定型的なワークフローに合わせて適切なツール呼び出しを適切な順序で実行します。プロンプトに対応しているクライアント(Claude Desktop、Cowork、Claude Code、MCP Inspector など)では、スラッシュコマンドまたはメニューとして表示されます。
横断ワークフロー
| プロンプト | 用途 |
|---|---|
synthese_equipe | チームの状況:誰が何を担当しているか、誰が不在か、誰が対応可能か(デフォルト:自分のチーム)。 |
pipeline_commercial | 指定期間内に成約予定の商談:ステータス別の内訳、加重売上高、上位10件。 |
factures_a_relancer | 支払期限を過ぎた未払い請求書を会社別にまとめます。 |
candidats_pour_opportunite | 商談をもとに、条件に合うアクティブな候補者(ツール、専門知識、移動可能範囲、対応可能時期)を提案します。 |
fiche_consultant | リソースの360度ビュー:基本情報+技術情報+アサイン状況+不在情報+最近のCRA。 |
recap_hebdo | 週間サマリー:動きのあったパイプライン、不在のチームメンバー、進行中のプロジェクト、実施すべきアクション。 |
traiter_note_de_frais | 添付された領収書の写真/PDFをもとに経費を抽出し、内容を要約して明示的な承認を得た後、Boondに経費明細を作成します。 |
リソース、スキル、CV
| プロンプト | 用途 |
|---|---|
staffing_disponible | 指定期間内に稼働可能な社内コンサルタント(任意で自由形式のスキルや対象範囲で絞り込み)を、稼働可能時期が近い順に並べ、優先度の高い上位3名を提示します。 |
fin_de_mission | N日以内に終了するミッションを予測します(デフォルトは60日)。引き継ぎ先が特定されていない15日以内の終了予定には緊急のマークを付けます。 |
cartographie_competences | 対象範囲(チーム/支社)のスキルマップ:上位N件、希少スキル(バスファクター)、過剰なスキル、未充足スキルとオープンな商談の比較。 |
cvs_a_mettre_a_jour | CV/技術資料の鮮度を監査します(陳腐化のしきい値は設定可能)。まもなく市場に出るリソースを優先します。 |
recherche_profil_competences | 自由形式のスキルの組み合わせを使い、複数の情報源(社内リソース+候補者)から検索します。商談は不要です。適合度を10点満点で評価します。 |
プロンプトの呼び出し方
MCP プロンプトはユーザーメッセージのテンプレートです。自分で呼び出すと、LLM がそこに含まれるランブックを実行します。把握しておく必要がある BoondManager のフィルターはありません。すべてサーバー側に組み込まれています。
Claude Desktop / Cowork / MCP Inspector:入力欄で / を入力し、一覧からプロンプトを選択して、表示されるフォームに引数を入力し、確定します。
Claude Code:同様に、/ を入力して選択します。引数はインラインで尋ねられます。
代替方法(プロンプト専用 UI を持たないクライアント):自由形式のリクエストでプロンプト名を指定すると、クライアントが MCP プロトコルを通じて定義を取得します。例:「6月1日から2026年9月1日までの staffing_disponible ランブックを実行してください。スキルは Java Spring AWS」。
リソース/スキル/CV のプロンプト呼び出し例:
/staffing_disponible
start_date = 2026-06-01
end_date = 2026-09-01
competences = Java Spring AWS Kubernetes
manager_id = (vide -> mon equipe)
/fin_de_mission
horizon_jours = 30
/cartographie_competences
agency_id = 7
top_n = 15
/cvs_a_mettre_a_jour
seuil_mois = 6
/recherche_profil_competences
competences = .NET Azure DevOps
experience_min = 5 ans
dispo_avant = 2026-07-15
inclure_candidats = oui
Claude の設定(
claude_desktop_config.jsonなど)を変更した後は、クライアントを再起動してください。MCP プロンプトの一覧はホットリロードされません。
前提条件
- Node.js >= 22
- API アクセスが有効な BoondManager アカウント
- BoondManager の設定で「Allow API Rest calls using BasicAuth authentication」オプションが有効になっていること(BasicAuth の場合)
インストール
Claude Desktop(ワンクリック)
GitHub の最新リリースから .mcpb ファイルをダウンロードし、Claude Desktop で**ファイル > 拡張機能をインストール...**を選択して、ファイルを指定します。認証情報はインストール時に尋ねられ、暗号化して保存されます(macOS の Keychain/Windows の Credential Manager)。
Claude Code(プラグイン、推奨)
ワンクリックのデスクトップアプリと同じ手軽さで、設定フォームを使えます。環境変数を自分で設定する必要はありません。
/plugin marketplace add silamir/boondmanager-mcp-server
/plugin install boondmanager-mcp@boondmanager
Claude Code に14項目のオプション(認証情報、ベース URL、アクセス制限)のフォームが表示されます。画面上ではすべて任意項目ですが、次の3つの認証方式のうちいずれか1つを入力する必要があります。3つの値 User Token + Client Token + Client Key(JWT が自動生成されるため推奨)、事前に生成した Token JWT、または Utilisateur + Mot de passe(BasicAuth)の組み合わせです。空欄のままにした項目には、デフォルト値が適用されます。
サーバーが /mcp にすぐ表示されない場合は、/reload-plugins を実行すれば十分です。Claude Code を再起動する必要はありません。
参考情報:
- シークレットの保存先:機密性の高い5つの項目(
User Token、Client Token、Client Key、Token JWT、Mot de passe)は、macOS の Keychain (利用できない場合は~/.claude/.credentials.json)に保存され、settings.jsonには保存されません。機密性のないオプション(URL、制限)は、~/.claude/settings.jsonのpluginConfigsに平文で保存されます。 - ツールの命名:クライアント側では、ツール名に
mcp__boondmanager__が接頭辞として付けられます。たとえばmcp__boondmanager__boond_candidates_searchです。アクセス許可リストでは、この名前を指定してください。 - バージョン:プラグインは、マニフェストで固定された npm バージョンを起動します。新しいリリースに切り替えるには、
/plugin marketplace update boondmanagerを実行してから、プラグインを再インストールしてください。 - アクセス範囲の制限:フォームの Restriction 項目は、
BOOND_MCP_*変数(業務プロフィール、ドメイン、操作、読み取り専用)に対応します。docs/access-control.md をご覧ください。 - 削除操作:Claude Code は MCP のエリシテーションに対応しているため、各
boond_*_deleteの実行前に確認を求めます(削除を確認 オプション。デフォルトで有効)。
アンインストールするには、/plugin uninstall boondmanager-mcp@boondmanager を実行してください。
Claude Code(手動、claude mcp add)
環境変数を自分で管理したい場合や、プラグインとは異なるバージョンに固定したい場合におすすめです。
# Avec un token API (recommande)
claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-server
# Avec BasicAuth
claude mcp add --transport stdio \
--env BOOND_USER=votre_login \
--env BOOND_PASSWORD=votre_mot_de_passe \
boondmanager -- npx -y boondmanager-mcp-server
Windows:
npxの前にcmd /cを追加してください。claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token \ boondmanager -- cmd /c npx -y boondmanager-mcp-server
すべてのプロジェクトでサーバーを利用できるようにするには、--scope user を追加してください。
claude mcp add --transport stdio --scope user \
--env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-server
Claude Code - チーム共有の設定
プロジェクトのルートに .mcp.json ファイルを追加します(git にコミットしてください)。
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}"
}
}
}
}
チームメンバーはそれぞれ、自分のマシンで環境変数 BOOND_API_TOKEN を設定するだけです。.mcp.json ファイルでは、環境変数に ${VAR} と ${VAR:-default} の構文を使用できます。
Claude Code Enterprise(管理者によるデプロイ)
管理者は、managed-mcp.json ファイルを使って、すべてのユーザーに MCP サーバーをデプロイできます。
| OS | パス |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/managed-mcp.json |
| Linux / WSL | /etc/claude-code/managed-mcp.json |
| Windows | C:\Program Files\ClaudeCode\managed-mcp.json |
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}",
"BOOND_BASE_URL": "https://votre-instance.boondmanager.com/api"
}
}
}
}
このファイルによって MCP サーバーの設定が完全に管理されるため、ユーザーはこの設定以外のサーバーを追加または変更できません。
許可するサーバーを制限しつつ、ユーザーによるサーバーの追加を可能にするには、代わりに managed-settings.json を使用してください。
{
"allowedMcpServers": [
{ "serverName": "boondmanager" }
]
}
Claude Desktop / Cowork(手動設定)
Claude の設定ファイルに追加してください。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}
npm 経由
npx boondmanager-mcp-server
または、グローバルにインストールします。
npm install -g boondmanager-mcp-server
boondmanager-mcp-server
ソースから
git clone https://github.com/silamir/boondmanager-mcp-server.git
cd boondmanager-mcp-server
npm install
npm run build
Smithery
このサーバーはSmitheryでも利用できます。設定はリポジトリのルートにあるsmithery.yamlに記述されています。Smithery は認証情報(JWT の自動生成/事前生成した JWT/BasicAuth)を入力する UI を提供し、npx経由でサーバーをインストールします。
LobeChat / LobeHub
このサーバーはLobeHub の MCP マーケットプレイスに掲載されています。LobeChat(セルフホスト版またはクラウド版)では、設定 > プラグイン > MCP > 追加から、次の設定で MCP を追加します。
{
"name": "boondmanager",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_USER_TOKEN": "<votre_user_token>",
"BOOND_CLIENT_TOKEN": "<votre_client_token>",
"BOOND_CLIENT_KEY": "<votre_client_key>"
}
}
または、共有ゲートウェイモードでデプロイする場合は、HTTP トランスポートを使用してください(トランスポートのセクションを参照)。
Cursor
README 上部の**Cursor に追加**バッジをクリックするか、設定 > MCP > 新しい MCP サーバーを追加から手動でサーバーを追加します。続いて、~/.cursor/mcp.jsonのサーバーにenvブロックを追加し、認証情報を設定します。
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}
VS Code(GitHub Copilot / MCP エージェント)
README 上部の**VS Code にインストール**バッジをクリックするか、(プロジェクトごとの).vscode/mcp.jsonまたはユーザーのsettings.jsonにサーバーを追加します。
{
"servers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${input:boond_api_token}"
}
}
}
}
LM Studio
LM Studio で、プログラム > インストール > mcp.jsonを編集を選択し、次の内容を追加します。
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}
Goose
設定 > 拡張機能 > 追加から、コマンドnpx -y boondmanager-mcp-serverと環境変数BOOND_API_TOKENを指定して、STDIOタイプの拡張機能を追加します。CLI での設定方法は次のとおりです。
goose session --with-extension "npx -y boondmanager-mcp-server"
Gemini CLI
リポジトリには Gemini CLI 拡張機能のマニフェスト(gemini-extension.json)が含まれています。GitHub から拡張機能を直接インストールします。
gemini extensions install https://github.com/silamir/boondmanager-mcp-server
続いて、環境内で認証情報を設定します(Gemini は起動時に${VAR}を展開します)。
export BOOND_API_TOKEN="votre_token_jwt"
# ou le trio JWT auto :
export BOOND_USER_TOKEN="..." BOOND_CLIENT_TOKEN="..." BOOND_CLIENT_KEY="..."
設定
ログ
このサーバーはpinoを使用して、集約や可観測性に適した構造化 JSON ログを出力します。
| 変数 | デフォルト | 説明 |
|---|---|---|
LOG_LEVEL | info | ログレベル:trace、debug、info、warn、error、fatal |
LOG_FORMAT | (自動) | 純粋な JSON の場合はjson、それ以外は開発時に pino-pretty を使用 |
本番環境(NODE_ENV=production)では、デフォルトで JSON ログが出力されます。開発環境では、LOG_FORMAT=jsonを指定しない限り、pretty 形式(色付き)が有効になります。各 HTTP リクエストにはcorrId(8 桁の 16 進数)が付与され、ログ内でリクエストを追跡できます。
トランスポートにかかわらず、ログは常に stderr に出力されます。stdio モードでは stdout が JSON-RPC のストリーム専用となっており、それ以外の書き込みがあるとクライアント側の接続が破損するためです。Claude Desktop は stderr をログビューアー(Developer → Logs)に取り込むため、警告(アクセス制御ポリシー、利用可能な更新、辞書)はここで確認できます。
認証
オプション 1:JWT API トークン(推奨)
export BOOND_API_TOKEN="votre_token_jwt"
オプション 2:BasicAuth
export BOOND_USER="votre_login"
export BOOND_PASSWORD="votre_mot_de_passe"
静的認証を使用する HTTP トランスポート(BOOND_HTTP_STATIC_AUTH)
デフォルトでは、HTTP トランスポート(MCP_TRANSPORT=http)は OAuth2 保護リソース です。各 MCP リクエストには、各ユーザー自身の BoondManager トークンが含まれます(docs/oauth.md を参照)。BOOND_HTTP_STATIC_AUTH=true を設定すると、この方式が上記の環境認証情報に置き換わり、すべてのリクエストで共有されます。これは、セルフホスト可能な単一テナント環境、CI パイプライン、または OAuth フローを使用しない内部ゲートウェイ向けです。
このモードでは、MCP クライアントを認証するものがなくなります。ポートにアクセスできる人は誰でも、オペレーターの BoondManager 権限(アクセス方針に応じて読み取りおよび書き込み)を使用できます。そのため、次の設定が必要です。
| 変数 | 役割 |
|---|---|
MCP_HTTP_API_KEY | クライアントが Authorization: Bearer <キー> または X-Api-Key: <キー> で提示する共有シークレットです。時間差のない比較を行います。未設定または不正な場合は 401 を返します。サーバーが loopback 以外(0.0.0.0、Docker イメージ)でリッスンする場合は必須です。設定されていないと、サーバーの起動を拒否します。 |
MCP_HTTP_INSECURE_STATIC_AUTH | loopback 以外でもキーなしでの起動を明示的に許可するには 1 を設定します(プライベートネットワークを境界として使用します)。名前のとおりの機能です。 |
export MCP_TRANSPORT=http
export MCP_HTTP_HOST=0.0.0.0
export BOOND_HTTP_STATIC_AUTH=true
export MCP_HTTP_API_KEY="$(openssl rand -hex 32)"
export BOOND_USER_TOKEN=… BOOND_CLIENT_TOKEN=… BOOND_CLIENT_KEY=…
npx boondmanager-mcp-server
# côté client : Authorization: Bearer <MCP_HTTP_API_KEY>
/healthz は引き続きキーなしでアクセスできます。OAuth モード(デフォルト)では、MCP_HTTP_API_KEY は警告付きで無視されます。この場合、Bearer は BoondManager トークンです。
カスタム URL(専用インスタンスの場合)
export BOOND_BASE_URL="https://votre-instance.boondmanager.com/api"
デフォルトの URL は https://ui.boondmanager.com/api です。
HTTP タイムアウト
BoondManager API への各リクエストは、デフォルトで 30 秒後にタイムアウトします。応答の遅いテナントや大容量のレポートでは、次の設定で延長できます。
export BOOND_HTTP_TIMEOUT_MS=60000 # 60 s
リクエストがタイムアウトすると、サーバーは無期限に停止するのではなく、BOOND_HTTP_TIMEOUT_MS に言及した明確なエラーを返します。
一時的な障害時の再試行
HTTP クライアントは、指数バックオフとジッターを使用して、一時的なエラーを自動的に再試行します。
- GET:
5xx、429、ネットワークエラー(ECONNRESETなど)、タイムアウトの場合に再試行します(GET はべき等であるため)。 - POST / PUT / PATCH / DELETE:サーバー側で書き込みが重複するのを防ぐため、
429の場合にのみ再試行します。5xxとネットワークエラーは即座に通知されます。 Retry-Afterヘッダー(秒数または HTTP 日付)を尊重し、BOOND_HTTP_RETRY_MAX_MSを上限とします。
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_HTTP_MAX_RETRIES | 2 | 追加の再試行の最大回数(合計3回試行)。0 にすると再試行を完全に無効にします。 |
BOOND_HTTP_RETRY_BASE_MS | 200 | 指数バックオフに使用する基本遅延(base * 2^attempt、ジッターあり)。 |
BOOND_HTTP_RETRY_MAX_MS | 5000 | 再試行間の遅延の上限です。 |
レート制限
ツールのループが暴走して API に過剰な負荷をかけ(429 が連続して発生し)ないよう、クライアントはローカルのトークンバケットを適用します。デフォルトは、継続的なレートが 10 リクエスト/秒、バースト20 です。通常の対話的な使用では影響しません。再試行でもトークンを消費します。
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_HTTP_RATE_LIMIT_RPS | 10 | 継続的なレート(リクエスト/秒)。0 にすると完全に無効になります。 |
BOOND_HTTP_RATE_LIMIT_BURST | 20 | バケット容量=即時バーストの最大サイズです。 |
HTTP OAuth トランスポートでは、バケットはユーザーごと(Bearer から導出した ID)です。あるユーザーのバーストによって、他のユーザーの速度が低下することはありません。stdio と静的認証では ID は1つのみのため、バケットも1つです。制限はプロセス単位ではなく、ID 単位です。
辞書のキャッシュ
BoondManager API が公開しているエンドポイントは /application/dictionary のみで、すべてのラベル(状態、種類、国など)を返します。状態/種類からラベルへの変換のたびに再ダウンロードすることを避けるため、サーバーは辞書をメモリ内にキャッシュします。
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_DICTIONARY_TTL_MS | 3600000(1 時間) | 辞書キャッシュの有効期間(ミリ秒)。数値以外または 0 以下の値が指定された場合は、デフォルト値に戻ります。 |
ローカルドキュメントのアップロード
boond_documents_create は 3 種類のソースに対応しており、1 回の呼び出しにつき指定できるのは 1 つだけです。
| ソース | 転送方式 | 有効化 | 上限 |
|---|---|---|---|
fileUrl | すべて | 常時 | —(BoondManager が URL からダウンロード) |
filePath | stdio のみ | BOOND_MCP_UPLOAD_DIRS | BOOND_MCP_UPLOAD_MAX_BYTES(20 MB) |
fileContent(base64)+ fileName | すべて | 常時 | 2 MB |
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_MCP_UPLOAD_DIRS | (なし) | ファイルのアップロードを許可するディレクトリ(絶対パス、CSV)。未設定の場合、filePath は無効になります。 |
BOOND_MCP_UPLOAD_MAX_BYTES | 20971520 | ローカルファイルの最大サイズ(バイト)。 |
export BOOND_MCP_UPLOAD_DIRS="$HOME/Documents/Boond,$HOME/Downloads"
安全対策:絶対パスを必須とし、シンボリックリンクの解決後にパスの制限を検証します(.. および外部を指すシンボリックリンクは拒否)。通常ファイルのみを許可します。ファイルの種類は拡張子ではなく先頭のバイトから判定します(PDF、DOCX/XLSX/PPTX、ODT/ODS、DOC/XLS/PPT、RTF、PNG、JPEG、GIF、WebP)。専用のディレクトリのみを許可してください。許可されたディレクトリにあるファイルは、モデルの要求に応じて BoondManager に送信される可能性があります。
会話の添付ファイル用アップロード中継(SharePoint)
会話にドラッグ&ドロップされた添付ファイルは、サーバーのホストマシン上ではなく、クライアントのコード実行環境(サンドボックス)にあります。そのため、filePath では参照できず、モデルが確実に base64 に変換することもできません。この中継では、ファイルを モデルの出力を経由させずに 転送します。
boond_documents_upload_slot({ fileName })は、専用の SharePoint ライブラリに一時フォルダーと、事前認証済みの Microsoft Graph アップロードセッション(15 分間有効、1 ファイルのみ、1 回限り)を作成します。- サンドボックスから
PUTリクエスト(curl、コマンドを提供)でファイルをアップロードします。 boond_documents_create({ parentType, parentId, uploadSlot })はファイルを検証し(サイズ、先頭のバイト列)、fileUrlの仕組みを使って Graph の一時的な読み取り URL を BoondManager に渡し、その後ファイルを 完全に削除 します(ごみ箱を経由しないpermanentDelete。テナントで拒否された場合は通常の削除にフォールバックします)。期限切れのスロットは、次回の起動時に削除されます。
Entra ID の認証情報はサーバー側に保持されます。クライアントに見えるのは、1 ファイルに限定された URL のみです。
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_MCP_UPLOAD_RELAY | (なし) | 中継を有効にするには sharepoint を指定します。未設定の場合、boond_documents_upload_slot は拒否されます。 |
BOOND_MCP_SHAREPOINT_TENANT_ID | — | Entra ID ディレクトリ(テナント)の ID。 |
BOOND_MCP_SHAREPOINT_CLIENT_ID | — | Entra ID アプリ登録のアプリケーション ID。 |
BOOND_MCP_SHAREPOINT_CLIENT_SECRET | — | クライアントシークレット(有効期限が切れる前に更新してください)。 |
BOOND_MCP_SHAREPOINT_SITE | — | 一時保存サイト:https://<tenant>.sharepoint.com/sites/<site>。 |
BOOND_MCP_SHAREPOINT_LIBRARY | Documents | 一時保存ライブラリの名前。 |
必要最小限の権限での設定:
- 専用の SharePoint サイトとライブラリを用意し、所有者のみにアクセスを限定します。検索およびオフライン同期の対象から除外し、Purview の保持ポリシーを設定しないでください(設定すると、削除されたファイルが保持されます)。
- 単一テナントの Entra ID アプリ登録を作成し、Graph のアプリケーション権限
Sites.Selectedと管理者の同意を付与したうえで、このサイトのみにwriteロールを付与します。
Connect-MgGraph -Scopes "Sites.FullControl.All"
$site = Get-MgSite -SiteId "<tenant>.sharepoint.com:/sites/<site>"
New-MgSitePermission -SiteId $site.Id -BodyParameter @{
roles = @("write")
grantedToIdentities = @(@{ application = @{ id = "<client-id>"; displayName = "boond-mcp-relay" } })
}
- クライアント側で、コード実行環境のネットワーク許可リストに
<tenant>.sharepoint.comを追加します。
想定されるトレードオフ:BoondManager が受け取る読み取り URL は、短い有効期間(数分間。Microsoft が設定)だけ事前認証されています。URL は推測できず、BoondManager がファイルを取得するとすぐに削除されます。
アクセス制限(プロファイル/ドメイン/読み取り専用)
環境変数だけで、AI に表示する内容と実行できる操作を制限できます。特定のドメイン(例:会計)のみを公開したり、書き込みや削除をブロックしたりできます。
| 変数 | 効果 |
|---|---|
BOOND_MCP_PROFILE | 事前設定済みプロファイル:recruiting、sales、finance、delivery、admin(CSV で指定すると統合)。ドメインを手動で列挙しなくて済むショートカットです。BOOND_MCP_DOMAINS が定義されている場合は無視されます。 |
BOOND_MCP_DOMAINS | ドメインの許可リスト(CSV)。指定がない場合はすべてが対象です。例:invoices,payments,application |
BOOND_MCP_EXCLUDE_DOMAINS | ドメインの拒否リスト(CSV)。許可リストの適用後に適用されます。例:candidates,resources |
BOOND_MCP_OPERATIONS | read,create,update,delete のうち許可する操作(CSV)。指定がない場合はすべてが対象です。 |
BOOND_MCP_READ_ONLY | ショートカット:true は BOOND_MCP_OPERATIONS=read と同等です(すべて読み取り専用)。 |
⚠️ これは強固なセキュリティ境界ではありません。 フィルターは AI からツールを隠しますが、使用する BoondManager アカウントの権限は変更しません。 実際にアクセスを制限するには、まず BoondManager アカウント/ロールの権限(読み取り専用、会計範囲など)を設定してください。このフィルターはその補助として利用します(トークンの節約、誤操作防止)。
例 — 管理範囲全体を読み取り専用にする場合:
export BOOND_MCP_PROFILE=finance
export BOOND_MCP_READ_ONLY=true
完全なガイド、解決ルール、各プロファイルの内容(およびそれによって有効になるツール数)については、docs/access-control.md を参照してください。
アイコン(SEP-973)
ツール、プロンプト、リソースにはドメインごとのアイコンが付いています(data: URI によるインライン SVG のため、ホストするアセットは不要です)。測定コストは 約 40 Kio、tools/list のペイロードの約 14% です。アイコンを表示しないデプロイ環境(ゲートウェイ、テキストクライアントなど)では、アイコンを削除できます。
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_MCP_ICONS | 有効 | 0/false/no/off:アイコンを一切通知しません(ツール、プロンプト、リソース)。 |
辞書のカスタムラベル
BoondManager インスタンスでカスタム辞書ラベル(例:英語のアクション種別や状態)を使用している場合は、BOOND_DICTIONARY_OVERRIDES(インライン JSON または JSON ファイルへのパス)でラベルから ID へのマッピングを宣言できます。
export BOOND_DICTIONARY_OVERRIDES='{"action":{"contact":{"Call":61,"Email":63}},"state":{"candidate":{"Interviewed":2}}}'
これにより、サーバーは boond_actions_create の typeOf と、作成/変更時の state フィールドにこれらのラベルを受け付け、自動的に数値 ID に解決し、利用可能なラベルをツールの説明に追加します。この変数を指定しない場合、動作は一切変わりません。
完全な形式、サポート対象のエンティティ、制限については、docs/dictionary-overrides.md を参照してください。
トランスポート
サーバーは、環境変数 MCP_TRANSPORT で選択できる 2 種類の MCP トランスポートをサポートしています。
| トランスポート | 値 | 用途 |
|---|---|---|
| stdio(デフォルト) | stdio または未定義 | Claude Desktop、Claude Code、ローカル統合 |
| Streamable HTTP | http(別名:streamable-http) | MCP ゲートウェイ、リモートデプロイ、コンテナ |
Streamable HTTP(MCP ゲートウェイ向け)
v1.4.0 以降、サーバーは HTTP(MCP Streamable HTTP トランスポート)で公開し、MCP ゲートウェイの背後に接続したり、サービスとしてデプロイしたりできます。ネゴシエートされるプロトコルリビジョンは、インストール済み SDK のものです(2025-11-25)。
BoondManager 認証:OAuth2 保護リソース。 HTTP サーバーは秘密情報を保持しません(
client_secret、更新トークン、ユーザーストレージのいずれも保持しません)。各 MCP リクエストにはAuthorization: Bearer <boond_access_token>を含める必要があります。サーバーはトークンをそのまま BoondManager に転送します。BoondManager に対する OAuth の認証フローを実行し、トークンを更新するのは、MCP クライアント(Claude Desktop、Claude Code、ゲートウェイなど)です。手順の全容については、docs/oauth.md を参照してください。
export MCP_TRANSPORT=http
export MCP_HTTP_HOST=0.0.0.0 # defaut: 127.0.0.1
export MCP_HTTP_PORT=3000 # defaut: 3000
export MCP_HTTP_PATH=/mcp # defaut: /mcp
# Optionnel: requis uniquement derriere un reverse proxy, pour que
# la discovery annonce la bonne URL publique.
export MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp
npx boondmanager-mcp-server
# 🚀 BoondManager MCP Server running (streamable HTTP transport)
# 📡 Endpoint: http://0.0.0.0:3000/mcp
# 🔑 Mode: stateless
# 🔐 Boond auth: OAuth2 (per-request Bearer from MCP client)
HTTP 環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
MCP_TRANSPORT | stdio | HTTP トランスポートを有効にする場合は http |
MCP_HTTP_HOST | 127.0.0.1 | リッスンするインターフェース(公開する場合は 0.0.0.0) |
MCP_HTTP_PORT | 3000 | TCP ポート |
MCP_HTTP_PATH | /mcp | MCP エンドポイントの HTTP パス |
MCP_HTTP_STATEFUL | false | ステートフルモード(セッション Mcp-Session-Id)を有効にする場合は true |
MCP_HTTP_JSON_RESPONSE | false | JSON 応答(SSE なし)を強制する場合は true |
MCP_HTTP_PUBLIC_URL | (派生) | OAuth2 ディスカバリーの resource と WWW-Authenticate チャレンジで通知される公開 URL。リバースプロキシの背後では必須です。 |
MCP_HTTP_SESSION_TTL_MS | 1800000(30 分) | ステートフルモードで、セッションを閉じるまでの非アクティブ期間です。 |
MCP_HTTP_SESSION_SWEEP_INTERVAL_MS | 300000(5 分) | 非アクティブなセッションをスキャンする間隔です。 |
MCP_HTTP_ALLOWED_HOSTS | (自動) | Host ヘッダーの許可リスト(DNS リバインディング対策、CVE-2025-66414)。明示的に無効にするには * を指定します。 |
MCP_HTTP_ALLOWED_ORIGINS | (自動) | ブラウザクライアント向けの Origin ヘッダー(スキーム + ホスト + ポート)の許可リストです。一覧にない Origin には 403 が返されます(仕様 2025-11-25 の要件)。サーバーがループバックでリッスンする場合のデフォルトは、ポートを問わないすべてのループバックオリジン(localhost/127.0.0.1/[::1] の http/https)に加え、MCP_HTTP_PUBLIC_URL が定義されていればそのオリジンです。そのため、MCP Inspector(:6274)や開発サーバー(:5173)は設定なしで動作し、リモートオリジンには常に 403 が返されます。それ以外の場合、検証は無効です。一方、明示的に指定したリストは完全一致(ポートを含む)で比較されます。Origin のないリクエストは常に受け入れられます(curl、ゲートウェイ、ブラウザー以外の MCP クライアント)。また、ディスカバリー文書 /.well-known/oauth-protected-resource は対象外です。明示的に無効にするには * を指定します。空の値は無効化を意味しません。 |
MCP_HTTP_VALIDATE_TOKEN | false | OAuth モード:リクエストを処理する前に、各 Bearer を BoondManager に照会して検証します(GET /application/current-user。デフォルト 60 秒の MCP_HTTP_TOKEN_VALIDATION_TTL_MS の間、トークンごとにキャッシュされます)。期限切れまたは取り消し済みのトークンには 401 + WWW-Authenticate: … error="invalid_token" が返され、準拠した MCP クライアントはこれを新たな認可に切り替えます。このオプションがない場合、401 はツール呼び出しの結果にのみ現れるため、クライアントは OAuth を再試行しません。BoondManager に接続できない場合はリクエストを通します(フェイルオープン)。 |
OAuth2 変数 — ディスカバリー(すべて任意)
| 変数 | デフォルト | 説明 |
|---|---|---|
BOOND_OAUTH_AUTHORIZATION_SERVER | https://ui.boondmanager.com | BoondManager の認可サーバーの Issuer。authorization_servers で通知されます |
BOOND_OAUTH_SCOPES | (空) | scopes_supported で通知されるスコープ(スペースまたはカンマ区切り)。空の場合、クライアントは Boond と直接ネゴシエーションします。 |
ステートレス(デフォルト):各 HTTP POST リクエストは独立しており、複数の MCP サーバーを多重化するゲートウェイに最適です。サーバー側にセッションは保持されません。
ステートフル:サーバーは初期化時に Mcp-Session-Id を生成し、クライアントは以降の各リクエストでこれを返す必要があります。SSE ストリーミングやサーバー通知を利用できるネイティブ MCP クライアントに便利です。
例:ディスカバリー + 401 チャレンジ
# Public, pas d'auth -> documente OU envoyer le user pour autoriser
curl -s http://localhost:3000/.well-known/oauth-protected-resource | jq .
# {
# "resource": "http://0.0.0.0:3000/mcp",
# "authorization_servers": ["https://ui.boondmanager.com"],
# "bearer_methods_supported": ["header"]
# }
# Appel MCP sans token -> 401 + WWW-Authenticate qui pointe vers la discovery
curl -s -o /dev/null -w "%{http_code}\n%header{www-authenticate}\n" \
-X POST http://localhost:3000/mcp -d '{}'
# 401
# Bearer realm="http://0.0.0.0:3000/mcp", resource_metadata="http://0.0.0.0:3000/.well-known/oauth-protected-resource/mcp"
例:HTTP 経由で Claude Code を使用
MCP Authorization 2025-06-18 仕様に準拠した MCP クライアントでは、OAuth ディスカバリーが自動的に行われます:
claude mcp add --transport http boondmanager https://mcp.votre-domaine.com/mcp
# Le client recoit le 401 + WWW-Authenticate, fetch la metadata, ouvre
# le navigateur pour autoriser l'App BoondManager, puis re-emet la requete
# avec le Bearer token recu.
例:Docker(公式イメージ)
すぐに使えるDockerイメージが、各リリース時に2つのミラーレジストリでマルチアーキテクチャ(linux/amd64 + linux/arm64)として公開されます:
| レジストリ | イメージ | ページ |
|---|---|---|
| GitHub Container Registry | ghcr.io/silamir/boondmanager-mcp-server | github.com/silamir/boondmanager-mcp-server/pkgs/container/boondmanager-mcp-server |
| Docker Hub | docker.io/fauguste/boondmanager-mcp-server | hub.docker.com/r/fauguste/boondmanager-mcp-server |
ダイジェストとタグは同一です。お使いのツールに合うレジストリを選んでください。イメージはデフォルトでHTTPトランスポートを使用し、ポート3000、インターフェース0.0.0.0で起動します。ボリュームも、保存するシークレットも必要ありません。サーバーは設計上ステートレスです。
# Via GHCR (authentification GitHub si registre prive)
docker run -d --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp \
--name boondmanager-mcp \
ghcr.io/silamir/boondmanager-mcp-server:latest
# Ou via Docker Hub (anonyme)
docker run -d --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp \
--name boondmanager-mcp \
fauguste/boondmanager-mcp-server:latest
両方のレジストリで利用できるタグ:各安定版リリースの:latest、:X、:X.Y、:X.Y.Z(本番環境では正確なバージョンを推奨します)。プレリリース(例::2.0.0-alpha)は固定タグでのみ公開され、:latest、:X、:X.Yは更新されません。対応する環境変数については、設定とトランスポートをご覧ください。
例:docker-compose
リポジトリには、すぐに使えるdocker-compose.ymlが含まれています。単一のステートレスなサービスで、ボリュームもサーバー側のシークレットも必要ありません。
# Optionnel : surcharger MCP_HTTP_PUBLIC_URL si fronted par un reverse proxy
cp .env.example .env
docker compose up -d
docker compose logs -f mcp
セキュリティ:HTTPサーバーはステートレスで、BoondManagerのシークレットを保存しません。各ユーザーは自身のOAuth2トークン(自身のBoondManagerアプリから取得)を使ってサーバーを認証し、すべての操作はBoondの監査ログにそのユーザーのIDで記録されます。リバースプロキシの背後で使用する場合は、TLS(HTTPS)を終端し、
Authorizationヘッダーを転送して、検出処理が正しく行われるようにMCP_HTTP_PUBLIC_URLを公開URLに設定してください。
Claude以外のリモートクライアント(ChatGPT、OpenAI / Gemini Agents SDK)
MCPはモデルに依存しないプロトコルです。同じHTTP/OAuth2エンドポイントを、Claudeに限らず、MCP対応ホストからそのまま利用できます。LLM固有のパッケージやビルドは不要です。ホストにMCP_HTTP_PUBLIC_URLを指定するだけです。
| ホスト | サーバーの接続方法 |
|---|---|
| ChatGPT(コネクター / Developer mode) | HTTP URLを指定するリモートMCPコネクターを追加します。OAuth2はメタデータ/.well-known/oauth-protected-resourceを通じて検出されます。 |
| OpenAI Agents SDK | HTTP URLとOAuth2フローを指定して、HostedMCPTool / リモートMCPサーバーを宣言します。 |
| Google Gemini(Agents SDK / Vertex) | SDK側でリモートMCPサーバーを登録します。ローカルでは、Gemini CLI拡張機能(インストールを参照)がstdioトランスポートに対応しています。 |
契約はHTTP上のClaude Codeと同じです(上記のclaude mcp add --transport httpの例を参照)。異なるのは、クライアント側でサーバーを宣言する方法だけです。
使用例
設定が完了したら、Claude に次のように依頼できます。
CRM&営業
- 「パリで React のスキルを持つ候補者を検索して」
- 「リソース #12345 の技術的な詳細を表示して」
- 「Acme Corp に新しい連絡先 Jean Dupont を作成して」
- 「進行中の商談をすべて一覧表示して」
- 「商談 #20 のポジショニングは?」
プロジェクト管理
- 「会社 #42 のプロジェクト Mission Alpha を作成して」
- 「プロジェクト #33 のスケジュールを表示して」
- 「プロジェクト #55 の発注書は?」
- 「プロジェクト #12 の生産性を表示して」
請求&財務
- 「支払い待ちの請求書を検索して」
- 「会社 #100 の仕入先請求書を一覧表示して」
- 「プロジェクト #55 の購入内容を表示して」
人事&勤怠
- 「リソース #100 の2025年3月分のタイムシートを表示して」
- 「今月予定されている休暇を一覧表示して」
- 「リソース #200 の経費精算書を表示して」
- 「リソース #50 の福利厚生は?」
アクティビティの追跡
- 「候補者 #789 に関する最近のアクションは?」
- 「承認待ちの項目を表示して」
- 「自分の ToDo リストのタスクを一覧表示して」
レポート
- 「全体概要レポートを表示して」
- 「リソースの生産性レポートは?」
管理
- 「アクションタイプの辞書を取得して」
- 「支店と事業部を一覧表示して」
- 「設定済みの Webhook を表示して」
アーキテクチャ
boondmanager-mcp-server/
├── src/
│ ├── index.ts # Point d'entree MCP (selection du transport)
│ ├── server.ts # Factory createMcpServer() + liste des domaines
│ ├── constants.ts # Configuration, API paths, onglets
│ ├── types.ts # Types TypeScript (JSON:API)
│ ├── transports/
│ │ └── http.ts # Transport Streamable HTTP (gateway/remote)
│ ├── services/
│ │ └── boond-client.ts # Client HTTP API BoondManager
│ ├── schemas/
│ │ └── index.ts # Schemas Zod (validation des entrees)
│ └── tools/
│ ├── index.ts # Barrel export de tous les domaines
│ ├── crud-factory.ts # Factory generique CRUD (DRY)
│ ├── candidates.ts # 10 outils (CRUD + 5 onglets)
│ ├── resources.ts # 20 outils (CRUD + 10 onglets + references/timesheets)
│ ├── contacts.ts # 11 outils (CRUD + 6 onglets)
│ ├── companies.ts # 14 outils (CRUD + 9 onglets)
│ ├── opportunities.ts # 10 outils (CRUD + 5 onglets)
│ ├── projects.ts # 12 outils (CRUD + 7 onglets)
│ ├── actions.ts # 5 outils
│ ├── timesheets.ts # 3 outils
│ ├── invoices.ts # 5 outils
│ ├── orders.ts # 5 outils
│ ├── deliveries.ts # 2 outils
│ ├── absences.ts # 5 outils
│ ├── expenses.ts # 5 outils
│ ├── products.ts # 5 outils
│ ├── positionings.ts # 4 outils
│ ├── payments.ts # 2 outils
│ ├── advantages.ts # 2 outils
│ ├── contracts.ts # 2 outils
│ ├── purchases.ts # 4 outils
│ ├── provider-invoices.ts # 2 outils
│ ├── accounts.ts # 2 outils
│ ├── agencies.ts # 2 outils
│ ├── business-units.ts # 2 outils
│ ├── poles.ts # 2 outils
│ ├── roles.ts # 2 outils
│ ├── calendars.ts # 2 outils
│ ├── flags.ts # 2 outils
│ ├── webhooks.ts # 2 outils
│ ├── logs.ts # 2 outils
│ ├── notifications.ts # 2 outils
│ ├── threads.ts # 2 outils
│ ├── todolists.ts # 2 outils
│ ├── validations.ts # 2 outils
│ ├── reporting.ts # 5 outils
│ ├── planning-absences.ts # 1 outil
│ └── application.ts # 2 outils
├── dist/ # Build JavaScript
├── .github/ # CI/CD, templates, Dependabot
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── eslint.config.js
└── README.md
トラブルシューティング
*_search ツールで「JSON Schema declares an unsupported dialect (draft-07)」が発生する
症状。 検索ツール(boond_candidates_search、boond_resources_search、
boond_opportunities_search など)が常に失敗する一方、レコード取得ツール
(boond_*_get)、辞書、テキストワークフローは正常に動作します。この非対称性が
診断の手掛かりです。outputSchema を宣言する約59個のツールだけが影響を受けます。
ホストがコンパイルするのはこのスキーマであり、ツールの登録時、つまり呼び出しより前
です。ツールが失敗するのではなく、使用できなくなります。
原因。 バージョン 2.1.0 から 2.12.1 では、スキーマに "$schema": "http://json-schema.org/draft-07/schema#"
が指定されていました(MCP SDK は target: 'draft-7' を固定値として、Zod スキーマを変換します)。
2020-12 のみをサポートするバリデーターで検証するホストは、このスキーマをコンパイルできません。
修正方法:バージョン >= 2.12.2 に更新してください。 このバージョン以降、サーバーは
いずれの方言も指定しません(src/schema-dialect.ts)。テストスイートでは、実際のクライアントを使い、
2020-12 と draft-07 の両方のバリデーターで185個すべてのツールを検証しています。
コネクターを再起動するだけでは解決しません。再起動するとインストール済みのバイナリが再実行されるだけで、更新はされません。カタログに表示されるバージョンではなく、実際に読み込まれているバージョンを確認してください。
# npm / npx : quelle version est resolue et depuis quel cache
npm view boondmanager-mcp-server version
npx --yes boondmanager-mcp-server@latest --version 2>/dev/null || true
# Le serveur annonce sa version dans la reponse `initialize` (champ serverInfo.version),
# lue depuis son propre package.json -- c'est la seule source fiable.
インストール方法に応じて、次の手順で更新してください。
| 方法 | 更新 |
|---|---|
Claude Desktop 拡張機能(.mcpb) | 最新リリースの .mcpb をダウンロードして再インストールします。サードパーティー製の拡張機能は自動更新されません |
| Claude Code プラグイン | /plugin marketplace update boondmanager を実行してから、プラグインを再インストールします(起動時に [email protected] に固定されます) |
claude mcp add/手動設定 | npx コマンドで boondmanager-mcp-server@latest(またはバージョン >= 2.12.2)を指定します |
| Docker/GHCR | docker pull ghcr.io/silamir/boondmanager-mcp-server:latest |
Node のバージョンも確認してください。サーバーには Node.js >= 22 が必要です。 Node 20 のままの端末は、一般にインストールが長期間更新されていません。
セキュリティ
- BoondManager の認証情報(JWT または BasicAuth)が MCP プロトコル経由で送信されることはありません。サーバー側の環境変数としてのみ設定されます。
- stdio モードでは、サーバーはローカルで実行され、ネットワークポートは公開されません。
- streamable HTTP モードでは、認証は OAuth2 protected resource です。各 MCP リクエストには個別の
Authorization: Bearer <token>が含まれます(サーバーはシークレットを保存しません)。TLS(リバースプロキシ経由の HTTPS)を終端し、Authorizationヘッダーを転送し、MCP_HTTP_PUBLIC_URLを公開 URL に設定して、MCP_HTTP_ALLOWED_HOSTSで DNS リバインディング対策を有効にしてください。ネットワークからのアクセスもゲートウェイに制限してください。詳細は docs/oauth.md をご覧ください。 - ISO 27001 の要件に準拠しています。
- BoondManager API はフランスでホストされ、GDPR に準拠しています。
- BoondManager の認証方式:JWT(推奨)、BasicAuth、またはコンポーネントから自動生成される JWT
開発
# Mode watch pour le developpement
npm run dev
# Build
npm run build
# Lancer le serveur
npm start
# Tests
npm test # 645 tests
npm run test:coverage # Avec couverture
# Qualite
npm run lint
npm run typecheck
技術スタック
- ランタイム:Node.js >= 22(ES2022)
- 言語:TypeScript 5.8+(厳格モード)
- MCP SDK:@modelcontextprotocol/sdk 1.12+
- バリデーション:Zod 4
- テスト:Vitest 4 + V8 カバレッジ
- Lint:ESLint 10 + typescript-eslint
- トランスポート:stdio(デフォルト)+ Streamable HTTP(MCP 2025-11-25 仕様)
リソース
- BoondManager API ドキュメント
- BoondManager Postman コレクション
- MCP 仕様
- pyboondmanager(Python リファレンス)
- 自動生成ツールカタログ(TOOLS.md)
- 配布とマーケットプレイス(docs/distribution.md)
ライセンス
Apache License 2.0 — Copyright (c) 2025-2026 Silamir。 Frederic Auguste が最初に作成しました。
詳細については、LICENSE および NOTICE をご覧ください。
BoondManager は BoondManager SAS の商標です。本プロジェクトは、BoondManager SAS と提携関係にない、BoondManager 公開 API 用の独立した非公式クライアントです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。