HelloAsso について
HelloAsso は、HelloAsso v5 API を公開する Rust 製 MCP サーバーで、団体の会員、イベント、寄付、支払い、返金、チェックアウトを扱います。団体や運営担当者向けに、自然な期間・フォーム指定、入金集計、金銭操作の確認機能を備えています。
主な機能
- 01HelloAsso v5 API の各ルートへのアクセス
- 02フォーム、会員、売上の検索と管理
- 03フォーム、方法、月別の入金集計
- 04返金とキャンセルに確認を要求
- 05読み取り専用モードとツールセット設定
活用シーン
- 01会員の支払い状況の確認
- 02イベント参加者とチケット販売の確認
- 03期間を指定した入金の集計
- 04明示的な確認を伴う返金処理
MCP 対応
MCP サーバーは、6つのツールセットにわたる38個のツールに加え、リソースとプロンプトを MCP クライアントに提供します。既定の STDIO と HTTP トランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e HELLOASSO_CLIENT_ID -e HELLOASSO_CLIENT_SECRET -e HELLOASSO_ORGANIZATION -e HELLOASSO_READ_ONLY -e HELLOASSO_ENVIRONMENT ghcr.io/edouard-claude/helloasso-mcp:0.1.1HELLOASSO_CLIENT_IDAPI client id (back office: My account, Integrations and API)HELLOASSO_CLIENT_SECRETシークレットAPI client secretHELLOASSO_ORGANIZATIONOrganization slug tools default to (found automatically for an association client)HELLOASSO_READ_ONLY1 to withhold every write tool (refunds, cancellations, checkouts)HELLOASSO_ENVIRONMENTproduction or sandboxローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/edouard-claude/helloasso-mcp:0.1.1stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-helloasso
あなたの団体のHelloAssoに、質問して答えてもらいましょう。
単一のRustバイナリで、HelloAsso v5 API全体 — 会員登録、チケット、寄付、支払い、返金、チェックアウト — をあらゆるMCPクライアントから利用できます。
🇫🇷 HelloAsso向けMCPサーバー:会員、チケット販売、寄付、支払い、返金について、Claude、Cursor、またはあらゆるMCPクライアントから自然言語で問い合わせられます。
アシスタントに 「先月はいくら集まりましたか?」、「Camille Martinの会費は支払い済みですか?」、「ガラの参加者リストをください」 と尋ねるだけで、会計担当者が照合に使っているHelloAssoから回答を得られます。
> how much did we collect in September, and on what?
summarize_payments 2026-09 · 214 payments read
collected 8 342,00 € (196 authorized)
Membership/adhesion-2026 5 160,00 € 61.9%
Event/gala-2026 2 730,00 € 32.7%
Donation/dons 452,00 € 5.4%
by means: Card 7 912,00 € · Sepa 430,00 €
refunded 60,00 € · 3 refused · 1 contested
> who registered for the gala, with their dietary answers?
list_form_items form_url = helloasso.com/associations/les-amis-du-velo/evenements/gala-2026
item_states = Processed, Registered · with_details = true
87 participants, 3 tiers, custom field "Régime alimentaire"
HelloAssoのURLを貼り付けて、「先月」と伝え、人物名を指定してください。サーバーが団体、フォーム、期間、ページネーションを解決します。
選ばれる理由
HelloAssoのAPIはすっきりとしたRESTインターフェースですが、そのままLLMに渡すと、よくある問題が起きます。金額はセント単位であり、フォームは誰も覚えていない (タイプ、スラッグ) の組み合わせで、日付範囲は片側が開いており、トークンは30分ごとに期限切れになります。そして最も重要な呼び出しである返金は、取り消しできないまま実際のお金を返します。
- API全体を網羅し、隠し機能はありません。 公開v5仕様の全36ルートにそれぞれ1つのツールを用意し、さらに
whoamiとsummarize_paymentsを追加しています。これらは、APIにクライアント向けの「自分は誰か」という機能も集計機能もないために用意しました。この数が減るとテストが失敗します。 - 識別子ではなく、URL、言葉、期間で操作できます。 すべてのフォームツールにはフォームの公開URLを渡します。フォームタイプは英語、フランス語、URL表記(
evenements、adhésions)で指定できます。期間はlast month、2026-09、last 30 daysで指定できます。人物はsearchで検索します。 - 金額を正しく集計できます。
summarize_paymentsはすべてのページをたどり、フォーム、支払い方法、月ごとに、実際に 集金された金額(Authorized)をセントとユーロで集計します。モデルが1ページ目の金額を合計して総額とすることはありません。 - 資金を動かす処理は、確認がなければ実行しません。
refund_paymentとcancel_orderはconfirm: trueがなければ実行を拒否し、その際に金額と支払者を明示するため、確認に必要な情報を得られます。HELLOASSO_READ_ONLY=1を設定すると、すべての書き込みツールが利用できなくなります。 - HelloAssoの指定どおりにOAuthを処理します。 最初に
client_credentialsを使い、その後はrefresh_tokenを使います。APIの要件に従い、トークンの更新が機能する間は新しい認可を取得しません。サーバー側でトークンが取り消されても、透過的に更新されます。 - モデルが読み取りやすい設計です。 38個すべてのツールにスキーマ付きの構造化出力とアノテーションを用意しています。資金を扱う前に確認を求めるプロンプトが4つあり、サーバー指示には冒頭で金額がセント単位であることを明記しています。
インストール
ビルド済みバイナリ(macOS、Linux、Windows)
お使いのプラットフォーム用のアーカイブを
最新リリースからダウンロードし、
.sha256と照合してから、mcp-helloassoをPATHに追加します。
# macOS on Apple silicon; swap the target for x86_64-apple-darwin,
# x86_64-unknown-linux-gnu or aarch64-unknown-linux-gnu
V=v0.1.1 T=aarch64-apple-darwin
curl -LO https://github.com/edouard-claude/helloasso-mcp/releases/download/$V/mcp-helloasso-$V-$T.tar.gz
tar xzf mcp-helloasso-$V-$T.tar.gz
sudo mv mcp-helloasso-$V-$T/mcp-helloasso /usr/local/bin/
Windowsの場合は、x86_64-pc-windows-msvc.zipアーカイブを使用します。
ソースから(Rust 1.88以降を使用できる任意のプラットフォーム)
git clone https://github.com/edouard-claude/helloasso-mcp
cd helloasso-mcp
cargo build --release
# the binary is at target/release/mcp-helloasso
cargo installを使用
cargo install --git https://github.com/edouard-claude/helloasso-mcp
Dockerを使用
docker run --rm -i \
-e HELLOASSO_CLIENT_ID=… -e HELLOASSO_CLIENT_SECRET=… \
ghcr.io/edouard-claude/helloasso-mcp:latest
または、docker build -t mcp-helloasso .を実行して自分でビルドします。
このサーバーは、公式MCPレジストリに
io.github.edouard-claude/helloasso-mcpとして登録されているため、レジストリ対応のクライアントでは、入力が必要な変数とともに直接利用できます。
イメージは非特権ユーザーで実行され、デフォルトではstdioで通信します。HTTPトランスポートを使用するには--httpを追加します。HTTPで実行するをご覧ください。
API認証情報を取得する
所属団体のHelloAsso管理画面で、My account → Integrations and API
(Mon compte → Intégrations et API)を開きます。組織を対象範囲として、AccessPublicData、AccessTransactions、Checkoutの権限が付与されたクライアントIDとクライアントシークレットを取得できます。パートナーはHelloAssoのパートナーチームから取得してください。
クライアントを接続する前に、設定が正しいことを確認します。
HELLOASSO_CLIENT_ID=… HELLOASSO_CLIENT_SECRET=… mcp-helloasso --check
environment production
base url https://api.helloasso.com/v5
toolsets organization, forms, sales, checkout, directory, partner
read only false
tools 38
token ok
reachable 1 organization(s)
Les Amis du Vélo (les-amis-du-velo) as OrganizationAdmin
organization Les Amis du Vélo (les-amis-du-velo)
ready.
設定
| 変数 | 必須 | デフォルト | 内容 |
|---|---|---|---|
HELLOASSO_CLIENT_ID | はい | APIクライアントID | |
HELLOASSO_CLIENT_SECRET | はい | クライアントシークレット | |
HELLOASSO_CLIENT_SECRET_FILE | Docker secrets用のシークレットを格納したファイル | ||
HELLOASSO_ACCESS_TOKEN | クライアントの代わりに使用する、すぐに使えるベアラートークン | ||
HELLOASSO_ENVIRONMENT | production | sandboxを指定するとapi.helloasso-sandbox.comを使用 | |
HELLOASSO_ORGANIZATION | ツールがデフォルトで使用する組織のスラッグ | ||
HELLOASSO_TOOLSETS | all | organization,forms,sales,checkout,directory,partner | |
HELLOASSO_READ_ONLY | 0 | 1にすると、すべての書き込みツールを無効化 | |
HELLOASSO_TIMEOUT_SECS | 30 | リクエストごとのタイムアウト | |
HELLOASSO_MAX_RETRIES | 3 | 429および一時的な5xxエラー時の再試行回数 | |
HELLOASSO_BASE_URL | 環境ごと | APIルートの上書き | |
HELLOASSO_TOKEN_URL | 環境ごと | トークンエンドポイントの上書き | |
HELLOASSO_HTTP_BIND | HTTPトランスポートのリッスンアドレス | ||
HELLOASSO_HTTP_TOKEN | HTTPトランスポートで必要なベアラートークン | ||
HELLOASSO_LOG | info | warn、debug、mcp_helloasso=debugなど |
組織の指定。 団体のクライアントがアクセスできる組織は1つだけで、サーバーが自動的に特定します。複数の組織にアクセスできるパートナークライアントの場合、候補の一覧が返されます。HELLOASSO_ORGANIZATIONを設定するか、呼び出しごとにorganizationを渡してください。不正な形式の変数があるとバイナリは起動を拒否し、問題のある変数名を示します。
クライアントを接続する
Claude Code
claude mcp add helloasso --scope user \
--env HELLOASSO_CLIENT_ID=… \
--env HELLOASSO_CLIENT_SECRET=… \
-- /absolute/path/to/mcp-helloasso
Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"helloasso": {
"command": "/absolute/path/to/mcp-helloasso",
"env": {
"HELLOASSO_CLIENT_ID": "…",
"HELLOASSO_CLIENT_SECRET": "…",
"HELLOASSO_READ_ONLY": "1"
}
}
}
}
まず読み取り専用で開始し、設定に問題がないと確認できたら解除してください。
Cursor、Windsurf、Zedなどのstdioクライアント
同じ形式です。commandでバイナリを指定し、認証情報をenvに設定します。サーバーはstdioトランスポートで通信し、標準出力にはプロトコル以外を出力しません。ログは標準エラー出力に出力されます。
HTTP経由の任意のクライアント
サーバーを--http 127.0.0.1:8080で起動した後、http://127.0.0.1:8080/mcpを指定します。以下をご覧ください。
次に、*「どのHelloAsso組織に接続していますか?」*と尋ねてください。whoamiが所属団体の名前を返すはずです。
ツール
6つのツールセットに38個のツールがあり、
公開 v5 仕様の36個のルートをカバーしています。
HELLOASSO_TOOLSETSで登録するツールセットを選択できます。HELLOASSO_READ_ONLY=1を設定すると、読み取り専用を宣言しているツールのみが残ります。
sales — 注文、商品、支払い、会計担当者向けの情報
| ツール | ルート | |
|---|---|---|
summarize_payments | composite | 期間ごとの合計:徴収額、フォーム別、平均、月別、返金 |
list_orders | GET /organizations/{org}/orders | 注文を期間、人物、フォームの種類で一覧表示 |
list_form_orders | GET …/forms/{type}/{slug}/orders | 1つのフォームの注文 |
get_order | GET /orders/{id} | 1件の注文:支払者、商品、支払い、返金の可否 |
cancel_order | POST /orders/{id}/cancel | 今後の分割払いを停止 — confirm: true |
list_items | GET /organizations/{org}/items | チケット、会員資格、寄付:参加者 |
list_form_items | GET …/forms/{type}/{slug}/items | イベントの参加者、キャンペーンの会員 |
get_item | GET /items/{id} | 1件の商品。カスタムフィールドとチケット URL を含む |
list_payments | GET /organizations/{org}/payments | 支払いを期間、人物、状態で一覧表示 |
list_form_payments | GET …/forms/{type}/{slug}/payments | 1つのフォームの支払い |
get_payment | GET /payments/{id} | 1件の支払い。返金操作と領収書を含む |
refund_payment | POST /payments/{id}/refund | 全額または一部の返金。MFA 対応 — confirm: true |
export_cash_out | GET /organizations/{org}/cash-out/{id}/export | 支払金の詳細を JSON、CSV、Excel で出力 |
forms — キャンペーン
| ツール | ルート | |
|---|---|---|
list_forms | GET /organizations/{org}/forms | すべてのフォームを状態と種類で一覧表示 |
list_form_types | GET /organizations/{org}/formTypes | 使用中の種類 |
get_form | GET …/forms/{type}/{slug}/public | フォームの全情報:料金区分、価格、カスタムフィールド |
get_form_stats | GET …/forms/{type}/{slug}/stats | 料金区分ごとの参加者と売上 |
quick_create_event | POST …/forms/Event/action/quick-create | 料金区分を含むイベントを1回の呼び出しで作成 |
update_form_state | PUT …/forms/{type}/{slug}/state | 公開、非表示、無効化 — 削除には confirm: true が必要 |
list_activity_types | GET /values/form/{type}/types | フォームの種類に対応するサブタイプ |
checkout — 支払いリンク
| ツール | ルート | |
|---|---|---|
create_checkout_intent | POST /organizations/{org}/checkout-intents | 一括または分割払いの金額指定支払いリンクを作成 |
get_checkout_intent | GET /organizations/{org}/checkout-intents/{id} | 支払い結果と、支払い完了後の注文 |
organization — 組織とその情報
| ツール | ルート | |
|---|---|---|
whoami | composite | 環境、クライアント、デフォルトの組織とそのプロフィール |
get_organization | GET /organizations/{org} | 組織の公開プロフィール |
list_my_organizations | GET /users/me/organizations | このクライアントが役割を持つ組織 |
list_organization_categories | GET /values/organization/categories | 参照リスト |
list_company_legal_statuses | GET /values/company-legal-status | 参照リスト |
directory — HelloAsso の公開ディレクトリ
| ツール | ルート | |
|---|---|---|
search_organizations | POST /directory/organizations | 名前、場所、カテゴリ、タグで検索 |
search_forms | POST /directory/forms | テキスト、場所、日付、種類、価格、タグで検索 |
get_tag | GET /tags/{name} | 1つのタグ。使用回数と金額を含む |
list_public_tags | GET /values/tags | すべての公開タグ |
partner — HelloAsso パートナー向け
| ツール | ルート | |
|---|---|---|
get_partner | GET /partners/me | パートナーアカウント |
list_partner_organizations | GET /partners/me/organizations | パートナーを認証した組織 |
update_partner_domain | PUT /partners/me/api-clients | OAuth リダイレクトドメイン |
set_notification_url | PUT /partners/me/api-notifications | メインまたはイベントタイプごとの Webhook URL |
delete_notification_url | DELETE /partners/me/api-notifications | 削除します — confirm: true |
set_organization_notification_url | PUT /partners/me/api-notifications/organizations/{org} | 組織ごとの Webhook |
delete_organization_notification_url | DELETE /partners/me/api-notifications/organizations/{org} | 削除します — confirm: true |
リソースとプロンプト
関数の呼び出しよりも、コンテキストの添付を好むクライアント向けに、3 つのリソースと 2 つのテンプレートを用意しています。
| URI | |
|---|---|
helloasso://organization | デフォルトの組織のプロフィール |
helloasso://forms | その組織のフォーム |
helloasso://my-organizations | クライアントがアクセスできるすべての組織 |
helloasso://forms/{form_type}/{form_slug} | 1 つのフォームの全情報 |
helloasso://orders/{order_id} | 1 つの注文の全情報 |
団体が実際に実行するワークフローを、4 つのプロンプトで進めます。
treasury_report— 合計、キャンペーン別の内訳、平均、返金、注目すべき点を、フランス式の数値表記でまとめます。何も書き込みません。find_person— ある人物が行ったすべてのことを確認します。会員登録、チケット、支払い、保留中の項目を調べます。何も書き込みません。attendee_list— フォームのすべての参加者と回答を一覧にし、最後のページまで確認してフォームの統計と照合します。何も書き込みません。refund_request— 支払いを見つけ、返金の適格性を確認し、提案します。その後、停止して待機し、返金して結果を読み戻します。
実際の動作に基づく HelloAsso
以下はすべて実際の API で確認済みで、サーバーが処理し、次に HelloAsso を統合する人も同じ問題に直面するため、記録しています。
| 起きること | このサーバーの動作 |
|---|---|
アクセストークンの有効期間は30分で、HelloAssoは新しいグラントではなく、refresh_token での更新を必須としています | 1分早く更新し、まずリフレッシュを試み、拒否された場合にのみ新しいグラントを取得します |
| トークンは有効期限前に取り消されることがあります | 401 が返るとトークンを破棄し、新しいトークンで1回だけ再試行します |
| 金額はすべてセント単位の整数です | サーバーの指示と各ツールの説明で明示しています。summarize_payments はユーロも追加します |
フォームは (organization, type, slug) で指定します | すべてのフォーム用ツールで公開 URL とフランス語の種別名も指定できます |
日付フィルターは半開区間です。to は含まれません | 期間(2026-09、last month)を適切な [from, to) に変換します |
クエリ文字列内の配列は、キーを繰り返して指定します(states=A&states=B) | その形式で組み立て、カンマ区切りにはしません |
エラー形式は3種類あります。HelloAsso の errors[]、ASP.NET の検証マップ、OAuth の error です | いずれも1つのメッセージに読み込み、コードは data に含めます |
403 には insufficient Privileges としか表示されません | そのルートで仕様上必要な権限名と、権限を付与する相手を示します |
協会自身のクライアントでは、ディレクトリ、タグ、アクティビティ種別、パートナーの各ルート(FormOpenDirectory、OrganizationOpenDirectory、FormAdministration、パートナー用クライアント)を呼び出せません | これらのツールはパートナー向けに登録されたままです。協会のクライアントで使用すると、不足している権限を返します |
一覧取得の多く(注文、アイテム、支払い、ディレクトリ)では合計数とページ数が -1 と報告され、継続トークンでページネーションします | -1 は件数として表示せず、トークンを提示します。summarize_payments は最後までページをたどります |
| 返金には強固な認証が必要です | MFA ヘッダーを任意の引数として公開し、どのヘッダーが必要かをエラーで示します |
quick-create が対応しているのはイベントのみです | quick_create_event として公開し、その旨を明示します |
現金払出しのエクスポート形式は Accept ヘッダーから JSON、CSV、Excel のいずれかに決まり、CSV の先頭にはバイトオーダーマークがあります | export_cash_out は format を受け取り、BOM を削除します |
CDN は User-Agent がないリクエストを拒否します | すべてのリクエストに mcp-helloasso/<version> を付けます |
| 429 と一時的な 5xx | Retry-After に従ってバックオフしながら再試行します |
安全性
財務情報の閲覧は慎重さが必要ですが、変更にはそれ以上の注意が必要です。デフォルトでは慎重な動作を優先します。
- 金銭に関わる操作は、確認できなければ拒否します。
refund_payment、cancel_order、フォームの削除、Webhook の削除は、confirm: trueがなければ拒否します。返金を拒否する際は、まず支払いを読み込み、「支払い 67890(Camille Martin による 25.00 €、承認済み)は全額返金されます」と表示するため、利用者は実際に表示された内容を確認できます。これら4つにはdestructiveHintの注釈があります。 - 読み取り専用は構造的に保証されます。
HELLOASSO_READ_ONLY=1を設定すると、readOnlyHintの注釈がないルートはすべて除外されます。同期が必要な名前のリストではないため、新しい書き込みツールも構造上除外されます。これを確認するテストがあります。 - HTTP 通信の前に入力を検証します。 スラッグでパスセグメントの外に出ることはできません。チェックアウトの内訳は合計金額と一致する必要があり、URL は
https://で始まり、ID は正の値でなければなりません。 - シークレットが漏れることはありません。
Debugではマスキングされ、トークンエンドポイントにのみ送信され、ツールの回答やログ行にシリアライズされることはありません。whoamiにはクライアント ID の先頭8文字だけが表示され、シークレットは一切表示されません。 - HTTP 経由でディスクに書き込みません。 サーバーに HTTP 経由で接続している場合、
export_cash_outのsave_toは拒否されます。 - プロンプトは最初に確認を求めます。 金銭を動かせる唯一のプロンプトは、明示的な承認があるまで停止し、推測せずに MFA コードを求めます。
HTTP 経由で実行する
mcp-helloasso --http 127.0.0.1:8080
# MCP at http://127.0.0.1:8080/mcp, health at /healthz
ループバック以外では、HELLOASSO_HTTP_TOKEN が設定されていないとサーバーは起動を拒否します。API クライアントは 1 つ、つまりアイデンティティも 1 つです。公開されたエンドポイントは、団体の決済への開かれた入口になります。トークンを設定すると、/mcp へのすべてのリクエストに Authorization: Bearer <token> が必要になります。プローブ用に /healthz は公開されたままです。すべてのセッションで 1 つの OAuth トークンを共有します。
docker run -d --name mcp-helloasso -p 8080:8080 \
-e HELLOASSO_CLIENT_ID=… \
-e HELLOASSO_CLIENT_SECRET=… \
-e HELLOASSO_HTTP_BIND=0.0.0.0:8080 \
-e HELLOASSO_HTTP_TOKEN="$(openssl rand -hex 32)" \
mcp-helloasso
前段に TLS を配置してください。プロセスは平文 HTTP で通信し、それ以外のふりはしません。
検証
cargo test # 79 tests
cargo clippy --all-targets -- -D warnings
cargo fmt --all --check
mcp-helloasso --list-tools # the surface, as registered
mcp-helloasso --check # the configuration, against the live API
テストスイートにはプロトコル自体も含まれています。tests/mcp_stdio.rs は実際のバイナリを起動し、その標準入力に JSON-RPC を送り、返される内容を検証します。ハンドシェイク、スキーマを含む 38 個すべてのツール、URL で指定されたフォーム、期間から変換された日付、回収済みの金額だけを集計するサマリー、確認なしでは拒否され、MFA ヘッダーを付けると送信される返金、読み取り専用モードが対象です。tests/api_contract.rs では、偽の HelloAsso に対するトークンのライフサイクル、再試行、エラーエンベロープを検証し、tests/mcp_http.rs では HTTP トランスポートとベアラー認証ガードを確認します。
src/
├── client.rs REST over HTTP: OAuth2 lifecycle, retries, the three error envelopes
├── config.rs the environment, validated once, with the secret redacted
├── resolve.rs URLs, slugs and form types, and the refusal to guess
├── dates.rs today, last month, 2026-09, last 30 days
├── tools/ one module per toolset, one function per route
├── resources.rs three URIs and two templates
├── prompts.rs four workflows that ask before touching money
└── server.rs capabilities, instructions, and the glue
リリース
Cargo.toml の version を更新し、CHANGELOG.md に該当するセクションを追加してから、タグをプッシュします。
git tag v0.1.1 && git push origin v0.1.1
リリースワークフローでは、タグが Cargo.toml と変更履歴に一致することを確認し、チェックサム付きの 5 つのバイナリをビルドして、ghcr.io/edouard-claude/helloasso-mcp にプッシュします。また、変更履歴の該当セクションをリリースノートとして GitHub リリースを公開します。
コントリビューション
Issue とプルリクエストを歓迎します。cargo test、cargo clippy --all-targets -- -D warnings、cargo fmt --all --check が成功し、新しいツールに説明、アノテーション、出力スキーマが含まれていれば変更の準備は完了です。これらが含まれていない場合は、3 つのテストでわかります。
ライセンス
MIT — LICENSE を参照してください。HelloAsso とは提携していません。HelloAsso はその所有者の商標です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。