mcpField
B
BoondManager MCP Server

BoondManager MCP Server

ローカル
github.comビジネス・マーケティング212 日前に更新

BoondManager MCP Server について

BoondManager MCP Serverは、MCPクライアントをBoondManager ERP/CRM APIに接続し、コンサルティング業務や企業運営を支援します。営業、プロジェクト、財務、人事、管理のレコードを扱うほか、定型ワークフロー向けプロンプトと参照データリソースを提供します。

主な機能

  1. 0142のAPI領域にわたるレコードの検索と管理
  2. 02財務、人事、プロジェクト、CRM操作へのアクセス
  3. 03定型業務向けワークフロープロンプト
  4. 04参照辞書をMCPリソースとして取得
  5. 05主要なCRUDツールの構造化出力

活用シーン

  1. 01営業機会と商談パイプラインの確認
  2. 02プロジェクト配置に向けたコンサルタント検索
  3. 03期限超過の請求書と経費申請の追跡
  4. 04チームの稼働状況とプロジェクト活動の集約

MCP 対応

BoondManager APIの操作をMCPツールとして公開し、ワークフロープロンプトと参照データリソースも提供します。検索、作成、更新、削除の操作は構造化出力に対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
npmboondmanager-mcp-server2.19.2
mcpbboondmanager-mcp-server-v2.19.2.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Silamir

BoondManager MCP サーバー

Silamirのオープンソースプロジェクトです。

CI CodeQL Maintainability Code Coverage npm version npm downloads Node.js TypeScript MCP Registry Docker Hub GHCR License: Apache 2.0

ワンクリックインストール:

Add to Cursor Install in VS Code Install in VS Code Insiders

Glama

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 です)。

目次

対象領域

CRM・営業
領域ツール操作
候補者10CRUD + 情報、技術データ、管理情報、アクション、ポジショニング
リソース20CRUD + 情報、技術データ(+ 更新)、管理情報、福利厚生、アクション、ポジショニング、プロジェクト、作業時間レポート、経費レポート、休暇レポート、タイムシート、参照情報(作成/更新/削除)
連絡先11CRUD + 情報、アクション、商談、プロジェクト、注文、請求書
企業14CRUD + 情報、連絡先、アクション、商談、プロジェクト、注文、請求書、仕入れ、仕入先請求書
商談10CRUD + 情報、アクション、ポジショニング、プロジェクト、シミュレーション
プロジェクト管理
領域ツール操作
プロジェクト12CRUD + 情報、アクション、シミュレーション、納品グループ、注文、仕入れ、生産性
ポジショニング4検索、取得、作成、削除
納品/CRA2検索、取得
仕入れ/外注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検索
管理と設定
領域ツール操作
ユーザーアカウント2search, get
支店2search, get
ビジネスユニット2search, get
部門2search, get
役割2search, get
カレンダー2search, get
フラグ/ラベル2search, get
Webhook2search, get
監査ログ2search, get
通知2search, get
ディスカッションスレッド2search, get
ドキュメント/履歴書4get(ダウンロード)、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_missionN日以内に終了するミッションを予測します(デフォルトは60日)。引き継ぎ先が特定されていない15日以内の終了予定には緊急のマークを付けます。
cartographie_competences対象範囲(チーム/支社)のスキルマップ:上位N件、希少スキル(バスファクター)、過剰なスキル、未充足スキルとオープンな商談の比較。
cvs_a_mettre_a_jourCV/技術資料の鮮度を監査します(陳腐化のしきい値は設定可能)。まもなく市場に出るリソースを優先します。
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
WindowsC:\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_LEVELinfoログレベル: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_AUTHloopback 以外でもキーなしでの起動を明示的に許可するには 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_RETRIES2追加の再試行の最大回数(合計3回試行)。0 にすると再試行を完全に無効にします。
BOOND_HTTP_RETRY_BASE_MS200指数バックオフに使用する基本遅延(base * 2^attempt、ジッターあり)。
BOOND_HTTP_RETRY_MAX_MS5000再試行間の遅延の上限です。
レート制限

ツールのループが暴走して API に過剰な負荷をかけ(429 が連続して発生し)ないよう、クライアントはローカルのトークンバケットを適用します。デフォルトは、継続的なレートが 10 リクエスト/秒、バースト20 です。通常の対話的な使用では影響しません。再試行でもトークンを消費します。

