|
| 1 | +# Specification Enhancement Proposals (SEPs) |
| 2 | + |
| 3 | +> **Experimental**: This is an experimental alternative method for creating SEPs. The default method remains using GitHub issues as described at https://modelcontextprotocol.io/community/sep-guidelines. |
| 4 | +
|
| 5 | +## Overview |
| 6 | + |
| 7 | +This directory contains SEPs in markdown file format, similar to Python's PEP system. Each SEP is a standalone markdown document that describes a proposed enhancement to the MCP specification. |
| 8 | + |
| 9 | +## File Naming Convention |
| 10 | + |
| 11 | +SEP files use the format: `{NUMBER}-{TITLE}.md` |
| 12 | + |
| 13 | +Where: |
| 14 | +- **NUMBER**: The pull request number that introduces this SEP |
| 15 | +- **TITLE**: A short, lowercase, hyphenated title |
| 16 | + |
| 17 | +Examples: |
| 18 | +- `1234-resource-templates.md` |
| 19 | +- `1567-sampling-improvements.md` |
| 20 | + |
| 21 | +## Creating a New SEP |
| 22 | + |
| 23 | +1. **Draft your SEP** as a markdown file with a temporary name (e.g., `DRAFT-your-feature.md`) |
| 24 | + |
| 25 | +2. **Create a pull request** adding your SEP file to the `seps/` directory |
| 26 | + |
| 27 | +3. **Rename your file** to use the PR number as the SEP number (e.g., PR #1850 → `1850-your-feature.md`) |
| 28 | + |
| 29 | +4. **Update the SEP header** to reference the correct number |
| 30 | + |
| 31 | +5. **Find a Sponsor** - A Core Maintainer or Maintainer who will shepherd your proposal through review |
| 32 | + |
| 33 | +## SEP File Structure |
| 34 | + |
| 35 | +```markdown |
| 36 | +# SEP-{NUMBER}: {Title} |
| 37 | + |
| 38 | +- **Status**: Draft | In-Review | Accepted | Rejected | Withdrawn | Final |
| 39 | +- **Type**: Standards Track | Informational | Process |
| 40 | +- **Created**: YYYY-MM-DD |
| 41 | +- **Author(s)**: Name <email> (@github-username) |
| 42 | +- **Sponsor**: @github-username |
| 43 | +- **PR**: #{NUMBER} |
| 44 | + |
| 45 | +## Abstract |
| 46 | + |
| 47 | +Brief (~200 word) technical summary of the proposal. |
| 48 | + |
| 49 | +## Motivation |
| 50 | + |
| 51 | +Why is this change needed? Why is the current protocol inadequate? |
| 52 | + |
| 53 | +## Specification |
| 54 | + |
| 55 | +Detailed technical specification of the proposed changes. |
| 56 | + |
| 57 | +## Rationale |
| 58 | + |
| 59 | +Design decisions made and alternatives that were considered. |
| 60 | + |
| 61 | +## Backward Compatibility |
| 62 | + |
| 63 | +How does this affect existing implementations? (Required for incompatible changes) |
| 64 | + |
| 65 | +## Security Implications |
| 66 | + |
| 67 | +Any security concerns related to this proposal. |
| 68 | + |
| 69 | +## Reference Implementation |
| 70 | + |
| 71 | +Link to or description of a reference implementation (required before Final status). |
| 72 | +``` |
| 73 | + |
| 74 | +## SEP Types |
| 75 | + |
| 76 | +- **Standards Track**: New protocol features or changes affecting interoperability |
| 77 | +- **Informational**: Design issues, guidelines, or information without new features |
| 78 | +- **Process**: Changes to MCP processes or governance |
| 79 | + |
| 80 | +## Status Workflow |
| 81 | + |
| 82 | +`Draft` → `In-Review` → `Accepted` → `Final` |
| 83 | + |
| 84 | +Alternative outcomes: `Rejected`, `Withdrawn`, or `Superseded` |
| 85 | + |
| 86 | +- **Draft**: Initial proposal, sponsor assigned, informal review |
| 87 | +- **In-Review**: Open for formal community and maintainer review |
| 88 | +- **Accepted**: Approved, pending reference implementation |
| 89 | +- **Final**: Implemented and merged into the specification |
| 90 | +- **Rejected**: Not accepted after review |
| 91 | +- **Withdrawn**: Author withdrew the proposal |
| 92 | +- **Superseded**: Replaced by a newer SEP |
| 93 | + |
| 94 | +## The Sponsor Role |
| 95 | + |
| 96 | +A Sponsor is a Core Maintainer or Maintainer who: |
| 97 | +- Reviews the proposal and provides feedback |
| 98 | +- Requests changes based on community input |
| 99 | +- Initiates formal review when the SEP is ready |
| 100 | +- Shepherds the proposal through the acceptance process |
| 101 | + |
| 102 | +You can find potential sponsors in the maintainers list. Tag them in your PR to request sponsorship. |
| 103 | + |
| 104 | +## Why PR Numbers? |
| 105 | + |
| 106 | +Using the PR number as the SEP number: |
| 107 | +- Eliminates need for maintainer number assignment |
| 108 | +- Creates natural traceability between proposal and discussion |
| 109 | +- Prevents number conflicts |
| 110 | +- Simplifies the contribution process |
| 111 | + |
| 112 | +## Acceptance Criteria |
| 113 | + |
| 114 | +- Prototype/reference implementation |
| 115 | +- Clear benefit to the MCP ecosystem |
| 116 | +- Community consensus |
| 117 | + |
| 118 | +## Relationship to Issue-Based SEPs |
| 119 | + |
| 120 | +This file-based approach complements the existing issue-based SEP process. Contributors may choose either method based on preference. The canonical SEP guidelines remain at https://modelcontextprotocol.io/community/sep-guidelines |
0 commit comments