Add missing v3 features to tracking docs#2888
Conversation
Document features from recent PRs that were missing from v3-features.mdx: FileSystemProvider, OpenTelemetry tracing, composable lifespans, tool timeout, PingMiddleware, Context.transport, sync threadpool execution, and CLI update notifications. Also add as_proxy() deprecation to upgrade-guide.
WalkthroughDeprecates Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (1)docs/**/*.mdx📄 CodeRabbit inference engine (docs/.cursor/rules/mintlify.mdc)
Files:
🧠 Learnings (2)📓 Common learnings📚 Learning: 2026-01-12T16:24:55.006ZApplied to files:
🪛 LanguageTooldocs/development/v3-notes/v3-features.mdx[grammar] ~338-~338: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) [grammar] ~631-~631: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) ⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
🔇 Additional comments (6)
✏️ Tip: You can disable this entire section by setting Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (6)
docs/development/upgrade-guide.mdx (1)
92-109: Make the deprecation example runnable and outcome‑oriented.The snippets omit the
FastMCPimport in the “Before” block and use a placeholder URL. Please make the examples copy‑pasteable and add a one‑line expected outcome (e.g., “returns a proxy server instance”).
As per coding guidelines, keep examples runnable with realistic data and clear verification.♻️ Suggested edit
```python Before +from fastmcp import FastMCP -proxy = FastMCP.as_proxy("http://example.com/mcp") +proxy = FastMCP.as_proxy("https://api.acme.com/mcp")from fastmcp.server import create_proxy -proxy = create_proxy("http://example.com/mcp") +proxy = create_proxy("https://api.acme.com/mcp")</details> </blockquote></details> <details> <summary>docs/development/v3-notes/v3-features.mdx (5)</summary><blockquote> `389-425`: **Add steps/prereqs and make the FileSystemProvider example fully runnable.** The usage block assumes the `mcp/` directory exists and doesn’t show how to start or verify discovery. Consider a short Steps component with prerequisites (directory layout), a run command, expected output, and a brief troubleshooting note for import errors/reload behavior. As per coding guidelines, include prerequisites, runnable examples, and verification outcomes. --- `427-453`: **Include prerequisites and a verification outcome for tracing.** The snippet omits package install requirements and endpoint configuration. Add a short prerequisite note (required OpenTelemetry packages) plus a verification step (“confirm spans appear in <backend>”), and a minimal failure note if exporter init fails. As per coding guidelines, provide prerequisites, runnable steps, and expected outcomes. --- `455-494`: **Replace placeholder connections with a runnable lifespan example.** `connect_db()` / `connect_cache()` are undefined, so the snippet isn’t directly runnable. Please provide minimal stubs or a lightweight real example and state the expected merged context keys so readers can verify the result. As per coding guidelines, keep code examples runnable with explicit outcomes. --- `496-511`: **Provide a complete, error‑handling example for tool timeouts.** The current snippet uses an ellipsis and doesn’t show how timeout failures surface. Consider adding a minimal implementation (e.g., an HTTP call) with try/except and the expected error response so users can validate behavior. As per coding guidelines, include runnable examples with error handling and verification. --- `513-527`: **Add a brief troubleshooting note for PingMiddleware.** Consider noting how to tune `interval_ms` or disable pings if clients/proxies drop idle connections, and what “healthy” behavior looks like. As per coding guidelines, include likely failure points and troubleshooting. </blockquote></details> </blockquote></details> <details> <summary>📜 Review details</summary> **Configuration used**: Organization UI **Review profile**: CHILL **Plan**: Pro <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 7b9a01c7899fd4d38ffbc54f005f7fd960e59263 and 1d04598e0d375fc804d56f8169580fe49a12edb3. </details> <details> <summary>📒 Files selected for processing (2)</summary> * `docs/development/upgrade-guide.mdx` * `docs/development/v3-notes/v3-features.mdx` </details> <details> <summary>🧰 Additional context used</summary> <details> <summary>📓 Path-based instructions (1)</summary> <details> <summary>docs/**/*.mdx</summary> **📄 CodeRabbit inference engine (docs/.cursor/rules/mintlify.mdc)** > `docs/**/*.mdx`: Use clear, direct language appropriate for technical audiences > Write in second person ('you') for instructions and procedures in MDX documentation > Use active voice over passive voice in MDX technical documentation > Employ present tense for current states and future tense for outcomes in MDX documentation > Maintain consistent terminology throughout all MDX documentation > Keep sentences concise while providing necessary context in MDX documentation > Use parallel structure in lists, headings, and procedures in MDX documentation > Lead with the most important information using inverted pyramid structure in MDX documentation > Use progressive disclosure in MDX documentation: present basic concepts before advanced ones > Break complex procedures into numbered steps in MDX documentation > Include prerequisites and context before instructions in MDX documentation > Provide expected outcomes for each major step in MDX documentation > End sections with next steps or related information in MDX documentation > Use descriptive, keyword-rich headings for navigation and SEO in MDX documentation > Focus on user goals and outcomes rather than system features in MDX documentation > Anticipate common questions and address them proactively in MDX documentation > Include troubleshooting for likely failure points in MDX documentation > Provide multiple pathways (beginner vs advanced) but offer an opinionated path to avoid overwhelming users in MDX documentation > Always include complete, runnable code examples that users can copy and execute in MDX documentation > Show proper error handling and edge case management in MDX code examples > Use realistic data instead of placeholder values in MDX code examples > Include expected outputs and results for verification in MDX code examples > Test all code examples thoroughly before publishing in MDX documentation > Specify language and include filename when relevant in MDX code examples > Add explanatory comments for complex logic in MDX code examples > Document all API... Files: - `docs/development/v3-notes/v3-features.mdx` - `docs/development/upgrade-guide.mdx` </details> </details><details> <summary>🧠 Learnings (1)</summary> <details> <summary>📓 Common learnings</summary>Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-13T03:11:40.917Z
Learning: Evaluate whether documentation needs updating before creating a PR - new features/APIs require corresponding docs, and changed behavior should be reflected</details> </details> </details> <details> <summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)</summary> * GitHub Check: Run tests: Python 3.13 on ubuntu-latest * GitHub Check: Run tests: Python 3.10 on windows-latest * GitHub Check: Run tests: Python 3.10 on ubuntu-latest * GitHub Check: Run tests with lowest-direct dependencies </details> <details> <summary>🔇 Additional comments (2)</summary><blockquote> <details> <summary>docs/development/v3-notes/v3-features.mdx (2)</summary><blockquote> `529-548`: **LGTM—clear transport‑aware example.** Please just verify the literal transport strings match the implementation. --- `564-575`: **Looks good—verify defaults/timeouts match implementation.** </blockquote></details> </blockquote></details> <sub>✏️ Tip: You can disable this entire section by setting `review_details` to `false` in your review settings.</sub> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
docs/development/v3-notes/v3-features.mdx (1)
549-560: Add the missingimport timefor the sync threadpool example.The snippet uses
time.sleep()without importingtime, so it isn’t runnable as shown.✏️ Suggested fix
+import time + `@mcp.tool` def slow_tool(): time.sleep(10) # No longer blocks other requests return "done"
🧹 Nitpick comments (2)
docs/development/v3-notes/v3-features.mdx (2)
389-423: Add a short “run + verify” flow for FileSystemProvider.The section explains usage but doesn’t show how you run it or verify discovery. Consider adding a brief Steps-based quick start with prerequisites, a run command, and expected output (e.g., tool list) to align with the MDX documentation guidelines for runnable examples and verification.
496-509: Make the Tool Timeout example runnable with error handling + expected result.The example currently uses an ellipsis, so it isn’t runnable and doesn’t demonstrate error handling. Consider a minimal, complete example with an expected result line to match the MDX guidelines.
♻️ Proposed update
+import httpx + `@mcp.tool`(timeout=30.0) async def fetch_data(url: str) -> dict: """Fetch with 30-second timeout.""" - ... + try: + async with httpx.AsyncClient(timeout=30.0) as client: + resp = await client.get(url) + resp.raise_for_status() + return {"status_code": resp.status_code, "data": resp.json()} + except httpx.TimeoutException: + return {"error": "timeout", "url": url} + +# Expected result: {"status_code": 200, "data": {"id": 123, "status": "ok"}}
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/development/v3-notes/v3-features.mdx
🧰 Additional context used
📓 Path-based instructions (1)
docs/**/*.mdx
📄 CodeRabbit inference engine (docs/.cursor/rules/mintlify.mdc)
docs/**/*.mdx: Use clear, direct language appropriate for technical audiences
Write in second person ('you') for instructions and procedures in MDX documentation
Use active voice over passive voice in MDX technical documentation
Employ present tense for current states and future tense for outcomes in MDX documentation
Maintain consistent terminology throughout all MDX documentation
Keep sentences concise while providing necessary context in MDX documentation
Use parallel structure in lists, headings, and procedures in MDX documentation
Lead with the most important information using inverted pyramid structure in MDX documentation
Use progressive disclosure in MDX documentation: present basic concepts before advanced ones
Break complex procedures into numbered steps in MDX documentation
Include prerequisites and context before instructions in MDX documentation
Provide expected outcomes for each major step in MDX documentation
End sections with next steps or related information in MDX documentation
Use descriptive, keyword-rich headings for navigation and SEO in MDX documentation
Focus on user goals and outcomes rather than system features in MDX documentation
Anticipate common questions and address them proactively in MDX documentation
Include troubleshooting for likely failure points in MDX documentation
Provide multiple pathways (beginner vs advanced) but offer an opinionated path to avoid overwhelming users in MDX documentation
Always include complete, runnable code examples that users can copy and execute in MDX documentation
Show proper error handling and edge case management in MDX code examples
Use realistic data instead of placeholder values in MDX code examples
Include expected outputs and results for verification in MDX code examples
Test all code examples thoroughly before publishing in MDX documentation
Specify language and include filename when relevant in MDX code examples
Add explanatory comments for complex logic in MDX code examples
Document all API...
Files:
docs/development/v3-notes/v3-features.mdx
🧠 Learnings (5)
📓 Common learnings
Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-13T03:11:40.917Z
Learning: Evaluate whether documentation needs updating before creating a PR - new features/APIs require corresponding docs, and changed behavior should be reflected
📚 Learning: 2026-01-12T16:24:55.006Z
Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: .cursor/rules/core-mcp-objects.mdc:0-0
Timestamp: 2026-01-12T16:24:55.006Z
Learning: Applies to src/tools/**/*.{ts,tsx,js,jsx} : Changes affecting MCP Tools (like adding tags, importing, etc.) must be adopted, applied, and tested consistently
Applied to files:
docs/development/v3-notes/v3-features.mdx
📚 Learning: 2026-01-12T16:24:55.006Z
Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: .cursor/rules/core-mcp-objects.mdc:0-0
Timestamp: 2026-01-12T16:24:55.006Z
Learning: Applies to src/resources/**/*.{ts,tsx,js,jsx} : Changes affecting MCP Resources (like adding tags, importing, etc.) must be adopted, applied, and tested consistently
Applied to files:
docs/development/v3-notes/v3-features.mdx
📚 Learning: 2026-01-12T16:24:55.006Z
Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: .cursor/rules/core-mcp-objects.mdc:0-0
Timestamp: 2026-01-12T16:24:55.006Z
Learning: Applies to src/prompts/**/*.{ts,tsx,js,jsx} : Changes affecting MCP Prompts (like adding tags, importing, etc.) must be adopted, applied, and tested consistently
Applied to files:
docs/development/v3-notes/v3-features.mdx
📚 Learning: 2026-01-12T16:24:55.006Z
Learnt from: CR
Repo: jlowin/fastmcp PR: 0
File: .cursor/rules/core-mcp-objects.mdc:0-0
Timestamp: 2026-01-12T16:24:55.006Z
Learning: Maintain consistency across all four MCP object types (Tools, Resources, Resource Templates, and Prompts) when implementing similar features
Applied to files:
docs/development/v3-notes/v3-features.mdx
🪛 LanguageTool
docs/development/v3-notes/v3-features.mdx
[grammar] ~338-~338: Ensure spelling is correct
Context: ...or tools, resources, and prompts (#2855). Component-level auth: ```python from ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~449-~449: In American English, abbreviations like “etc.” require a period.
Context: ... context (original names, backend URIs, etc). Documentation: [Telemetry](/servers/...
(ETC_PERIOD)
[grammar] ~629-~629: Ensure spelling is correct
Context: ...lient transport has been removed (#2826). Use StreamableHttpTransport instead. ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Run tests: Python 3.10 on windows-latest
🔇 Additional comments (14)
docs/development/v3-notes/v3-features.mdx (14)
9-9: PR reference addition reads clearly.
103-103: Transforms section update looks good.
155-155: Visibility system update looks good.
179-179: Type-safe results summary is clear.
277-277: Decorator behavior change note is clear.
309-309: CLI auto-reload note looks good.
338-338: Component auth summary looks good.
455-492: Composable lifespans section looks good.
513-526: PingMiddleware section looks good.
529-546: Context.transport section looks good.
564-573: CLI update notifications section looks good.
629-629: WSTransport removal note is clear.
707-707: Auth provider env var change note is clear.
725-725: Server banner env var rename is clear.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
Several recent PRs added features without updating
v3-features.mdxorupgrade-guide.mdx. This adds the missing entries with PR links for release notes preparation.v3-features.mdx — 9 new sections:
upgrade-guide.mdx:
FastMCP.as_proxy()deprecation →create_proxy()(Replace FastMCP.as_proxy() with create_proxy() function #2829)