fastmcp/tests/tasks/server/test_task_capabilities.py

40 lines
1.2 KiB
Python

"""Advertisement of the SEP-2663 tasks extension capability.
A server with the tasks extension registered advertises the
`io.modelcontextprotocol/tasks` extension in its capabilities; a server without
it does not.
"""
from __future__ import annotations
from fastmcp import FastMCP
from fastmcp.client import Client
from fastmcp.utilities.tasks import TASKS_EXTENSION_ID
from fastmcp_tasks import TasksExtension
async def test_extension_capability_advertised():
"""The tasks extension is advertised when registered."""
mcp = FastMCP("capability-test")
mcp.add_extension(TasksExtension())
@mcp.tool(task=True)
async def my_tool() -> str:
return "ok"
async with Client(mcp, mode="auto") as client:
extensions = client.server_capabilities.extensions or {}
assert extensions.get(TASKS_EXTENSION_ID) == {}
async def test_extension_capability_absent_without_extension():
"""The tasks extension is not advertised when no extension is registered."""
mcp = FastMCP("capability-test")
@mcp.tool
async def my_tool() -> str:
return "ok"
async with Client(mcp, mode="auto") as client:
extensions = client.server_capabilities.extensions or {}
assert TASKS_EXTENSION_ID not in extensions