This repository provides a multi-language reference implementation of the proposed interceptor extension for the Model Context Protocol (MCP), as described in SEP-2624.
Charter: modelcontextprotocol.io/community/working-groups/interceptors — the Interceptors Working Group's mission, scope, leadership, and active work items.
Meeting notes: Meeting Notes - Interceptors WG in the spec repo. The April 30, 2026 meeting predates that category and is in this repository's discussions, along with copies of the April 23 and May 14 notes.
| Language | Directory | Package | Status |
|---|---|---|---|
| C# | csharp/sdk/ |
ModelContextProtocol.Interceptors |
In Progress |
| Go | go/sdk/ |
github.com/modelcontextprotocol/ext-interceptors/go/sdk |
Planned |
| Python | python/sdk/ |
mcp-ext-interceptors |
Planned |
| TypeScript | typescript/sdk/ |
@ext-modelcontextprotocol/interceptors |
Planned |
This monorepo uses path-based CI workflows to efficiently test only what changes:
-
Language-specific workflows (
csharp.yml,python.yml,go.yml,typescript.yml)- Only trigger when their language directory or workflow file changes
- Run all tests, linting, and checks for that language
-
Status check workflow (
status-check.yml)- Runs on every PR to verify required checks passed
- Determines what needs to pass based on which files changed
- This is the only required check in branch protection
- Change
python/sdk/file.py→ Only Python CI runs → PR requires Python checks to pass - Change both Go and TypeScript files → Both CIs run → PR requires both to pass
- Change only
README.md→ No language CIs run → PR can merge immediately
To run all language checks regardless of changed files:
- In a PR: Comment
/test all(only works for repo owners/members/collaborators) - Manually: Use GitHub Actions UI or CLI to trigger individual workflows
-
Add your check to the appropriate language workflow (e.g.,
python.yml):python-security-scan: name: "Security Scan" runs-on: ubuntu-latest steps: - name: Run security checks run: # your commands here
-
Update the status check in
.github/workflows/status-check.yml:const requiredChecks = { python: [ 'Python CI / Linting', 'Python CI / Unit Tests (3.10)', // ... existing checks ... 'Python CI / Security Scan' // ← Add your new check ],
-
Submit PR - Your new check is now required for all relevant changes!
Apache License 2.0 - See LICENSE file for details
- Interceptor Framework Specification (SEP-2624) - Full specification and design details
- Model Context Protocol
- Interceptors for MCP: A Production-Tested Standard for Agentic Middleware - Kurt Degiorgio & Cannis Chan (Bloomberg), MCP Dev Summit North America