I recently got two PRs merged into the Model Context Protocol (MCP) ecosystem. Not huge changes — one fixed a JSON schema edge case, another corrected some HTTP status codes. But they taught me a lot about how to contribute effectively.
Here's my approach.
1. Find Issues Worth Solving
Not all issues are created equal. I look for:
Clear reproduction steps. If an issue says "sometimes X doesn't work," skip it. If it says "run this command, observe this error," that's actionable.
Recent activity. Issues from 2 years ago with no maintainer response? Probably abandoned. Issues from last week with maintainer comments? Someone cares.
Your skill level. I don't touch issues requiring deep architectural knowledge. I look for edge cases, type errors, documentation gaps — things I can actually fix.
For my first MCP contribution, I found Issue #1659: "Empty object schema breaks OpenAI strict mode." Clear error, clear reproduction, clear fix needed.
2. Read the Codebase First
Don't jump straight to coding. Spend time understanding:
- Project structure. Where does this code live? What's the naming convention?
- Testing patterns. How do they test similar functionality?
- Code style. Tabs or spaces? Single or double quotes? Function style?
For the MCP TypeScript SDK, I spent 30 minutes reading existing tests and similar code paths before writing a single line. That investment paid off — my PR followed their conventions exactly.
3. Make Minimal, Focused PRs
Resist the urge to "clean up while you're in there." Every extra change:
- Increases review burden
- Increases merge conflict risk
- Increases chance of rejection
My PR #1702 was 15 lines of code. It fixed exactly one thing. The maintainer merged it within days.
Compare that to a 500-line PR that "also refactors the validator." That PR sits in review purgatory forever.
4. Write a Clear PR Description
Your PR description should answer:
- What does this fix? Link to the issue.
- What was the root cause? One sentence.
- What does this change? Bullet points.
- How did you test it? Show your work.
Here's the structure I use:
## Problem
[Link to issue] - Brief description of the bug
## Root Cause
[One sentence explaining why it happened]
## Solution
- Change 1
- Change 2
## Testing
- Added test for X
- Verified Y still works5. Be Patient and Responsive
After submitting:
- Don't ping maintainers. They'll get to it.
- Do respond quickly to feedback. If they ask for changes, turn them around fast.
- Do accept their conventions. Even if you disagree. It's their project.
My second PR (#1707) got a small nitpick about commit message style. I fixed it immediately. Merged same day.
The Payoff
Beyond the code itself, contributions give you:
- Proof of competence. Anyone can see your merged PRs.
- Learning. You see how mature projects are structured.
- Connections. Maintainers remember helpful contributors.
Two PRs isn't many. But it's a start. Each one builds credibility for the next.
Want to see the actual PRs? #1702 (JSON schema fix) and #1707 (status code fix). Both are small, focused, and merged.