Fastmcp Dishka
No description available
Ask AI about Fastmcp Dishka
Powered by Claude · Grounded in docs
I know everything about Fastmcp Dishka. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
FastMCP Dishka
Integration package for using dishka dependency injection with FastMCP tools, resources, and prompts.
It provides:
FastMCPProviderwith FastMCP request context objects for dishka.setup_dishka()middleware that opens aScope.REQUESTcontainer per tool/resource/prompt call.@injectsupport for parameters marked asFromDishka[T].
Usage
from dishka import Provider, Scope, make_async_container, provide
from fastmcp import FastMCP
from fastmcp_dishka import FastMCPProvider, FromDishka, inject, setup_dishka
class GreetingService:
def greet(self, name: str) -> str:
return f"Hello, {name}!"
class AppProvider(Provider):
greeting = provide(GreetingService, scope=Scope.REQUEST)
mcp = FastMCP("GreetMCP")
container = make_async_container(AppProvider(), FastMCPProvider())
setup_dishka(container, mcp)
@mcp.tool
@inject
async def greet(name: str, service: FromDishka[GreetingService]) -> str:
return service.greet(name)
Place @inject below FastMCP decorators so FastMCP registers the wrapped
function signature.
@mcp.prompt defines a reusable prompt template exposed to MCP clients. A
prompt does not perform an action like a tool; it returns text or chat messages
that a client can insert into an LLM conversation.
@mcp.prompt
@inject
async def welcome_prompt(
name: str,
service: FromDishka[GreetingService],
) -> str:
return f"Write a short welcome message for: {service.greet(name)}"
See examples/fastmcp_app.py for a complete FastMCP server with a tool, resource, prompt, and Dishka providers.
Development
Install development dependencies:
uv sync --dev
Run tests with coverage:
make test
Run linting and formatting:
make lint
make format
Install pre-commit hooks:
make pre-commit-install
