fastware v0.6.0 /src.fastware.mcp
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

python
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

python
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) -> Any

Create 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.

Search