What is a SEP?
SEP stands for Specification Enhancement Proposal. A SEP is a design document providing information to the MCP community, or describing a new feature for the Model Context Protocol or its processes. The SEP should provide a concise technical specification of the feature and a rationale for the feature. SEPs are the primary mechanism for proposing major new features, collecting community input on an issue, and documenting the design decisions that have gone into MCP. The SEP author is responsible for building consensus within the community and documenting dissenting opinions. SEPs are maintained as markdown files in theseps/ directory of the specification repository. Their revision history serves as the historical record of the feature proposal.
When to Write a SEP
The SEP process is reserved for changes that are substantial enough to require broad community discussion, a formal design document, and a historical record. A regular GitHub pull request is often more appropriate for smaller changes. Write a SEP if your change involves:- A new feature or protocol change - Adding, modifying, or removing features in the protocol (new API methods, message format changes, interoperability standards)
- A breaking change - Any change that is not backwards-compatible
- A governance or process change - Altering decision-making or contribution guidelines
- A complex or controversial topic - Changes likely to have multiple valid solutions or generate significant debate
- Bug fixes and typo corrections
- Documentation clarifications
- Adding examples to existing features
- Minor schema fixes that don’t change behavior
SEP Types
There are three kinds of SEP:- Standards Track - Describes a new feature or implementation for the Model Context Protocol, or an interoperability standard supported outside the core specification.
- Informational - Describes a design issue or provides guidelines/information to the community without proposing a new feature.
- Process - Describes a process surrounding MCP or proposes a change to a process (like this document).
SEP Workflow
Step-by-Step Process
-
Draft your SEP as a markdown file named
0000-your-feature-title.md, using0000as a placeholder. Follow the SEP format below. -
Create a pull request adding your SEP file to the
seps/directory in the specification repository. -
Update the SEP number: Once your PR is created, rename the file using the PR number (e.g., PR #1850 becomes
1850-your-feature-title.md) and update the SEP header. -
Find a Sponsor: Tag a Core Maintainer or Maintainer from the maintainer list. Choose someone whose area relates to your proposal. Tips:
- Tag 1-2 relevant maintainers, not everyone
- Share your PR in the relevant Discord channel
- If no response after 2 weeks, ask in
#general
-
Sponsor assigns themselves: When a sponsor agrees, they assign themselves to the PR and update the SEP status to
draft. - Informal review: The sponsor reviews the proposal and may request changes. Discussion happens in PR comments.
-
Formal review: When ready, the sponsor updates the status to
in-review. The SEP enters formal review by Core Maintainers (meetings every two weeks). -
Resolution: The SEP may be
accepted,rejected, or returned for revision. The sponsor updates the status. -
Finalization: Once accepted, the reference implementation must be completed. When complete and incorporated into the specification, the sponsor updates the status to
final.
SEP Statuses
| Status | Meaning |
|---|---|
draft | Has a sponsor, undergoing informal review |
in-review | Ready for formal Core Maintainer review |
accepted | Approved, awaiting reference implementation |
rejected | Declined by Core Maintainers |
withdrawn | Author withdrew the proposal |
final | Complete with reference implementation |
superseded | Replaced by a newer SEP |
dormant | No sponsor found within 6 months; can be revived |
dormant is not the same as rejected. A dormant SEP simply didn’t find a sponsor - the idea may still be valid. If circumstances change (new community interest, new use cases), a dormant SEP can be revived by finding a sponsor and reopening the PR.
SEP Format
Each SEP should have the following parts:1. Preamble
A short descriptive title, author names/contact info, current status, SEP type, and PR number.2. Abstract
A short (~200 word) description of the technical issue being addressed.3. Motivation
Why the existing protocol specification is inadequate. This is critical - SEPs without sufficient motivation may be rejected outright.4. Specification
The technical specification describing syntax and semantics of the new feature. Must be detailed enough for competing, interoperable implementations.5. Rationale
Why particular design decisions were made, alternate designs considered, and related work. Should provide evidence of community consensus and address objections raised during discussion.6. Backward Compatibility
All SEPs introducing backward incompatibilities must describe these incompatibilities, their severity, and how to deal with them.7. Reference Implementation
Must be completed before the SEP reaches “Final” status, but need not be complete before acceptance.8. Security Implications
Any security concerns related to the SEP should be explicitly documented. See the SEP template for the complete file structure.Prototype Requirements
Before a SEP can be accepted, you need “a prototype implementation demonstrating the proposal.” Here’s what qualifies: Acceptable prototypes:- A working implementation in one of the official SDKs (as a branch/fork)
- A standalone proof-of-concept demonstrating the key mechanics
- Integration tests showing the proposed behavior
- A reference server or client implementing the feature
- Demonstrate the core functionality works as described
- Show the API design is practical and ergonomic
- Reveal any edge cases or implementation challenges
- Be runnable by reviewers (include setup instructions)
- Pseudocode alone
- A design document without code
- “Trust me, it works” - reviewers need to see it
The Sponsor Role
A Sponsor is a Core Maintainer or Maintainer who champions the SEP through the review process. The sponsor’s responsibilities include:- Reviewing the proposal and providing constructive feedback
- Requesting changes based on community input
- Updating the SEP status as the proposal progresses
- Initiating formal review when the SEP is ready
- Presenting and discussing the proposal at Core Maintainer meetings
- Ensuring the proposal meets quality standards
Status Management
The Sponsor is responsible for updating the SEP status. This ensures status transitions are made by someone with the authority and context to do so appropriately. The sponsor:- Updates the
Statusfield directly in the SEP markdown file (or, if they do not have access to the source repo, work with the author to set the right status) - Applies matching labels to the pull request (e.g.,
draft,in-review,accepted)
SEP Review & Resolution
SEPs are reviewed by the MCP Core Maintainers team every two weeks. For a SEP to be accepted it must meet these criteria:- A prototype implementation demonstrating the proposal
- Clear benefit to the MCP ecosystem
- Community support and consensus
After Rejection
Rejection is not permanent. You can:- Address the feedback - If specific concerns were raised, address them and resubmit
- Discuss the rejection - Ask in Discord to understand the reasoning
- Submit a competing SEP - Sometimes a different approach works better
- Wait for the right time - Community needs evolve; what’s rejected today may be welcomed later
Reporting SEP Bugs or Updates
For SEPs not yet reachingfinal state, comment directly on the SEP’s pull request. Once a SEP is finalized and merged, submit updates by creating a new pull request that modifies the SEP file.
Transferring SEP Ownership
It occasionally becomes necessary to transfer ownership of SEPs to a new author. In general, we’d like to retain the original author as a co-author, but that’s up to the original author. Good reasons to transfer ownership:- Original author no longer has time or interest
- Original author is unreachable
- You disagree with the direction (submit a competing SEP instead)