duck.contrib.mcp.capabilities.accessor

Explicit, traceable accessor for MCP capabilities.

Provides attribute-style access to registered capabilities with clear error messages and discovery methods.

Module Contents

Classes

CapabilityAccessor

Explicit, traceable accessor for MCP capabilities.

API

class duck.contrib.mcp.capabilities.accessor.CapabilityAccessor(view: MCPView)[source]

Explicit, traceable accessor for MCP capabilities.

Provides attribute-style access to registered capabilities with clear error messages and discovery methods.

Example:

capabilities = CapabilityAccessor(view)

capabilities.tools                # Returns ToolsCapability
capabilities.server              # Returns aliased capability
capabilities.get('tools')      # Safe get with default
capabilities.has('server')   # Check existence
capabilities.list()                 # List all capabilities

Initialization

__dir__()[source]

Help with autocomplete in IDEs.

__getattr__(name: str)[source]

Attribute-style access to capabilities.

… rubric:: Example

self.capabilities.tools self.capabilities.server

get(name: str, default=None)[source]

Get a capability by name or alias.

Parameters:
  • name – Capability name or alias

  • default – Value to return if capability doesn’t exist

Example:

server_cap = self.capabilities.get('_server_requests')
if server_cap:
    await server_cap.send_request(...)
has(name: str) bool[source]

Check if a capability exists (by name or alias).

list() Dict[str, str][source]

List all registered capabilities and their aliases.

Returns:

Dict mapping capability names to their aliases (or None)

register(name: str, capability: duck.contrib.mcp.capabilities.Capability, alias: str = None) duck.contrib.mcp.capabilities.Capability[source]

Internal: Register a capability.

property registry: Dict[str, duck.contrib.mcp.capabilities.Capability]

Public property for the capabilities registry.

set_alias(alias: str, capability_name: str)[source]

Create an alias for a capability.

Parameters:
  • alias – Short name to use (e.g., ‘server’, ‘tools’)

  • capability_name – The registered capability name (e.g., ‘_server_requests’)

Example:

capabilities.set_alias('server', '_server_requests')
# Now capabilities.server works
unregister(name: str) duck.contrib.mcp.capabilities.Capability[source]

Internal: Unregister a capability.