|
20 | 20 | from contextlib import asynccontextmanager |
21 | 21 | from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union, get_args, get_origin |
22 | 22 |
|
23 | | -import mcp.types as types |
24 | | -from fastapi import FastAPI |
25 | | -from mcp.server.fastmcp.server import _convert_to_content |
26 | | -from mcp.server.lowlevel import Server as MCPServer |
27 | | -from mcp.server.streamable_http_manager import StreamableHTTPSessionManager |
28 | 23 | from pydantic import BaseModel |
29 | 24 | from starlette.applications import Starlette |
30 | 25 | from starlette.routing import Mount |
31 | 26 | from starlette.types import Receive, Scope, Send |
32 | 27 |
|
33 | 28 | from litserve.utils import is_package_installed |
34 | 29 |
|
| 30 | +if not is_package_installed("fastmcp"): |
| 31 | + raise RuntimeError( |
| 32 | + "mcp package is required for MCP support. To install, run `pip install fastmcp` in the terminal." |
| 33 | + ) |
| 34 | + |
| 35 | +import mcp.types as types |
| 36 | +from fastapi import FastAPI |
| 37 | +from mcp.server.fastmcp.server import _convert_to_content |
| 38 | +from mcp.server.lowlevel import Server as MCPServer |
| 39 | +from mcp.server.streamable_http_manager import StreamableHTTPSessionManager |
| 40 | + |
35 | 41 | if TYPE_CHECKING: |
36 | 42 | from litserve.api import LitAPI |
37 | 43 |
|
@@ -364,9 +370,9 @@ def _connect(self, lit_api: "LitAPI"): |
364 | 370 | self._connected = True |
365 | 371 |
|
366 | 372 | def as_tool(self) -> ToolEndpointType: |
367 | | - if not is_package_installed("mcp"): |
| 373 | + if not is_package_installed("fastmcp"): |
368 | 374 | raise RuntimeError( |
369 | | - "MCP is not installed. Please install it with `pip install mcp[cli]` or `uv pip install mcp[cli]`" |
| 375 | + "fastmcp package is required for MCP support. To install, run `pip install fastmcp` in the terminal." |
370 | 376 | ) |
371 | 377 |
|
372 | 378 | if not self._connected: |
|
0 commit comments