mcpField
H
HelloAsso

HelloAsso

本地服务
github.com金融数据02 周前更新

关于 HelloAsso

HelloAsso 是一个 Rust MCP 服务,将 HelloAsso v5 API 提供给社团使用,涵盖会员、活动、捐赠、支付、退款和结账。它面向社团及运营人员,支持自然语言式的日期和表单输入、收款汇总,并为资金操作设置确认要求。

主要功能

  1. 01访问 HelloAsso v5 API 路由
  2. 02搜索和管理表单、会员及销售
  3. 03按表单、方式和月份汇总收款
  4. 04退款与取消操作要求确认
  5. 05只读模式和可配置工具集

适用场景

  1. 01核实会员的付款状态
  2. 02查看活动参加者和票务销售
  3. 03汇总指定期间的收款
  4. 04经明确确认后办理退款

MCP 相关

该服务向 MCP 客户端提供六个工具集中的 38 种工具,以及资源和提示词。默认支持 STDIO,也支持 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"edouard-claude-helloasso": {
"command": "docker",
"args": [
"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.1"
],
"env": {
"HELLOASSO_CLIENT_ID": "<HELLOASSO_CLIENT_ID>",
"HELLOASSO_CLIENT_SECRET": "<HELLOASSO_CLIENT_SECRET>",
"HELLOASSO_ORGANIZATION": "<HELLOASSO_ORGANIZATION>",
"HELLOASSO_READ_ONLY": "<HELLOASSO_READ_ONLY>",
"HELLOASSO_ENVIRONMENT": "<HELLOASSO_ENVIRONMENT>"
}
}
}
}
启动命令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.1
需要配置的环境变量
HELLOASSO_CLIENT_IDAPI client id (back office: My account, Integrations and API)
HELLOASSO_CLIENT_SECRET密钥API client secret
HELLOASSO_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/edouard-claude/helloasso-mcp:0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-helloasso

只需询问,即可获取协会的 HelloAsso 信息。

一个 Rust 二进制程序,可将完整的 HelloAsso v5 API—— 会员、票务、捐赠、付款、退款、结账——提供给任何 MCP 客户端。

Rust MCP HelloAsso API Transports CI Release License MCP Registry Glama Stars

🇫🇷 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 接口,但直接把它交给大模型,常常会出现一些意料之中的问题:金额单位是分,表单由没人记得的 (type, slug) 组合标识,日期范围采用左闭右开,令牌每 30 分钟过期,而最重要的调用——退款——会直接退回真实款项,且无法撤销。

  • 完整 API,不作隐藏。 公共 v5 规范中的全部 36 个路由,各对应一个工具;另有 whoami 和 summarize_payments,因为 API 没有供客户端使用的“我是谁”接口,也没有汇总功能。如果数量减少,测试就会失败。
  • 用 URL、词语和时间段,而不是标识符。 每个表单工具都接受表单的公开 URL。表单类型可用英语、法语或 URL 拼写(evenements、adhésions)识别。时间段可用 last month、2026-09、last 30 days 表示。可通过 search 查找人员。
  • 金额汇总准确无误。 summarize_payments 会遍历所有分页,并按表单、付款方式和月份拆分实际收款额(Authorized),同时提供分和欧元金额——不会让模型把第一页的金额加起来就当作总额。
  • 涉及资金操作时默认拒绝。 refund_payment 和 cancel_order 必须提供 confirm: true 才会运行;拒绝提示会说明金额和付款人,以便用户在充分知情后确认。设置 HELLOASSO_READ_ONLY=1 后,所有写入工具都会被禁用。
  • 按 HelloAsso 的要求处理 OAuth。 先使用一次 client_credentials,之后使用 refresh_token——只要刷新可用,就绝不申请新的授权,这是 API 的要求。服务端撤销令牌后,服务会自动续期。
  • 内容适合模型读取。 全部 38 个工具都有带架构的结构化输出和注释;提供四个提示词,在操作资金前暂停并询问;服务说明则会提前强调:金额单位是分。

安装

