Skip to content
This repository was archived by the owner on Apr 8, 2025. It is now read-only.

Add proposal for MCP developer guidelines #254

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions development/contributing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,35 @@ We welcome contributions from the community! Please review our [contributing gui
All contributors must adhere to our [Code of Conduct](https://github.com/modelcontextprotocol/.github/blob/main/CODE_OF_CONDUCT.md).

For questions and discussions, please use [GitHub Discussions](https://github.com/orgs/modelcontextprotocol/discussions).

## MCP SDK Developer Guidelines

### Focus Areas

When building an MCP SDK, prioritize these three layers:

1. **Protocol Layer** - JSON-RPC message handling and transport
2. **API Layer** - Direct server/client interfaces with callbacks
3. **Ergonomic Layer** - Language-specific patterns and abstractions

### Minimum Requirements

For a functional MCP SDK:

- Implement STDIO transport (HTTP+SSE optional but recommended)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Implement STDIO transport (HTTP+SSE optional but recommended)
- Implement STDIO transport (the Streamable HTTP transport is optional but recommended)

- Support all server features (resources, prompts, tools)
- Handle lifecycle management (initialization, operation, shutdown)
- Provide clear error handling

### Extended Requirements

- Client-side features (roots, sampling)
- Complex authentication mechanisms
- Extensive optimizations

### Design Principles

- Make simple things easy and complex things possible
- Follow language conventions for your target platform
- Provide good examples and documentation for common use cases
- Design with extensibility in mind as MCP evolves