Skip to content

Commit fcfa492

Browse files
findleyrgopherbot
authored andcommitted
internal/mcp: update CONTRIBUTING.md and README.md for the official SDK
Change CONTRIBUTING.md and README.md to reflect that the MCP SDK is being moved to github.com/modelcontextprotocol/go-sdk, and to include content from the 'Governance' section of the design doc. Also, include the antitrust policy as a section in CONTRIBUTING.md. Change-Id: I46784d8e57b2a2cab8895593f633d20a2e15c8ba Reviewed-on: https://go-review.googlesource.com/c/tools/+/682976 Reviewed-by: Sam Thanawalla <[email protected]> Auto-Submit: Robert Findley <[email protected]> Reviewed-by: Alan Donovan <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent 15c16a5 commit fcfa492

File tree

5 files changed

+408
-109
lines changed

5 files changed

+408
-109
lines changed

internal/mcp/CONTRIBUTING.md

Lines changed: 259 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,270 @@
1-
# Contributing to Go MCP package
1+
# Contributing to the Go MCP SDK
22

3-
Go is an open source project.
3+
Thank you for your interest in contributing! The Go SDK needs active
4+
contributions to keep up with changes in the MCP spec, fix bugs, and accomodate
5+
new and emerging use-cases. We welcome all forms of contribution, from filing
6+
and reviewing issues, to contributing fixes, to proposing and implementing new
7+
features.
48

