Skip to content

Commit fa8166f

Browse files
authored
Merge pull request #89 from fastapi-startkit/feat/mcp-provider
feat(mcp): add McpProvider base class
2 parents 6ed1ba5 + 16ac7b0 commit fa8166f

4 files changed

Lines changed: 50 additions & 0 deletions

File tree

fastapi_startkit/src/fastapi_startkit/mcp/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
from .response import Response
1212
from .server import Server
1313
from .tool import Tool
14+
from .providers.mcp_provider import McpProvider
1415

1516
__all__ = [
1617
"Argument",
1718
"JsonRpcRequest",
19+
"McpProvider",
1820
"Prompt",
1921
"Resource",
2022
"Response",

fastapi_startkit/src/fastapi_startkit/mcp/providers/__init__.py

Whitespace-only changes.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from fastapi_startkit.providers import Provider
2+
3+
4+
class McpProvider(Provider):
5+
"""Provider that bootstraps the MCP component for fastapi-startkit.
6+
7+
Register it alongside ``FastAPIProvider`` to make MCP available in
8+
your application::
9+
10+
app = Application(providers=[FastAPIProvider, McpProvider])
11+
"""
12+
13+
provider_key = "mcp"
14+
15+
def register(self) -> None:
16+
"""Register MCP bindings into the container."""
17+
18+
def boot(self) -> None:
19+
"""Boot the MCP component."""
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""Tests for McpProvider."""
2+
3+
from fastapi_startkit.mcp import McpProvider
4+
from fastapi_startkit.providers import Provider
5+
6+
7+
def test_mcp_provider_is_a_provider():
8+
assert issubclass(McpProvider, Provider)
9+
10+
11+
def test_mcp_provider_key():
12+
assert McpProvider.provider_key == "mcp"
13+
14+
15+
def test_register_is_callable():
16+
# Should not raise
17+
class FakeApp:
18+
pass
19+
20+
provider = McpProvider(FakeApp())
21+
provider.register()
22+
23+
24+
def test_boot_is_callable():
25+
class FakeApp:
26+
pass
27+
28+
provider = McpProvider(FakeApp())
29+
provider.boot()

0 commit comments

Comments
 (0)