Skip to content

Commit 7883dbc

Browse files
committed
Migrate GitHub teams to infrastructure-as-code (#5)
* Migrate GitHub teams to infrastructure-as-code - Add 25 teams with proper hierarchy (steering-committee, SDK teams, working groups, interest groups) - Add 67 team members with their assignments - Add repository access configuration for all 21 repositories - Refactor github.ts to use config-driven approach with repoAccess.ts - Mark all MCP teams as GitHub-only with onlyOnPlatforms - Use RepositoryCollaborators for authoritative access management Note: GitHub Projects V2 permissions are not yet supported by Pulumi and must be managed manually. See pulumi/pulumi-github#1006 * Add individual user collaborators to repository access Preserves direct collaborator access for users who have explicit permissions outside of team membership, including: - jspahrsummers: admin on multiple core repos - Go SDK collaborators (neild, rsc, rolandshoemaker, h9jiang) - C# SDK collaborators (jeffhandley, MackinnonBuck, jozkee, localden, PederHP) - Rust SDK collaborators (jamadeo, jokemanfire, 4t145) - Inspector collaborators (richardkmichael, olaservo, an-dustin, ashwin-ant) - Financial services IG collaborators (aniabot, imfing, sambhav, KengoA, nitsanh) - And others Without this, RepositoryCollaborators (authoritative mode) would remove all individual user access.
1 parent 5b2b01d commit 7883dbc

File tree

5 files changed

+772
-10
lines changed

5 files changed

+772
-10
lines changed

src/config/groups.ts

Lines changed: 151 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,163 @@ import { defineGroups } from './utils';
99
// Groups are created on all platforms (GitHub and Google) by default.
1010
// To limit a group to specific platforms, set the onlyOnPlatforms array (e.g., onlyOnPlatforms: ['google']).
1111
export const GROUPS = defineGroups([
12+
// MCP Organization Structure
1213
{
13-
name: 'test-parent',
14-
description: 'All maintainers. Users should not be added directly to this group.',
14+
name: 'steering-committee',
15+
description: 'MCP Steering Committee',
16+
onlyOnPlatforms: ['github'],
1517
},
1618
{
17-
name: 'test-child',
18-
description: 'Registry maintainers',
19-
memberOf: ['test-parent'],
19+
name: 'core',
20+
description: 'Core team',
21+
memberOf: ['steering-committee'],
22+
onlyOnPlatforms: ['github'],
2023
},
2124
{
22-
name: 'test-email-group',
23-
description: 'Example email group that accepts external emails',
24-
isEmailGroup: true,
25+
name: 'core-maintainers',
26+
description: 'Core maintainers',
27+
memberOf: ['steering-committee'],
28+
onlyOnPlatforms: ['github'],
29+
},
30+
{
31+
name: 'moderators',
32+
description: 'Community moderators',
33+
memberOf: ['steering-committee'],
34+
onlyOnPlatforms: ['github'],
2535
},
36+
{
37+
name: 'docs-maintaners',
38+
description: 'MCP docs maintainers',
39+
memberOf: ['steering-committee'],
40+
onlyOnPlatforms: ['github'],
41+
},
42+
43+
// SDK Maintainers
44+
{
45+
name: 'sdk-maintainers',
46+
description: 'Authors and maintainers of official MCP SDKs',
47+
memberOf: ['steering-committee'],
48+
onlyOnPlatforms: ['github'],
49+
},
50+
{
51+
name: 'csharp-sdk',
52+
description: 'Official C# SDK maintainers',
53+
memberOf: ['sdk-maintainers'],
54+
onlyOnPlatforms: ['github'],
55+
},
56+
{
57+
name: 'go-sdk',
58+
description: 'The Go SDK Team',
59+
memberOf: ['sdk-maintainers'],
60+
onlyOnPlatforms: ['github'],
61+
},
62+
{
63+
name: 'java-sdk',
64+
description: 'Official Java SDK maintainers',
65+
memberOf: ['sdk-maintainers'],
66+
onlyOnPlatforms: ['github'],
67+
},
68+
{
69+
name: 'kotlin-sdk',
70+
description: 'Official Kotlin SDK maintainers',
71+
memberOf: ['sdk-maintainers'],
72+
onlyOnPlatforms: ['github'],
73+
},
74+
{
75+
name: 'php-sdk',
76+
description: 'Official PHP SDK maintainers',
77+
memberOf: ['sdk-maintainers'],
78+
onlyOnPlatforms: ['github'],
79+
},
80+
{
81+
name: 'python-sdk',
82+
description: 'Official Python SDK maintainers',
83+
memberOf: ['sdk-maintainers'],
84+
onlyOnPlatforms: ['github'],
85+
},
86+
{
87+
name: 'python-sdk-auth',
88+
description: 'Auth related owners',
89+
memberOf: ['python-sdk'],
90+
onlyOnPlatforms: ['github'],
91+
},
92+
{
93+
name: 'ruby-sdk',
94+
description: 'Official Ruby SDK maintainers',
95+
memberOf: ['sdk-maintainers'],
96+
onlyOnPlatforms: ['github'],
97+
},
98+
{
99+
name: 'rust-sdk',
100+
description: 'Official Rust SDK maintainers',
101+
memberOf: ['sdk-maintainers'],
102+
onlyOnPlatforms: ['github'],
103+
},
104+
{
105+
name: 'swift-sdk',
106+
description: 'Official Swift SDK maintainers',
107+
memberOf: ['sdk-maintainers'],
108+
onlyOnPlatforms: ['github'],
109+
},
110+
{
111+
name: 'typescript-sdk',
112+
description: 'Official TypeScript SDK',
113+
memberOf: ['sdk-maintainers'],
114+
onlyOnPlatforms: ['github'],
115+
},
116+
{
117+
name: 'typescript-sdk-auth',
118+
description: 'Code owners for auth in Typescript SDK',
119+
memberOf: ['typescript-sdk'],
120+
onlyOnPlatforms: ['github'],
121+
},
122+
123+
// Working Groups
124+
{
125+
name: 'working-groups',
126+
description: 'MCP Working Groups',
127+
memberOf: ['steering-committee'],
128+
onlyOnPlatforms: ['github'],
129+
},
130+
{
131+
name: 'auth-wg',
132+
description: 'Authentication Working Group',
133+
memberOf: ['working-groups'],
134+
onlyOnPlatforms: ['github'],
135+
},
136+
{
137+
name: 'registry-wg',
138+
description: 'Official registry builders and maintainers',
139+
memberOf: ['working-groups'],
140+
},
141+
{
142+
name: 'security-wg',
143+
description: 'Security Working Group',
144+
memberOf: ['working-groups'],
145+
onlyOnPlatforms: ['github'],
146+
},
147+
{
148+
name: 'transport-wg',
149+
description: 'Transport Working Group',
150+
memberOf: ['working-groups'],
151+
onlyOnPlatforms: ['github'],
152+
},
153+
154+
// Interest Groups
155+
{
156+
name: 'interest-groups',
157+
description: 'Interest Groups',
158+
memberOf: ['steering-committee'],
159+
onlyOnPlatforms: ['github'],
160+
},
161+
{
162+
name: 'ig-financial-services',
163+
description: 'Financial Services Interest Group',
164+
memberOf: ['interest-groups'],
165+
onlyOnPlatforms: ['github'],
166+
},
167+
168+
// Email-only groups
26169
{
27170
name: 'antitrust',
28171
description: 'Antitrust compliance contacts',

0 commit comments

Comments
 (0)