Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
2cd178a
Add on_session_created callback option (#1710)
crondinini-ant Dec 1, 2025
281fd47
Add SSE polling support (SEP-1699) (#1654)
felixweinberger Dec 2, 2025
f82b0c9
Support client_credentials flow with JWT and Basic auth (#1663)
pcarleton Dec 2, 2025
fa851d9
feat: backwards-compatible create_message overloads for SEP-1577 (#1713)
felixweinberger Dec 2, 2025
d3a1841
Merge commit from fork
pcarleton Dec 2, 2025
8e02fc1
chore: update LATEST_PROTOCOL_VERSION to 2025-11-25 (#1715)
felixweinberger Dec 2, 2025
72a3400
fix: add lifespan context manager to StreamableHTTP mounting examples…
TheMailmans Dec 3, 2025
9ed0b93
fix: handle ClosedResourceError in StreamableHTTP message router (#1384)
Edison-A-N Dec 4, 2025
89ff338
fix: skip priming events and close_sse_stream for old protocol versio…
felixweinberger Dec 4, 2025
8b984d9
refactor(auth): remove unused _register_client method (#1748)
maxisbey Dec 8, 2025
b7cc254
feat: add workflow to comment on PRs when released (#1750)
felixweinberger Dec 9, 2025
8ac11ec
fix: allow MIME type parameters in resource validation (RFC 2045) (#1…
antonpk1 Dec 9, 2025
2bf9b10
Skip empty SSE data to avoid parsing errors (#1753)
injusticescorpio Dec 9, 2025
779271a
chore: remove release-comment workflow (#1758)
maxisbey Dec 9, 2025
0dedbd9
feat: client-side support for SEP-1577 sampling with tools (#1722)
jlowin Dec 9, 2025
cc8382c
Fix JSON-RPC error response ID matching (#1720)
crondinini-ant Dec 10, 2025
a3a4b8d
Add `streamable_http_client` which accepts `httpx.AsyncClient` instea…
Kludex Dec 10, 2025
65b36de
fix: use correct python command name in test_stdio.py (#1782)
WOnder93 Dec 12, 2025
8ac0cab
Fix for Url Elicitation issue 1768 (#1780)
gopitk Dec 15, 2025
ef96a31
ci: add v1.x branch to main-checks workflow (#1802)
maxisbey Dec 18, 2025
4807eb5
Add workflow to comment on PRs when released (#1772)
yugannkt Dec 19, 2025
2aa1ad2
feat: standardize timeout values to floats in seconds (#1766)
yugannkt Dec 19, 2025
06748eb
fix: Include extra field for context log (#1535)
vincent0426 Dec 19, 2025
3f6b059
docs: update CONTRIBUTING with v2 branching strategy (#1804)
maxisbey Dec 19, 2025
a4bf947
fix: Token endpoint response for invalid_client (#1481)
AnkeshThakur Dec 19, 2025
a9cc822
fix: accept HTTP 201 status code in token exchange (#1503)
jnjpng Dec 19, 2025
78a9504
fix: return HTTP 404 for unknown session IDs instead of 400 (#1808)
max-rousseau Dec 31, 2025
c7cbfbb
docs: add guidance on discussing features before opening PRs (#1760)
maxisbey Jan 1, 2026
d52937b
Make refresh_token grant type optional in DCR handler (#1651)
gazzadownunder Jan 5, 2026
bb6cb02
fix: raise clear error for server-to-client requests in stateless mod…
maxisbey Jan 5, 2026
37de501
fix: add StatelessModeNotSupported exception and improve tests (#1828)
maxisbey Jan 6, 2026
6149b63
tests: add missing init files (#1831)
Kludex Jan 6, 2026
adcc17b
types: add missing `py.typed` from examples package (#1833)
Kludex Jan 6, 2026
201de92
refactor: use `__future__.annotations` (#1832)
Kludex Jan 6, 2026
f397783
fix: add explicit type annotation for call_tool decorator (#1826)
Jan 6, 2026
3863f20
Server initialize response update to last spec (add title, descriptio…
yannj-fr Jan 6, 2026
1fd557a
Add type checker to `examples/client` (#1837)
Kludex Jan 7, 2026
3ffe142
Support Python 3.14 (#1834)
Kludex Jan 7, 2026
6b69f63
docs: fix simple-auth README references to non-existent scripts (#1829)
maxisbey Jan 8, 2026
0da9a07
Support for Resource and ResourceTemplate metadata (#1840)
yannj-fr Jan 12, 2026
b26e5b9
Add missing TasksCallCapability to enable proper MCP task support (#1…
maxisbey Jan 15, 2026
8893b02
Drop deprecated `streamablehttp_client` (#1836)
Kludex Jan 15, 2026
32a4587
chore: drop `as _annotations` (#1858)
Kludex Jan 15, 2026
f2b89ec
docs: add migrations page (#1859)
Kludex Jan 15, 2026
c251e72
Add v2 development warning to README (#1862)
maxisbey Jan 15, 2026
024d759
Drop `Content` and `args` parameter in `ClientSessionGroup.call_tool`…
Kludex Jan 15, 2026
72a8631
fix(ci): use bash shell for pytest step to ensure consistent error ha…
maxisbey Jan 15, 2026
812a46a
Remove deprecated `cursor` parameter and `ResourceReference` (#1871)
Kludex Jan 15, 2026
fc5cb6a
ci: add weekly lockfile update workflow (#1874)
maxisbey Jan 16, 2026
c9e98e5
ci: pin all GitHub Actions to commit SHAs (#1875)
maxisbey Jan 16, 2026
f2abeff
Add Dependabot configuration for GitHub Actions (#1876)
Kludex Jan 16, 2026
cfb2909
fix: change Resource URI fields from AnyUrl to str (#1863)
felixweinberger Jan 16, 2026
2ce41a8
Drop `dependencies` parameter from `FastMCP` (#1877)
Kludex Jan 16, 2026
b63776b
chore(deps): bump the github-actions group with 7 updates (#1878)
dependabot[bot] Jan 16, 2026
68cbabb
refactor: introduce MCPModel base class for protocol types (#1880)
Kludex Jan 16, 2026
d5edcb3
docs: add breaking changes guidance to CLAUDE.md (#1879)
felixweinberger Jan 16, 2026
9f427f3
fix: add default values to Literal type fields in content types (#1867)
felixweinberger Jan 16, 2026
2cf7784
ci: replace highest resolution with locked in test matrix (#1869)
maxisbey Jan 16, 2026
2b4c7eb
ci: add alls-green action for single required check (#1882)
Kludex Jan 16, 2026
edf0950
Revert `mount_path` parameter from `FastMCP` (#1881)
Kludex Jan 16, 2026
0622bab
fix: URL-decode parameters extracted from resource templates (#1864)
felixweinberger Jan 16, 2026
7080fcf
refactor: move inline imports to top of routes.py (#1888)
maxisbey Jan 16, 2026
e94b386
refactor: use snake case instead of camel case in types (#1894)
Kludex Jan 16, 2026
c063621
chore: add more opinions to CLAUDE.md (#1887)
Kludex Jan 16, 2026
5d80f4e
refactor: move inline imports to module level (#1893)
maxisbey Jan 16, 2026
8adb5bd
refactor: move transport-specific parameters from FastMCP constructor…
Kludex Jan 16, 2026
df039bf
Add ergonomic Client class for testing MCP servers (#1870)
felixweinberger Jan 16, 2026
d41d0c0
chore: add D212 lint rule to enforce Google-style docstrings (#1892)
felixweinberger Jan 16, 2026
dcc9b4f
refactor: use Client class in tests (#1900)
felixweinberger Jan 17, 2026
f4672c5
Drop `RootModel` from `JSONRPCMessage` (#1908)
Kludex Jan 19, 2026
5fdd48a
Completely drop `RootModel` from `types` module (#1910)
Kludex Jan 19, 2026
1c258ae
Don't block the event loop on non-async functions (#1909)
Kludex Jan 19, 2026
0f9a41d
chore: include cli and ws extras in dev environment (#1905)
RinZ27 Jan 19, 2026
34e66a3
refactor: move streamable HTTP app creation from FastMCP to lowlevel …
maxisbey Jan 19, 2026
3dc8b72
refactor: replace `pydantic_core.from_json` by `json.loads` (#1912)
Kludex Jan 19, 2026
bcb07c2
refactor: flatten the methods in `Client` (#1914)
Kludex Jan 20, 2026
6d463bb
refactor: replace `AnyFunction` by proper types (#1916)
Kludex Jan 21, 2026
ae7793e
refactor: avoid double JSON parsing (#1917)
Kludex Jan 21, 2026
3bcdc17
refactor: create the types subpackage, and the jsonrpc module (#1918)
Kludex Jan 21, 2026
213cf99
Add conformance testing CI pipeline (#1915)
maxisbey Jan 21, 2026
656f887
fix: replace http code by jsonrpc (#1920)
Kludex Jan 21, 2026
7b728a2
refactor: drop unused logger/logging (#1926)
Kludex Jan 22, 2026
d77292f
refactor: drop test classes (#1924)
Kludex Jan 22, 2026
f0ab53e
Add `meta` to `Client` methods (#1923)
Kludex Jan 22, 2026
5301298
Add claude GitHub action (#1922)
maxisbey Jan 22, 2026
a1d330d
Proper handle extra data in MCP objects (#1937)
Kludex Jan 23, 2026
3cfdea0
refactor: move stdio package to its own module (#1942)
Kludex Jan 23, 2026
a7ddfda
ci: add strict-no-cover to detect unnecessary coverage pragmas (#1897)
maxisbey Jan 23, 2026
ce75b2d
refactor: improve type docstrings and remove internal type exports (#…
Kludex Jan 24, 2026
4a2d83a
ci: skip claude code review for fork PRs (#1952)
maxisbey Jan 24, 2026
65c614e
Rename `FastMCP` to `MCPServer` (#1951)
Kludex Jan 25, 2026
acba547
refactor: `McpError` renamed to `MCPError` and flatten parameters (#1…
Kludex Jan 26, 2026
1b5287c
fix: remove unused `requests` dependency from simple-chatbot example …
maxisbey Jan 26, 2026
6f0e8e7
refactor: code style improvements and formatting cleanup (#1962)
Kludex Jan 27, 2026
14744c6
Add tests for `MCPServer.read_resource` exception handling (#1957)
Kludex Jan 27, 2026
b38716e
ci: skip Claude code review for Dependabot PRs (#1963)
maxisbey Jan 27, 2026
2137c8f
fix: revert README to v1.x documentation on main (#1971)
maxisbey Jan 29, 2026
2182205
Support different transports in Client (#1972)
Kludex Jan 30, 2026
6f8b791
chore(deps): bump the github-actions group with 5 updates (#1981)
dependabot[bot] Feb 1, 2026
71e7884
feat: add theme field to Icon type for light/dark mode support (#1978)
gfortaine Feb 3, 2026
050aeb6
Remove unnecessary MCPServer alias (#1984)
maxisbey Feb 3, 2026
b1f7eec
refactor: split `RequestContext` between server and client (#1987)
Kludex Feb 3, 2026
74f41ff
Add more maintainers to the PyPI metadata (#1976)
Kludex Feb 3, 2026
4fc49c6
feat: add `ClientRequestContext` type alias for client-side handlers …
Kludex Feb 3, 2026
1a8c14a
refactor: replace `mcp.types as types` to `from mcp import types` (#1…
Kludex Feb 3, 2026
d3133ae
chore: update author metadata to LF Projects (#1992)
maxisbey Feb 4, 2026
1a943ad
chore(deps): bump the uv group across 1 directory with 2 updates (#1961)
dependabot[bot] Feb 6, 2026
4598ad9
ci: disable conformance tests (#2007)
Kludex Feb 7, 2026
dda845a
docs: clarify test file structure convention in CLAUDE.md (#2006)
Kludex Feb 7, 2026
7c7c13b
fix: send JSONRPCError instead of bare exceptions in streamable HTTP …
Kludex Feb 9, 2026
239d682
fix: pass conformance auth scenarios, add RFC 8707 resource validatio…
felixweinberger Feb 9, 2026
e39038d
chore(deps): bump cryptography from 45.0.5 to 46.0.5 in the uv group …
dependabot[bot] Feb 11, 2026
99edde1
feat: add /review-pr Claude Code command for PR reviews (#2035)
Kludex Feb 11, 2026
f049c8e
Fix leaked anyio streams in streamable_http (#1991)
aabmass Feb 11, 2026
d6d3ad9
chore(deps-dev): bump pillow from 12.1.0 to 12.1.1 in the uv group ac…
dependabot[bot] Feb 11, 2026
0a22a9d
refactor: replace lowlevel Server decorators with on_* constructor kw…
maxisbey Feb 12, 2026
1e0b5c0
fix: revert README.md to v1 documentation (#2045)
maxisbey Feb 12, 2026
29a14ab
fix: skip readme-v1-frozen in CI and add diff-based README.md check (…
maxisbey Feb 13, 2026
a287a40
docs: add coverage verification instruction to CLAUDE.md (#2050)
Kludex Feb 13, 2026
8f669a7
fix: explicitly load required pytest plugins in addopts (#2055)
maxisbey Feb 13, 2026
2fe56e5
fix: handle HTTP error status codes in streamable HTTP client (#2047)
Kludex Feb 14, 2026
3b53fb9
fix: add HTTP readiness check to wait_for_server and remove dead code…
BabyChrist666 Feb 17, 2026
705497a
fix: allow null id in JSONRPCError per JSON-RPC 2.0 spec (#2056)
maxisbey Feb 17, 2026
be5bb7c
fix: normalize trailing slashes before length check in check_resource…
felixweinberger Feb 17, 2026
92140e5
Add idle session timeout to StreamableHTTPSessionManager (#2022)
felixweinberger Feb 18, 2026
fc57c2c
test: fix progress notification assertions for related_request_id (#2…
akshan-main Feb 18, 2026
e82203b
refactor: remove unused `mcp.shared.progress` module (#2080)
maxisbey Feb 18, 2026
b9431d4
fix: prevent command injection in example URL opening (#2082)
maxisbey Feb 18, 2026
0e96aec
fix: use exact match for loopback hosts in issuer URL validation (#2089)
maxisbey Feb 18, 2026
43d709c
ci: pin all GitHub Actions to commit SHAs (#2088)
maxisbey Feb 18, 2026
688c6e3
Update SECURITY.md to use GitHub Security Advisories (#2092)
localden Feb 19, 2026
c032854
docs: fix docstrings across public API surface (#2095)
jonathanhefner Feb 19, 2026
cf1bbd2
feat: expand InitializationState with explicit lifecycle state machine
dgenio Feb 19, 2026
8872f9b
docs: add concurrency model documentation to ServerSession and _trans…
dgenio Feb 19, 2026
6870770
refactor: remove unused Error state, defer to Phase 2 of #1691
dgenio Feb 19, 2026
4af9799
refactor: flatten test classes to top-level functions per CLAUDE.md
dgenio Feb 19, 2026
0d1031d
fix: ensure 100% branch coverage for __aexit__ lifecycle transitions
dgenio Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
118 changes: 118 additions & 0 deletions .claude/commands/review-pr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
Review the pull request: $ARGUMENTS

Follow these steps carefully. Use the `gh` CLI for all GitHub interactions.

## Step 1: Resolve the PR

Parse `$ARGUMENTS` to determine the PR. It can be:

- A full URL like `https://github.com/owner/repo/pull/123`
- A `owner/repo#123` reference
- A bare number like `123` (use the current repo)
- A description — search for it with `gh pr list --search "<description>" --limit 5` and pick the best match

Once resolved, fetch the PR metadata:

```bash
gh pr view <PR> --json number,title,body,author,state,baseRefName,headRefName,url,labels,milestone,additions,deletions,changedFiles,createdAt,updatedAt,mergedAt,reviewDecision,reviews,assignees
```

## Step 2: Gather the diff

Get the full diff of the PR:

```bash
gh pr diff <PR>
```

If the diff is very large (>3000 lines), focus on the most important files first and summarize the rest.

## Step 3: Collect PR discussion context

Fetch all comments and review threads:

```bash
gh api repos/{owner}/{repo}/pulls/{number}/comments --paginate
gh api repos/{owner}/{repo}/issues/{number}/comments --paginate
gh api repos/{owner}/{repo}/pulls/{number}/reviews --paginate
```

Pay attention to:

- Reviewer feedback and requested changes
- Author responses and explanations
- Any unresolved conversations
- Approval or rejection status

## Step 4: Find and read linked issues

Look for issue references in:

- The PR body (patterns like `#123`, `fixes #123`, `closes #123`, `resolves #123`)
- The PR branch name (patterns like `issue-123`, `fix/123`)
- Commit messages

For each linked issue, fetch its content:

```bash
gh issue view <number> --json title,body,comments,labels,state
```

Read through issue comments to understand the original problem, user reports, and any discussed solutions.

## Step 5: Analyze and validate

With all context gathered, analyze the PR critically:

1. **Intent alignment**: Does the code change actually solve the problem described in the PR and/or linked issues?
2. **Completeness**: Are there aspects of the issue or requested feature that the PR doesn't address?
3. **Scope**: Does the PR include changes unrelated to the stated goal? Are there unnecessary modifications?
4. **Correctness**: Based on the diff, are there obvious bugs, edge cases, or logic errors?
5. **Testing**: Does the PR include tests? Are they meaningful and do they cover the important cases?
6. **Breaking changes**: Could this PR break existing functionality or APIs?
7. **Unresolved feedback**: Are there reviewer comments that haven't been addressed?

## Step 6: Produce the review summary

Present the summary in this format:

---

### PR Review: `<title>` (<url>)

**Author:** <author> | **Status:** <state> | **Review decision:** <decision>
**Base:** `<base>``<head>` | **Changed files:** <n> | **+<additions> / -<deletions>**

#### Problem

<1-3 sentences describing what problem this PR is trying to solve, based on the PR description and linked issues>

#### Solution

<1-3 sentences describing the approach taken in the code>

#### Key changes

<Bulleted list of the most important changes, grouped by theme. Include file paths.>

#### Linked issues

<List of linked issues with their title, state, and a one-line summary of the discussion>

#### Discussion highlights

<Summary of important comments from reviewers and the author. Flag any unresolved threads.>

#### Concerns

<List any issues found during validation: bugs, missing tests, scope creep, unaddressed feedback, etc. If none, say "No concerns found.">

#### Verdict

<One of: APPROVE / REQUEST CHANGES / NEEDS DISCUSSION, with a brief justification>

#### Suggested action

<Clear recommendation for the reviewer: what to approve, what to push back on, what to ask about>

---
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ body:
demonstrating the bug.
placeholder: |
from mcp.server.fastmcp import FastMCP
from mcp.server.mcpserver import MCPServer
...
render: Python
Expand Down
Loading
Loading