変数デフォルト説明
BOOND_HTTP_RATE_LIMIT_RPS10継続的なレート(リクエスト/秒)。0 にすると完全に無効になります。
BOOND_HTTP_RATE_LIMIT_BURST20バケット容量=即時バーストの最大サイズです。

HTTP OAuth トランスポートでは、バケットはユーザーごと(Bearer から導出した ID)です。あるユーザーのバーストによって、他のユーザーの速度が低下することはありません。stdio と静的認証では ID は1つのみのため、バケットも1つです。制限はプロセス単位ではなく、ID 単位です。

辞書のキャッシュ

BoondManager API が公開しているエンドポイントは /application/dictionary のみで、すべてのラベル(状態、種類、国など)を返します。状態/種類からラベルへの変換のたびに再ダウンロードすることを避けるため、サーバーは辞書をメモリ内にキャッシュします。

変数デフォルト説明
BOOND_DICTIONARY_TTL_MS3600000(1 時間)辞書キャッシュの有効期間(ミリ秒)。数値以外または 0 以下の値が指定された場合は、デフォルト値に戻ります。
ローカルドキュメントのアップロード

boond_documents_create は 3 種類のソースに対応しており、1 回の呼び出しにつき指定できるのは 1 つだけです。

ソース転送方式有効化上限
fileUrlすべて常時—(BoondManager が URL からダウンロード)
filePathstdio のみBOOND_MCP_UPLOAD_DIRSBOOND_MCP_UPLOAD_MAX_BYTES(20 MB)
fileContent(base64)+ fileNameすべて常時2 MB
変数デフォルト説明
BOOND_MCP_UPLOAD_DIRS(なし)ファイルのアップロードを許可するディレクトリ(絶対パス、CSV)。未設定の場合、filePath は無効になります。
BOOND_MCP_UPLOAD_MAX_BYTES20971520ローカルファイルの最大サイズ(バイト)。
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 に変換することもできません。この中継では、ファイルを モデルの出力を経由させずに 転送します。

  1. boond_documents_upload_slot({ fileName }) は、専用の SharePoint ライブラリに一時フォルダーと、事前認証済みの Microsoft Graph アップロードセッション(15 分間有効、1 ファイルのみ、1 回限り)を作成します。
  2. サンドボックスから PUT リクエスト(curl、コマンドを提供)でファイルをアップロードします。
  3. 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_LIBRARYDocuments一時保存ライブラリの名前。

必要最小限の権限での設定:

  • 専用の 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_OPERATIONSread,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 HTTPhttp(別名: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_TRANSPORTstdioHTTP トランスポートを有効にする場合は http
MCP_HTTP_HOST127.0.0.1リッスンするインターフェース(公開する場合は 0.0.0.0)
MCP_HTTP_PORT3000TCP ポート
MCP_HTTP_PATH/mcpMCP エンドポイントの HTTP パス
MCP_HTTP_STATEFULfalseステートフルモード(セッション Mcp-Session-Id)を有効にする場合は true
MCP_HTTP_JSON_RESPONSEfalseJSON 応答(SSE なし)を強制する場合は true
MCP_HTTP_PUBLIC_URL(派生)OAuth2 ディスカバリーの resource と WWW-Authenticate チャレンジで通知される公開 URL。リバースプロキシの背後では必須です。
MCP_HTTP_SESSION_TTL_MS1800000(30 分)ステートフルモードで、セッションを閉じるまでの非アクティブ期間です。
MCP_HTTP_SESSION_SWEEP_INTERVAL_MS300000(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_TOKENfalseOAuth モード:リクエストを処理する前に、各 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_SERVERhttps://ui.boondmanager.comBoondManager の認可サーバーの 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 Registryghcr.io/silamir/boondmanager-mcp-servergithub.com/silamir/boondmanager-mcp-server/pkgs/container/boondmanager-mcp-server
Docker Hubdocker.io/fauguste/boondmanager-mcp-serverhub.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 SDKHTTP 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/GHCRdocker 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 仕様)

リソース

ライセンス

Apache License 2.0 — Copyright (c) 2025-2026 Silamir。 Frederic Auguste が最初に作成しました。

詳細については、LICENSE および NOTICE をご覧ください。

BoondManager は BoondManager SAS の商標です。本プロジェクトは、BoondManager SAS と提携関係にない、BoondManager 公開 API 用の独立した非公式クライアントです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。