mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-10-24 13:51:26 +02:00
Add opt-in filesystem Skills discovery to the existing resource provider. Continues #5016. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import pytest
|
|
|
|
from fastmcp import Client, FastMCP
|
|
from fastmcp.server.extensions import ServerExtension
|
|
from fastmcp.server.middleware.caching import ResponseCachingMiddleware
|
|
|
|
|
|
@pytest.mark.parametrize("register_extension", [False, True])
|
|
async def test_extension_live_reads_do_not_disable_unrelated_caching(
|
|
register_extension: bool,
|
|
):
|
|
class LiveReads(ServerExtension):
|
|
identifier = "example.com/live-reads"
|
|
|
|
def _requires_live_resource(self, uri: str) -> bool:
|
|
return uri == "data://live"
|
|
|
|
calls = {"live": 0, "cached": 0}
|
|
server = FastMCP("Caching", middleware=[ResponseCachingMiddleware()])
|
|
if register_extension:
|
|
server.add_extension(LiveReads())
|
|
|
|
@server.resource("data://{name}")
|
|
def resource(name: str) -> str:
|
|
calls[name] += 1
|
|
return str(calls[name])
|
|
|
|
async with Client(server) as client:
|
|
for name in calls:
|
|
await client.read_resource(f"data://{name}")
|
|
contents = await client.read_resource(f"data://{name}")
|
|
expected = 2 if name == "live" and register_extension else 1
|
|
assert contents[0].text == str(expected)
|
|
assert calls == {"live": 2 if register_extension else 1, "cached": 1}
|