marvin-context-protocol[bot]
marvin-context-protocol[bot]
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18238435712) --- ### Investigation Complete: Additional Examples Analysis ## Recommendation **Create 4-5 targeted example files** demonstrating patterns not currently well-represented in the examples directory....
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18238515693) --- ### Investigation Complete: Lifespan Behavior in FastMCP ## Recommendation **Create a contrib module `ServerLifespanMixin`** that provides true server-level lifespan management for shared...
**Claude finished @wipash's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18911017436) --- ### Investigation Complete ✅ ## Recommendation The bug is in `ResponseCachingMiddleware.on_list_tools()` (src/fastmcp/server/middleware/caching.py:242-255). When reconstructing cached `Tool` objects, the middleware only copies the...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18912758796) • [`claude/issue-2300-20251029-1512`](https://github.com/jlowin/fastmcp/tree/claude/issue-2300-20251029-1512) • [Create PR ➔](https://github.com/jlowin/fastmcp/compare/main...claude/issue-2300-20251029-1512?quick_pull=1&title=fix%3A%20preserve%20key%20field%20in%20ResponseCachingMiddleware%20for%20prefixed%20tools%2Fresources%2Fprompts&body=%23%23%20Summary%0A%0AThe%20ResponseCachingMiddleware%20was%20losing%20prefix%20information%20when%20caching%20tools%2C%20resources%2C%20and%20prompts%20from%20mounted%2Fimported%20servers.%20The%20root%20cause%20was%20that%20the%20private%20%60_key%60%20attribute%20wasn%27t%20being%20serialized%20by%20Pydantic.%0A%0A%23%23%23%20Example%0A%0ABefore%20this%20fix%3A%0A%60%60%60python%0Aparent%20%3D%20FastMCP%28%22parent%22%29%0Aparent.add_middleware%28ResponseCachingMiddleware%28%29%29%0Aawait%20parent.import_server%28child%2C%20prefix%3D%22child%22%29%0A%0A%23%20First%20call%20-%20works%0Atools%20%3D%20await%20client.list_tools%28%29%20%20%23%20Returns%20%5B%22child_example_tool%22%5D%0A%0A%23%20Second%20call%20-%20broken%0Atools%20%3D%20await%20client.list_tools%28%29%20%20%23%20Returns%20%5B%22example_tool%22%5D%20%28missing%20prefix%21%29%0A%60%60%60%0A%0AAfter%20this%20fix%2C%20both%20calls%20correctly%20return%20%60%5B%22child_example_tool%22%5D%60.%0A%0A%23%23%23%20Changes%0A%0A1.%20Fixed%20FastMCPComponent%20serialization%20to%20include%20the%20%60_key%60%20field%0A2.%20Updated%20caching%20middleware%20to%20preserve%20%60key%60%20when%20creating%20cacheable%20objects%0A3.%20Added%20comprehensive%20test%20coverage%0A%0AFixes%20%232300%0A%0AGenerated%20with%20%5BClaude%20Code%5D%28https%3A%2F%2Fclaude.ai%2Fcode%29) --- ### Reviewing caching methods and fixing prefix preservation - [x] Review all caching methods in ResponseCachingMiddleware...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18812351652) --- ### Investigation Complete ✓ ### Recommendation **Convert `BulkToolCaller` from an `MCPMixin`-based class to a `ToolInjectionMiddleware` implementation.** This aligns with the established pattern...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18819279688) • [`claude/issue-2262-20251026-1426`](https://github.com/jlowin/fastmcp/tree/claude/issue-2262-20251026-1426) • [Create PR ➔](https://github.com/jlowin/fastmcp/compare/main...claude/issue-2262-20251026-1426?quick_pull=1&title=feat%3A+convert+BulkToolCaller+to+middleware&body=%23%23+Summary%0A%0AConverts+the+BulkToolCaller+from+an+MCPMixin-based+implementation+to+a+ToolInjectionMiddleware%2C+following+the+pattern+established+in+%232142.+This+simplifies+usage+and+aligns+with+other+tool+injection+middleware+like+PromptToolMiddleware+and+ResourceToolMiddleware.%0A%0A%23%23+Changes%0A%0A-+Created+%60BulkToolCallerMiddleware%60+extending+%60ToolInjectionMiddleware%60%0A-+Added+%60bulk_tool_caller_types.py%60+to+avoid+circular+imports%0A-+Deprecated+original+%60BulkToolCaller%60+with+clear+migration+guidance%0A-+Maintained+backward+compatibility+by+re-exporting+types%0A-+Added+comprehensive+test+suite+for+middleware%0A%0A%23%23+Usage%0A%0ANew+approach%3A%0A%60%60%60python%0Amcp+%3D+FastMCP%28middleware%3D%5BBulkToolCallerMiddleware%28%29%5D%29%0A%60%60%60%0A%0AOld+approach+%28deprecated%29%3A%0A%60%60%60python%0Abulk_tool_caller+%3D+BulkToolCaller%28%29%0Abulk_tool_caller.register_tools%28mcp%29%0A%60%60%60%0A%0ACloses+%232262%0A%0A%F0%9F%A4%96+Generated+with+%5BClaude+Code%5D%28https%3A%2F%2Fclaude.ai%2Fcode%29%29+%7C+%5BView+branch%5D%28https%3A%2F%2Fgithub.com%2Fjlowin%2Ffastmcp%2Ftree%2Fclaude%2Fissue-2262-20251026-1426%29+%7C+%5BView+job+run%5D%28https%3A%2F%2Fgithub.com%2Fjlowin%2Ffastmcp%2Factions%2Fruns%2F18819279688) --- ### Implementation Complete ✓ Successfully converted BulkToolCaller to middleware while maintaining full backward compatibility. ### What...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/18916460704) --- ### Analysis: Custom Serializers vs. Custom Cacheable Models I've analyzed both approaches for preserving key fields in cached responses. Here's my recommendation:...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/19004248923) --- ### Analysis: Should We Remove `key` and Just Mutate Names? I've analyzed the codebase and the proposed alternative approach. Here's my assessment:...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/19004586487) --- ### Analysis: Do We Actually Need the `key` Field? **Verdict: No, we don't need the `key` field. You're absolutely right to question...
**Claude finished @strawgate's task** —— [View job](https://github.com/jlowin/fastmcp/actions/runs/19411916452) --- ### Analysis and Implementation ✅ #### Tasks - [x] Check current branch state and merge conflicts - [x] Analyze jlowin's concern about...