5-
It is the work of hundreds of contributors. We appreciate your help!
9+
As described in the [design document](./design/design.md), it is important for
10+
the MCP SDK to remain idiomatic, future-proof, and extensible. The process
11+
described here is intended to ensure that the SDK evolves safely and
12+
transparently, while adhering to these goals.
13+
14+
## Development setup
15+
16+
This module can be built and tested using the standard Go toolchain. Run `go
17+
test ./...` to run all its tests.
18+
19+
To test changes to this module against another module that uses the SDK, we
20+
recommend using a [`go.work` file](https://go.dev/doc/tutorial/workspaces) to
21+
define a multi-module workspace. For example, if your directory contains a
22+
`project` directory containing your project, and a `go-sdk` directory
23+
containing the SDK, run:
24+
25+
```sh
26+
go work init ./project ./go-sdk
27+
```
628

729
## Filing issues
830

9-
When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
31+
This project uses the [GitHub issue
32+
tracker](https://github.com/modelcontextprotocol/go-sdk/issues) for issues. The
33+
process for filing bugs and proposals is described below.
34+
35+
TODO(rfindley): describe a process for asking general questions in the public
36+
MCP discord server.
37+
38+
### Bugs
39+
40+
Please [report
41+
bugs](https://github.com/modelcontextprotocol/go-sdk/issues/new). If the SDK is
42+
not working as you expected, it is likely due to a bug or inadequate
43+
documentation, and reporting an issue will help us address this shortcoming.
44+
45+
When reporting a bug, make sure to answer these five questions:
46+
47+
1. What did you do?
48+
2. What did you see?
49+
3. What did you expect to see?
50+
4. What version of the Go MCP SDK are you using?
51+
5. What version of Go are you using (`go version`)?
52+
53+
### Proposals
54+
55+
A proposal is an issue that proposes a new API for the SDK, or a change to the
56+
signature or behavior of an existing API. Proposals are be labeled with the
57+
'Proposal' label, and require an explicit approval from a maintainer before
58+
being accepted (indicated by the 'Proposal-Accepted' label). Proposals must
59+
remain open for at least a week to allow discussion before being accepted or
60+
declined by a maintainer.
1061

11-
1. What version of Go are you using (`go version`)?
12-
2. What operating system and processor architecture are you using?
13-
3. What did you do?
14-
4. What did you expect to see?
15-
5. What did you see instead?
62+
Proposals that are straightforward and uncontroversial may be approved based on
63+
GitHub discussion. However, proposals that are deemed to be sufficiently
64+
unclear or complicated may be deferred to a regular steering meeting (see
65+
'Governance' below).
1666

17-
General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
18-
The gophers there will answer or ask you to file an issue if you've tripped over a bug.
67+
This process is similar to the [Go proposal
68+
process](https://github.com/golang/proposal), but is necessarily lighter weight
69+
to accommodate the greater rate of change expected for the SDK.
1970

2071
## Contributing code
2172

22-
Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
23-
before sending patches.
73+
The project uses GitHub pull requests (PRs) to review changes.
74+
75+
Any significant change should be associated with a GitHub issue. Issues that
76+
are deemed to be good opportunities for contribution are be labeled ['Help
77+
Wanted'](https://github.com/modelcontextprotocol/go-sdk/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22).
78+
If you want to work on such an issue, please first comment on the issue to say
79+
that you're interested in contributing. For issues _not_ labeled 'Help Wanted',
80+
it is recommended that you ask (and wait for confirmation) on the issue before
81+
contributing, to avoid duplication of effort or wasted work. For nontrivial
82+
changes that _don't_ relate to an existing issue, please file an issue first.
83+
84+
Changes should be high quality and well tested, and should generally follow the
85+
[Google Go style guide](https://google.github.io/styleguide/go/). Commit
86+
messages should follow the [format used by the Go
87+
project](https://go.dev/wiki/CommitMessage).
88+
89+
Unless otherwise noted, the Go source files are distributed under the MIT-style
90+
license found in the LICENSE file. All Go files in the SDK should have a
91+
copyright header following the format below:
92+
93+
```go
94+
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
95+
// Use of this source code is governed by an MIT-style
96+
// license that can be found in the LICENSE file.
97+
```
98+
99+
## Code of conduct
100+
101+
This project follows the [Go Community Code of Conduct](https://go.dev/conduct).
102+
If you encounter a conduct-related issue, please mail [email protected].
103+
104+
## Governance
105+
106+
Initially, the Go SDK repository will be administered by the Go team and
107+
Anthropic, and they will be the Approvers (the set of people able to merge PRs
108+
to the SDK). The policies here are also intended to satisfy necessary
109+
constraints of the Go team's participation in the project. This may change in
110+
the future: see 'Ongoing Evaluation' below.
111+
112+
### Steering meetings
113+
114+
On a regular basis, the maintainers will host a virtual steering meeting to
115+
discuss outstanding proposals and other changes to the SDK. These meetings and
116+
their agendas will be announced in advance, and open to all to join. The
117+
meetings will be recorded, and recordings and meeting notes will be made
118+
available afterward. (TODO: decide on a mechanism for tracking these
119+
meetings--likely a GitHub issue.)
120+
121+
This process is similar to the [Go Tools
122+
call](https://go.dev/wiki/golang-tools), though it is expected that meetings
123+
will at least initially occur on a more frequent basis.
124+
125+
### Discord
126+
127+
Discord (either the public or private Anthropic discord servers) should only be
128+
used for logistical coordination or answering questions. For transparency and
129+
durability, design discussion and decisions should occur in GitHub issues or
130+
public steering meetings.
131+
132+
### Antitrust considerations
133+
134+
It is important that the SDK avoids bias toward specific integration paths or
135+
providers. The antitrust policy below details precise terms that should be
136+
avoided to ensure that the evolution and governance of the SDK remain
137+
procompetitive.
138+
139+
A note to readers: this policy was drafted in consultation with counsel, and so
140+
uses terms like 'Steering Committee', which may be confusing in the context of
141+
other 'steering committees' for model context protocol. In the context here,
142+
'Steering Committee' means the set of Approvers, who are able to approve pull
143+
requests and/or make administrative changes to the project.
144+
145+
### Antitrust policy
146+
147+
Note: all changes to the policy in this section must be approved by legal
148+
counsel.
149+
150+
The Go+Anthropic MCP SDK Steering Committee (the “Committee”) is established to
151+
guide and review technical contributions to an open-source Go software
152+
development kit (“SDK”) for the Model Context Protocol (“MCP”). The Committee
153+
and its members are committed to operating for procompetitive purposes that
154+
accelerate AI development and benefit businesses and consumers. This
155+
collaboration is focused on technical and infrastructure objectives – namely,
156+
developing and maintaining a neutral, open-source, and MIT-licensed tool.
157+
Google and Anthropic, as well as other stakeholders, participate with the
158+
understanding that the Committee’s sole purpose is to improve interoperability
159+
and innovation in the MCP ecosystem.
160+
161+
Antitrust law recognizes that when competitors collaborate for valid reasons
162+
(e.g., joint R&D or standard-setting), such collaborations can be
163+
procompetitive. This Antitrust Compliance Policy (the “Policy”) therefore
164+
outlines guidelines and safeguards to ensure the collaboration remains focused
165+
on its technical mission.
166+
167+
The Policy applies to all Committee activities and communications, including
168+
official meetings, subcommittee discussions, emails, shared documents, and any
169+
other interactions under the Committee’s auspices (e.g., group chats, version
170+
control systems). It applies to all participants from Google, Anthropic, and
171+
any other member organizations or independent contributors involved. Each
172+
participating entity should ensure its representatives understand and uphold
173+
these rules. By participating, members agree to follow the Policy in both
174+
letter and spirit.
175+
176+
#### Governance Procedures and Principles
177+
178+
- **Participant Guidelines.** Participants should generally be limited to
179+
individuals in technical roles who are directly involved in the MCP SDK
180+
project. These participants should not be key decision-makers in their
181+
company’s AI commercial strategy, sales, marketing, pricing, or other
182+
competitively or strategically sensitive business planning.
183+
- **Agenda Preparation.** A written agenda should be circulated before each
184+
Committee meeting. Agenda items should focus on the SDK’s technical
185+
development, maintenance, or documentation. Where appropriate, counsel should
186+
review the agenda prior to circulation to ensure compliance with the Policy.
187+
- **Policy Reminder at Start.** Meetings should begin with a brief antitrust
188+
compliance reminder with reference to the Policy.
189+
- **Minutes.** Meetings will be minuted by a designated participant, and
190+
neutrally record attendees, roles, topics discussed, action items, and
191+
outcomes. Draft minutes will be circulated to all participants.
192+
- **Documentation and Transparency.** Steering Committee outputs are intended
193+
for public release. Significant design decisions and discussion outcomes
194+
should be documented publicly. If a topic cannot be safely disclosed
195+
publicly, it likely does not belong in this forum.
196+
- **Independence of Decision-Making.** All participants and their companies
197+
retain complete independence in their own business decisions and competitive
198+
strategies outside of the MCP SDK project. Nothing in this collaboration
199+
restricts or influences how each company operates its commercial business.
200+
201+
### Information Exchange Guidelines
202+
203+
**Appropriate Topics.** Committee members are anticipated to remain within the
204+
project’s technical scope. In general, discussions should focus on improving
205+
the Go SDK for MCP in a transparent, collaborative, and non-exclusive manner.
206+
The following topics are appropriate and expected:
207+
208+
- **Software Design and Architecture:** Implementation of MCP features in Go,
209+
API design, code structure, testing frameworks, performance considerations,
210+
compatibility issues, and security concerns.
211+
- **Technical Contributions and Bug Fixes:** Review of code contributions,
212+
debugging problems, and handling feature requests.
213+
- **Documentation and Open-Source Logistics:** Discussions of project
214+
documentation, changelogs, versioning strategy, and managing contributions.
215+
- **Standards and Interoperability:** Ensuring SDK compliance with MCP or other
216+
open technical standards. Any standardization effort should be open,
217+
voluntary, and tailored to promote interoperability.
218+
- **Public Information:** Any public information relevant to the Committee’s
219+
technical work (e.g., published research, open-source code from outside
220+
projects, publicly documented API specs).
221+
222+
**Inappropriate Topics.** To ensure compliance with antitrust law and maintain
223+
the open character of the collaboration, the following subjects should not be
224+
discussed in Committee meetings, side conversations, or related communications:
225+
226+
- **Pricing and Commercial Terms:** Do not discuss prices, pricing strategy,
227+
discounting, or future pricing plans for Claude, Gemini, or any other AI
228+
product or service provided by Committee members.
229+
- **Sales or Output:** Avoid sharing sales volumes, revenue, customer counts,
230+
market shares, production plans, or any business performance metrics.
231+
- **Product Roadmaps (beyond SDK):** Do not disclose internal plans for AI
232+
model development, feature rollouts, or future commercialization strategies.
233+
- **Customers or Markets:** No discussions of which customers, industries, or
234+
geographies the parties will pursue or avoid.
235+
- **Customer or Supplier Details:** Do not share specifics of contracts,
236+
negotiations, or relationships with commercial partners.
237+
- **Non-SDK Proprietary Tech:** Keep discussions focused on the open SDK.
238+
Sharing of information should be limited to what is needed to achieve the
239+
Committee’s goals. Each party’s internal model architectures, fine-tuning
240+
approaches, or training methods unrelated to the project should not be
241+
disclosed.
242+
- **HR or Labor Matters:** No discussions about wages, hiring plans, or
243+
policies toward employees.
244+
245+
#### Enforcement and Support
246+
247+
- **Shared Responsibility.** All Committee participants share responsibility
248+
for upholding the Policy. While legal counsel can provide support, day-to-day
249+
compliance is a function of culture and practice.
250+
- **Designated Legal Contacts.** Each participating entity should designate a
251+
legal point of contact responsible for reviewing meeting materials (e.g.,
252+
agendas, minutes) and fielding questions about compliance. These contacts
253+
should be included in the Committee distribution list for all official
254+
materials and should be consulted in advance of any meetings where sensitive
255+
topics may arise.
256+
- **Final Note.** The Policy is not meant to chill legitimate technical
257+
collaboration. It is meant to ensure that the Committee can focus on its
258+
mission without creating unnecessary legal risk or attracting regulator
259+
scrutiny. Participants who follow the Policy and avoid Inappropriate Topics
260+
will remain squarely within the procompetitive zone.
261+
262+
### Ongoing evaluation
24263

25-
Unless otherwise noted, the Go source files are distributed under
26-
the BSD-style license found in the LICENSE file.
264+
On an ongoing basis, the administrators of the SDK will evaluate whether it is
265+
keeping pace with changes to the MCP spec and meeting its goals of openness and
266+
transparency. If it is not meeting these goals, either because it exceeds the
267+
bandwidth of its current Approvers, or because the processes here are
268+
inadequate, these processes will be re-evaluated by the Approvers. At this
269+
time, the Approvers set may be expanded to include additional community
270+
members, based on their history of strong contribution.

0 commit comments

Comments
 (0)