Skip to content

Commit 0ec8a37

Browse files
committed
fix: expose enable_tasks() on MCPServer
Github-Issue: #1995
1 parent 239d682 commit 0ec8a37

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/mcp/server/mcpserver/server.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from mcp.server.context import LifespanContextT, RequestT, ServerRequestContext
2929
from mcp.server.elicitation import ElicitationResult, ElicitSchemaModelT, UrlElicitationResult, elicit_with_validation
3030
from mcp.server.elicitation import elicit_url as _elicit_url
31+
from mcp.server.experimental.task_support import TaskSupport
3132
from mcp.server.lowlevel.helper_types import ReadResourceContents
3233
from mcp.server.lowlevel.server import LifespanResultT, Server
3334
from mcp.server.lowlevel.server import lifespan as default_lifespan
@@ -42,6 +43,8 @@
4243
from mcp.server.streamable_http import EventStore
4344
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
4445
from mcp.server.transport_security import TransportSecuritySettings
46+
from mcp.shared.experimental.tasks.message_queue import TaskMessageQueue
47+
from mcp.shared.experimental.tasks.store import TaskStore
4548
from mcp.types import Annotations, ContentBlock, GetPromptResult, Icon, ToolAnnotations
4649
from mcp.types import Prompt as MCPPrompt
4750
from mcp.types import PromptArgument as MCPPromptArgument
@@ -488,6 +491,17 @@ async def handle_completion(ref, argument, context):
488491
"""
489492
return self._lowlevel_server.completion()
490493

494+
def enable_tasks(
495+
self,
496+
store: TaskStore | None = None,
497+
queue: TaskMessageQueue | None = None,
498+
) -> TaskSupport:
499+
"""Enable experimental task support.
500+
501+
WARNING: This API is experimental and may change without notice.
502+
"""
503+
return self._lowlevel_server.experimental.enable_tasks(store=store, queue=queue)
504+
491505
def add_resource(self, resource: Resource) -> None:
492506
"""Add a resource to the server.
493507

tests/experimental/tasks/test_spec_compliance.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,19 @@ async def handle_get(req: GetTaskRequest) -> GetTaskResult:
138138
assert caps.tasks.requests.tools is not None
139139

140140

141+
def test_mcpserver_enable_tasks_sets_capability() -> None:
142+
"""MCPServer.enable_tasks() sets tasks.requests.tools.call capability."""
143+
from mcp.server.mcpserver.server import MCPServer
144+
145+
mcp = MCPServer("test")
146+
mcp.enable_tasks()
147+
caps = _get_capabilities(mcp._lowlevel_server)
148+
assert caps.tasks is not None
149+
assert caps.tasks.requests is not None
150+
assert caps.tasks.requests.tools is not None
151+
assert caps.tasks.requests.tools.call is not None
152+
153+
141154
class TestClientCapabilities:
142155
"""Clients declare:
143156
- tasks.list — supports listing operations

0 commit comments

Comments
 (0)