AAIF PMO代理——MCP服务器
跨12个领域的49个工具,用于自动化Linux Foundation AAIF成员入职流程——层验证、合规性筛选、邮件列表配置、联系人管理、日历安排、工作组注册、选举、新闻稿、品牌验证、续订情报和D1-D5检查表编排。
同一台MCP服务器为多个客户端供电:
| 客户 | 受众 | 它如何连接 |
|---|---|---|
| LFX PCC | PMO员工(日常运营) | PCC运营仪表板中的MCP客户端 |
| 协作插件 | 高管和领导力(监督、状态、特别问题) | Claude Desktop的“协作”选项卡的拖放插件 |
| 对讲机翅片 | 会员(自助入职、常见问题解答) | 面向会员的聊天机器人的MCP数据连接器 |
| 鹅 | 开发人员(可选) | 用于本地开发的开源MCP客户端 |
沙盒模式:此服务器完全在 模拟数据 默认情况下。演示所有48个工具不需要后端凭据或API访问权限。当环境变量未设置时,每个连接器都会自动回退到模拟。
快速入门(5分钟)
1.克隆并安装
git clone git@github.com:linuxfoundation/aaif-mcp-server.git
cd aaif-mcp-server
pip install -e ".[test]"2.添加到克劳德桌面
打开 设置>开发人员>编辑配置 在Claude Desktop中,然后将此添加到 mcpServers:
{
"mcpServers": {
"aaif-onboarding": {
"command": "python",
"args": ["-m", "aaif_mcp_server.server"],
"cwd": "/path/to/aaif-mcp-server/src"
}
}
}替代 如果你跑了pip install -e .: ``json { "mcpServers": { "aaif-onboarding": { "command": "aaif-mcp-server" } } }``
3.重新启动克劳德桌面
重新启动后,您应该看到49个可用工具。服务器运行 模拟数据 默认情况下,测试不需要凭据。
验证它是否正常工作
在Claude Desktop中,尝试:
- “验证Hitachi的会员级别”→
validate_membership_tier - “列出彭博社的联系人”→
list_contacts - “让Sam Altman加入代理商务工作组”→
enroll_in_working_group - “检查代理商务主席的选举状态”→
get_election_status - “Natoma的流失风险是什么?”→
predict_churn_risk - “起草OpenAI加入AAIF的新闻稿”→
draft_press_release - “获取续订仪表板”→
get_renewal_dashboard - “运行OpenAI Sam Altman的入职检查表”→
run_onboarding_checklist
运行测试
pytest tests/ -v
# 176 tests pass (28 pre-existing failures in tests without registry init)______________________________________________________________________
工具(12个域中的49个)
域1:邮件列表设置(4个工具)
| 工具 | 说明 |
|---|---|
provision_mailing_lists | 将联系人添加到相应级别的列表中(dry_run默认) |
remove_from_mailing_lists | 从所有列表中删除联系人 |
check_mailing_list_membership | 检查订阅状态 |
remediate_mailing_lists | 查找并修复基础范围内的列表差距 |
域2:日历和会议管理(3个工具)
| 工具 | 说明 |
|---|---|
provision_calendar_invites | 根据级别/角色发送日历邀请 |
update_meeting_schedule | 更新工作组定期会议时间/链接 |
get_upcoming_meetings | 获取联系人即将召开的会议 |
领域3:合规与制裁(4种工具)
| 工具 | 说明 |
|---|---|
check_sanctions | 查询SFDC中笛卡尔筛选状态 |
check_tax_exempt_status | 验证501(c)(6)的合规性 |
get_compliance_report | 完整合规性摘要 |
flag_compliance_issue | 创建合规票以供人工审查 |
域4:层验证(3个工具)
| 工具 | 说明 |
|---|---|
validate_membership_tier | 从SFDC查找组织层 |
check_tier_entitlements | 某一层级的退货权利矩阵 |
detect_tier_anomalies | 扫描所有成员的访问不匹配 |
域5:联系人角色管理(5个工具)
| 工具 | 说明 |
|---|---|
list_contacts | 列出所有具有角色和下游访问权限的联系人 |
add_contact | 添加联系人,触发下游配置 |
update_contact_role | 改变角色,展示下游效应 |
remove_contact | 删除联系人,触发下机 |
transfer_voting_rights | 在联系人之间转移投票权 |
域6:工作组注册(5个工具)
| 工具 | 说明 |
|---|---|
enroll_in_working_group | 跨Groups.io+Discord+GitHub+日历注册 |
leave_working_group | 从所有系统的WG中删除 |
list_available_working_groups | 列出具有注册状态的工作组 |
get_wg_members | 获取工作组成员名册 |
check_wg_eligibility | 检查工作组的级别/角色资格 |
领域7:选举和投票操作(5个工具)
| 工具 | 说明 |
|---|---|
create_election | 在LFX平台上创建工作组主席选举 |
validate_candidate_eligibility | 检查候选人的先决条件 |
check_voter_eligibility | 检查投票联系人状态 |
get_election_status | 获取选举时间表、候选人、选票 |
diagnose_ballot_access | 诊断所有阻碍投票的障碍 |
领域8:新闻稿起草(3个工具)
| 工具 | 说明 |
|---|---|
draft_press_release | 根据模板+组织数据生成新闻稿 |
get_press_release_status | 检查审批工作流进度 |
list_press_release_templates | 列出可用的PR模板 |
领域9:徽标和品牌验证(3个工具)
| 工具 | 说明 |
|---|---|
validate_logo | 根据品牌指南验证徽标 |
get_brand_guidelines | 检索品牌规格和要求 |
request_logo_upload | 生成用于徽标提交的安全上传URL |
领域10:入职呼叫调度(3个工具)
| 工具 | 说明 |
|---|---|
schedule_onboarding_call | 安排与联系人和LF员工的通话 |
reschedule_onboarding_call | 重新安排现有通话 |
get_onboarding_call_status | 检查通话状态(已安排/待处理/已完成) |
领域11:更新和参与智能(5个工具)
| 工具 | 说明 |
|---|---|
get_renewal_status | 合同续签时间表和阶段 |
get_engagement_score | 计算参与度得分(0-100) |
predict_churn_risk | 预测流失风险(0-100) |
get_renewal_dashboard | 全基金会更新管道视图 |
trigger_renewal_outreach | 使用电子邮件模板生成外展计划 |
领域12:编排(5个工具)
| 工具 | 说明 |
|---|---|
run_onboarding_checklist | 执行D1-D5入职流程 |
get_onboarding_status | 检查检查表进度 |
reconcile_silos | 比较SFDC、Groups.io和SSO |
run_offboarding_checklist | 出发时移除通道 |
get_silo_health | 全基金会同步健康评分 |
______________________________________________________________________
生产所需的API访问权限
此服务器连接到 7外部系统在沙盒模式下,当环境变量未设置时,所有连接器都会自动回退到模拟数据。
连接器状态
| # | 连接器 | 服务 | 授权类型 | 沙盒 | 生产 |
|---|---|---|---|---|---|
| 1 | 赛富时 | CRM(帐户、联系人) | OAuth 2.0 | 模拟 | 已实现 |
| 2 | Groups.io | 邮件列表 | 承载令牌 | 模拟 | 已实现 |
| 3 | PIS集团.io | 通过LFX PIS发送邮件列表 | X-ACL标题 | 模拟 | 已构建(等待信任) |
| 4 | PIS会议 | LFX会议(支持缩放) | X-ACL标题 | 模拟 | 已构建(等待信任) |
| 5 | PIS GitHub | GitHub组织/仓库跟踪 | X-ACL头 | 模拟 | 构建(只读) |
| 6 | Google 日历 | 会议日程安排(传统) | 服务帐户JWT | 模拟 | 被PIS会议取代 |
| 7 | Discord 的中文翻译是“不和谐”或“纷争”。 | 社区频道/角色 | 机器人令牌 | 模拟 | 特技 |
| 8 | GitHub | 回购合作者访问 | PAT(承载者) | 模拟 | 特技 |
| 9 | LFX平台 | LFID,选举,投票 | API密钥 | 模拟 | 存根 |
| 10 | 集客 | 电子邮件模板,外展 | 私人应用密钥 | 模拟 | 特技 |
环境变量
# 0. PIS (Project Infrastructure Service) — X-ACL header auth
# API: V2 — Groups.io, LFX Meeting, GitHub connectors
# Used by: Mailing List Provisioning, Calendar/Meeting Mgmt, WG Enrollment, Offboarding
PIS_ACL_TOKEN=
PIS_USERNAME=
PIS_PROJECT_ID=lfZA9uadMdkwBqqHsj
# 1. Salesforce CRM — OAuth 2.0 username-password flow
# API: REST v59.0 — SOQL queries on Account, Contact objects
# Used by: Tier Validation, Compliance, Contact Roles, Orchestrator
SFDC_INSTANCE_URL=https://aaif--sandbox.my.salesforce.com
SFDC_CLIENT_ID=
SFDC_CLIENT_SECRET=
SFDC_USERNAME=
SFDC_PASSWORD=
# 2. Groups.io — Bearer token
# API: v1 — directadd, removemember, getmembers, getgroups
# Used by: Mailing List Provisioning, WG Enrollment
GROUPSIO_API_TOKEN=
GROUPSIO_ORG_ID=aaif
# 3. Google Calendar — Service account JWT
# API: Calendar v3 — events.insert, events.list, events.patch, events.delete
# Used by: Calendar Management, Call Scheduling, WG Enrollment
GOOGLE_CALENDAR_CREDENTIALS=
GOOGLE_CALENDAR_ADMIN_EMAIL=
# 4. Discord — Bot token
# API: Bot API v10 — guild member roles, channel access
# Used by: WG Enrollment (channel/role provisioning)
DISCORD_BOT_TOKEN=
DISCORD_SERVER_ID=
# 5. GitHub — Personal access token
# API: REST v3 — repos collaborators (add/remove/list)
# Used by: WG Enrollment (repo access)
GITHUB_TOKEN=
GITHUB_ORG=aaif
# 6. LFX Platform — API key
# API: OpenProfile v1 — elections, LFID verification, ballots
# Used by: Elections & Voting, LFID checks
LFX_API_URL=https://api.lfx.platform/v1
LFX_API_KEY=
# 7. HubSpot — Private app API key
# API: v3 — transactional email, templates
# Used by: Press Release distribution, Renewal Outreach
HUBSPOT_API_KEY=
API连接器操作
赛富时 (REST v59.0):
POST /services/oauth2/token--身份验证GET /services/data/v59.0/query?q={SOQL}--查询帐户、联系人- 自定义字段:
Membership_Tier__c,Membership_Status__c,Contract_Signed_Date__c,LFID__c
Groups.io (v1):
POST /directadd--将成员添加到组POST /removemember--从组中删除成员GET /getmembers--列出组成员(分页)GET /getmember--检查单一会员资格
Google 日历 (v3):
POST /calendars/{id}/events--创建活动/邀请GET /calendars/{id}/events--列出事件PATCH /calendars/{id}/events/{eventId}--更新事件DELETE /calendars/{id}/events/{eventId}--取消事件
Discord 的中文翻译是“不和谐”或“纷争”。 (Bot API v10):
PUT /guilds/{id}/members/{userId}/roles/{roleId}--添加角色DELETE /guilds/{id}/members/{userId}/roles/{roleId}--删除角色GET /guilds/{id}/members--列出成员
GitHub (REST v3):
PUT /repos/{owner}/{repo}/collaborators/{username}--添加合作者DELETE /repos/{owner}/{repo}/collaborators/{username}--删除合作者GET /repos/{owner}/{repo}/collaborators--列出合作者
LFX平台 (v1):
POST /elections--创建选举GET /elections/{id}--获得选举资格GET /contacts/{id}/lfid--验证LFIDGET /elections/{id}/ballot/{contactId}--检查投票状态
集客 (v3):
POST /transactional/email--从模板发送电子邮件GET /marketing/emails/templates--列表模板
______________________________________________________________________
建筑
src/aaif_mcp_server/
├── server.py # MCP server (FastMCP) — registers 48 tools, 7 resources, 3 prompts
├── config.py # Mock data + provisioning rules + checklist templates
├── models.py # Pydantic models (MemberOrg, Contact, SanctionsResult, etc.)
├── connectors/
│ ├── base.py # Abstract base classes (BaseConnector, BaseCRMConnector, etc.)
│ ├── registry.py # Connector registry (singleton init, env-var toggled PIS/mock)
│ ├── pis_client.py # Shared PIS HTTP client (X-ACL auth, retry, base URL)
│ ├── pis_groupsio.py # PIS Groups.io connector (mailing list CRUD via PIS V2)
│ ├── pis_meeting.py # PIS Meeting connector (LFX Meeting V2 / zoomV2 API)
│ ├── pis_github.py # PIS GitHub connector (org/repo tracking via PIS V2)
│ ├── salesforce.py # Salesforce REST API v59 (auto-falls back to mock)
│ ├── groupsio.py # Groups.io API v1 (legacy — auto-falls back to mock)
│ ├── calendar.py # Google Calendar API v3 (legacy — replaced by PIS Meeting)
│ ├── discord.py # Discord Bot API v10 (mock)
│ ├── github_connector.py # GitHub REST API v3 (mock)
│ ├── lfx_platform.py # LFX Platform / OpenProfile API (mock)
│ └── hubspot.py # HubSpot Marketing API (mock)
├── tools/
│ ├── tier_validation.py # 3 tools: validate, entitlements, anomalies
│ ├── compliance.py # 4 tools: sanctions, tax-exempt, report, flag
│ ├── mailing_list.py # 4 tools: provision, remove, check, remediate
│ ├── orchestrator.py # 5 tools: onboard, status, reconcile, offboard, health
│ ├── contact_roles.py # 5 tools: list, add, update, remove, transfer
│ ├── calendar.py # 3 tools: provision invites, update schedule, upcoming
│ ├── wg_enrollment.py # 5 tools: enroll, leave, list, members, eligibility
│ ├── call_scheduling.py # 3 tools: schedule, reschedule, status
│ ├── elections.py # 5 tools: create, candidate, voter, status, diagnose
│ ├── press_release.py # 3 tools: draft, status, templates
│ ├── logo_brand.py # 3 tools: validate, guidelines, upload
│ └── renewal_intelligence.py # 5 tools: renewal, engagement, churn, dashboard, outreach
└── resources/
├── member.py # member:// resources (profiles, list)
├── checklist.py # checklist:// resources (D1-D5 templates)
└── rules.py # rules:// resources (entitlements, provisioning, WGs)模拟成员(用于测试)
| 组织 | 层级 | 联系人 |
|---|---|---|
| 有限公司日立 | 黄金 | 山田武、田中由纪 |
| 彭博社LP | 黄金 | 桑巴夫·科塔里,Ania Musial |
| 纳托玛 | 银 | 帕雷什·巴亚 |
| iProov | 西尔弗 | 安德鲁·巴德 |
| OpenAI | 白金级 | Sam Altman |
许可证
Apache 2.0
