On this page
MCP (Model Context Protocol) server factory with caller-supplied role-to-tool provisioning via create_mcp_server and register_tools_for_role.
#src.fastware.mcp
#src.fastware.mcp
MCP (Model Context Protocol) server factory providing role-based agent tool provisioning, tool filtering, and stdio-based server lifecycle management.
Provides role-filtered tool registration and server creation for MCP agent processes. The role/tool domain model belongs to the caller: both create_mcp_server and register_tools_for_role take the roles mapping explicitly -- the framework ships no built-in roles.
The mcp package is an optional dependency -- this module is importable without it (and never imports it at module level), but create_mcp_server raises a clear error if the package is not installed.
#register_tools_for_role
def register_tools_for_role(server: Any, role: str, tool_modules: list[ModuleType], *, roles: dict[str, dict[str, Any]], default_role: str | None=None) -> dict[str, Callable[..., Any]]Register only the tools allowed by role on server.
Each module in tool_modules must define a TOOLS dict mapping tool name to the callable. Only tools listed in the role's config are registered.
Args:
roles: Role definitions dict mapping role name to a config dict
with a "tools" list. Required -- the framework has no built-in role model.
default_role: Fallback role used when role is not in roles.
If None, an unknown role is a hard error.
Returns the dict of registered tool name -> function.
#create_mcp_server
def create_mcp_server(name: str='fastware-agent', *, role: str | None=None, tool_modules: list[ModuleType] | None=None, roles: dict[str, dict[str, Any]] | None=None, default_role: str | None=None) -> AnyCreate a FastMCP server with role-filtered tools.
Parameters ---------- name: Server name passed to FastMCP. role: Agent role. If None, default_role is used (required in that case when tool_modules is given). tool_modules: List of modules that define a TOOLS dict. If None, no tools are registered (caller must register manually). roles: Role definitions dict. Required when tool_modules is given -- the framework has no built-in role model. default_role: Fallback role used when role is None or unknown.
Returns ------- FastMCP The configured server instance.
Raises ------ RuntimeError If the mcp package is not installed. ValueError If tool_modules is given without roles, or without either role or default_role.