预构建二进制文件(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 管理后台中,依次选择:我的账户 → 集成与 API (Mon compte → Intégrations et API)。你会获得一个客户端 ID和一个客户端密钥, 并拥有适用于你所在组织的 AccessPublicData、AccessTransactions 和 Checkout 权限。 合作伙伴可向 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不使用客户端凭据:直接使用现成的 bearer token
HELLOASSO_ENVIRONMENTproductionsandbox 指向 api.helloasso-sandbox.com
HELLOASSO_ORGANIZATION工具默认使用的组织标识
HELLOASSO_TOOLSETSallorganization,forms,sales,checkout,directory,partner
HELLOASSO_READ_ONLY0设为 1 时禁用所有写入工具
HELLOASSO_TIMEOUT_SECS30每个请求的超时时间
HELLOASSO_MAX_RETRIES3遇到 429 和暂时性 5xx 错误时的重试次数
HELLOASSO_BASE_URL按环境而定覆盖 API 根地址
HELLOASSO_TOKEN_URL按环境而定覆盖令牌端点
HELLOASSO_HTTP_BINDHTTP 传输的监听地址
HELLOASSO_HTTP_TOKENHTTP 传输所需的 bearer token
HELLOASSO_LOGinfowarn、debug、mcp_helloasso=debug……

使用哪个组织。 协会的客户端只能访问一个组织,服务会自动查找该组织。合作伙伴的客户端若可访问多个组织,则会收到候选组织列表;请设置 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 应会返回你所在协会的名称。

工具

38 个工具,分为六个工具集,涵盖公共 v5 规范中的 36 个路由。 HELLOASSO_TOOLSETS 用于选择要注册的工具;HELLOASSO_READ_ONLY=1 则仅保留声明为只读的工具。

sales — 订单、项目、付款及财务主管视图
工具路由
summarize_paymentscomposite统计一段时间内的金额:已收款、按表单统计、方式、月份、退款
list_ordersGET /organizations/{org}/orders按时间段、人员或表单类型筛选订单
list_form_ordersGET …/forms/{type}/{slug}/orders某个表单的订单
get_orderGET /orders/{id}单笔订单:付款人、项目、付款、退款资格
cancel_orderPOST /orders/{id}/cancel停止后续分期付款 — confirm: true
list_itemsGET /organizations/{org}/items门票、会员资格、捐赠:相关人员
list_form_itemsGET …/forms/{type}/{slug}/items活动参与者、活动的会员
get_itemGET /items/{id}单个项目,包含自定义字段和门票 URL
list_paymentsGET /organizations/{org}/payments按时间段、人员或状态筛选付款
list_form_paymentsGET …/forms/{type}/{slug}/payments某个表单的付款
get_paymentGET /payments/{id}单笔付款,包含退款操作和收据
refund_paymentPOST /payments/{id}/refund全额或部分退款,支持 MFA — confirm: true
export_cash_outGET /organizations/{org}/cash-out/{id}/export支出的明细,可导出为 JSON、CSV 或 Excel
forms — 活动
工具路由
list_formsGET /organizations/{org}/forms按状态和类型列出所有表单
list_form_typesGET /organizations/{org}/formTypes正在使用的类型
get_formGET …/forms/{type}/{slug}/public完整的表单:等级、价格、自定义字段
get_form_statsGET …/forms/{type}/{slug}/stats各等级的参与者和销售情况
quick_create_eventPOST …/forms/Event/action/quick-create一次调用即可创建包含多个等级的活动
update_form_statePUT …/forms/{type}/{slug}/state发布、隐藏、停用 — 删除需要 confirm: true
list_activity_typesGET /values/form/{type}/types表单类型的子类型
checkout — 付款链接
工具路由
create_checkout_intentPOST /organizations/{org}/checkout-intents一次性付款或分期付款的付款链接
get_checkout_intentGET /organizations/{org}/checkout-intents/{id}付款结果,以及付款后的订单
organization — 组织及相关信息
工具路由
whoamicomposite环境、客户端、默认组织及其资料
get_organizationGET /organizations/{org}组织的公开资料
list_my_organizationsGET /users/me/organizations此客户端拥有某种角色的组织
list_organization_categoriesGET /values/organization/categories参考列表
list_company_legal_statusesGET /values/company-legal-status参考列表
directory — HelloAsso 公共目录
工具路由
search_organizationsPOST /directory/organizations按名称、地点、类别、标签搜索
search_formsPOST /directory/forms按文本、地点、日期、类型、价格、标签搜索
get_tagGET /tags/{name}单个标签及其使用次数和金额
list_public_tagsGET /values/tags所有公开标签
partner — 面向 HelloAsso 合作伙伴
工具路由
get_partnerGET /partners/me合作伙伴账户
list_partner_organizationsGET /partners/me/organizations已授权该合作伙伴的组织
update_partner_domainPUT /partners/me/api-clientsOAuth 重定向域名
set_notification_urlPUT /partners/me/api-notificationsWebhook URL,可设为主 URL 或按事件类型设置
delete_notification_urlDELETE /partners/me/api-notifications移除 — confirm: true
set_organization_notification_urlPUT /partners/me/api-notifications/organizations/{org}按组织设置 Webhook
delete_organization_notification_urlDELETE /partners/me/api-notifications/organizations/{org}移除 — confirm: true

资源和提示词

三个资源和两个模板,供更倾向于在调用函数时附加上下文的客户端使用:

URI
helloasso://organization默认组织的资料
helloasso://forms该组织的表单
helloasso://my-organizations客户端可访问的所有组织
helloasso://forms/{form_type}/{form_slug}某个表单的完整信息
helloasso://orders/{order_id}某个订单的完整信息

四个提示词可驱动协会实际使用的工作流:

  • treasury_report — 总额、各活动的细分、平均值、退款以及值得关注之处,使用法语数字格式。不写入任何内容。
  • find_person — 某个人进行的所有操作:会员资格、门票、付款以及待处理事项。不写入任何内容。
  • attendee_list — 某个表单的所有参与者及其回答,逐页查看到最后一页,并与表单统计数据核对。不写入任何内容。
  • refund_request — 查找付款、检查资格、提出建议、停止并等待,然后退款并重新读取记录。

HelloAsso 的实际运行方式

以下内容均经过实时 API 验证,已由你处理,并记录在此,因为下一个集成 HelloAsso 的人也会遇到同样的问题。

实际情况此服务的处理方式
访问令牌有效期为 30 分钟,HelloAsso 要求使用 refresh_token 刷新令牌,而不是重新授权提前一分钟刷新;优先刷新令牌,只有刷新被拒绝时才重新授权
令牌可能会在过期前被撤销收到 401 时丢弃令牌,并使用新令牌重试一次
所有金额均为以分为单位的整数在服务说明和每个工具描述中注明;summarize_payments 会额外提供欧元金额
表单通过 (organization, type, slug) 定位每个表单工具也接受公开 URL 和法语类型名称
日期筛选采用左闭右开区间:to 为排他将周期(2026-09、last month)转换为正确的 [from, to) 区间
查询字符串中的数组使用重复键(states=A&states=B)按此方式构造,绝不合并为逗号分隔的字符串
错误有三种格式:HelloAsso 的 errors[]、ASP.NET 的验证映射、OAuth 的 error三种格式都会解析为一条消息,并在其 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,并移除字节顺序标记
其 CDN 会拒绝不带 User-Agent 的请求每个请求都会携带 mcp-helloasso/<version>
429 和临时性 5xx 错误使用退避策略重试,并遵循 Retry-After

安全性

读取资金账目属于敏感操作;修改账目则更为敏感。默认设置倾向于谨慎处理。

  • 资金操作默认拒绝。 refund_payment、cancel_order、删除表单和移除 webhook 均会在缺少 confirm: true 时拒绝操作。拒绝退款时,会先读取付款信息,并提示 "付款 67890(Camille Martin 支付的 25.00 €,状态为 Authorized)将被全额退款",让操作者确认实际看到的信息。这四个工具均标注了 destructiveHint。
  • 只读限制是结构性实现的。 HELLOASSO_READ_ONLY=1 会移除所有未标注 readOnlyHint 的路由,无需维护一份需保持同步的保留名称列表,因此新写入工具也会自然排除在外。测试对此有断言。
  • 发送 HTTP 请求前会检查输入。 slug 不能越出其路径片段,结账各项金额之和必须等于总额,URL 必须以 https:// 开头,ID 必须为正数。
  • 绝不泄露密钥。 密钥在 Debug 中会被遮蔽,只会发送到令牌端点,绝不会序列化到工具回答或日志行中;whoami 只显示客户端 ID 的前八个字符,不显示密钥。
  • 不会通过 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 客户端就代表一个身份,而开放的端点就等于为某个协会的款项敞开大门。设置令牌后, 每个发往 /mcp 的请求都需要携带 Authorization: Bearer <token>;/healthz 则保持开放,供探测使用。所有会话共享一个 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 会启动实际二进制文件, 通过其 stdin 发送 JSON-RPC,并断言返回内容——包括握手、全部 38 个工具及其架构、 通过 URL 指定的表单、转换为日期的周期、仅统计已收款项的摘要、未经确认时拒绝退款、 携带 MFA 标头发送退款,以及只读模式。tests/api_contract.rs 使用模拟的 HelloAsso 测试令牌生命周期、重试和错误封装;tests/mcp_http.rs 则检查 HTTP 传输和 Bearer 令牌校验。

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 和变更日志一致,构建五个二进制文件及其校验和, 推送 ghcr.io/edouard-claude/helloasso-mcp,并使用变更日志中的对应章节作为说明发布 GitHub 版本。

贡献

欢迎提交问题和拉取请求。当 cargo test、 cargo clippy --all-targets -- -D warnings 和 cargo fmt --all --check 均通过,并且 新工具包含描述、注解和输出架构时,这项变更就可以提交——否则,三个测试会告诉你问题所在。

许可证

MIT——详见 LICENSE。与 HelloAsso 无关联;HelloAsso 是其所有者的商标。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。