|
1 |
| -# Contributing to Go MCP package |
| 1 | +# Contributing to the Go MCP SDK |
2 | 2 |
|
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. |
4 | 8 |
|
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 | +``` |
6 | 28 |
|
7 | 29 | ## Filing issues
|
8 | 30 |
|
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. |
10 | 61 |
|
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). |
16 | 66 |
|
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. |
19 | 70 |
|
20 | 71 | ## Contributing code
|
21 | 72 |
|
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 |
24 | 263 |
|
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