Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions fastapi_startkit/src/fastapi_startkit/mcp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@
from .response import Response
from .server import Server
from .tool import Tool
from .providers.mcp_provider import McpProvider

__all__ = [
"Argument",
"JsonRpcRequest",
"McpProvider",
"Prompt",
"Resource",
"Response",
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from fastapi_startkit.providers import Provider


class McpProvider(Provider):
"""Provider that bootstraps the MCP component for fastapi-startkit.

Register it alongside ``FastAPIProvider`` to make MCP available in
your application::

app = Application(providers=[FastAPIProvider, McpProvider])
"""

provider_key = "mcp"

def register(self) -> None:
"""Register MCP bindings into the container."""

def boot(self) -> None:
"""Boot the MCP component."""
29 changes: 29 additions & 0 deletions fastapi_startkit/tests/mcp/test_mcp_provider.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""Tests for McpProvider."""

from fastapi_startkit.mcp import McpProvider
from fastapi_startkit.providers import Provider


def test_mcp_provider_is_a_provider():
assert issubclass(McpProvider, Provider)


def test_mcp_provider_key():
assert McpProvider.provider_key == "mcp"


def test_register_is_callable():
# Should not raise
class FakeApp:
pass

provider = McpProvider(FakeApp())
provider.register()


def test_boot_is_callable():
class FakeApp:
pass

provider = McpProvider(FakeApp())
provider.boot()
Loading