# Config - FreeCAD Robust MCP Suite
FreeCAD Robust MCP Suite - MCP Server, Bridge Workbench, and Macros for AI assistant integration

Skip to content

# Configuration API Reference

## `freecad_mcp.config`

Configuration management for FreeCAD Robust MCP Server.

This module handles all configuration settings for the Robust MCP Server, including FreeCAD connection settings, execution limits, and logging.

### Classes

#### `FreecadMode`

Bases: `str`, `Enum`

FreeCAD connection mode.

Source code in `src/freecad_mcp/config.py`

    15
    16
    17
    18
    19
    20

    class FreecadMode(str, Enum):
        """FreeCAD connection mode."""

        EMBEDDED = "embedded"
        SOCKET = "socket"
        XMLRPC = "xmlrpc"

#### `ServerConfig`

Bases: `BaseSettings`

Configuration for the FreeCAD Robust MCP Server.

Settings are loaded from environment variables with the FREECAD_ prefix. For example, FREECAD_MODE sets the mode field.

Attributes:

Name | Type | Description
--- | --- | ---
`mode` | `FreecadMode` | Connection mode - 'embedded', 'socket', or 'xmlrpc'.
`freecad_path` | `Annotated[Path | None, Field(description="Path to FreeCAD's lib directory", alias=FREECAD_PATH)]` | Path to FreeCAD's lib directory (for embedded mode).
`socket_host` | `Annotated[str, Field(description='Socket/XML-RPC server hostname')]` | Hostname for socket/xmlrpc connection.
`socket_port` | `Annotated[int, Field(ge=1, le=65535, description='Socket server port (JSON-RPC)')]` | Port for JSON-RPC socket connection (default 9876).
`xmlrpc_port` | `Annotated[int, Field(ge=1, le=65535, description='XML-RPC server port (neka-nat compatible)')]` | Port for XML-RPC connection (default 9875, neka-nat compatible).
`timeout_ms` | `Annotated[int, Field(ge=1000, le=600000, description='Execution timeout in ms')]` | Default execution timeout in milliseconds.
`max_output_size` | `Annotated[int, Field(ge=1000, description='Maximum output size in bytes')]` | Maximum output size in bytes.
`transport` | `TransportType` | MCP transport type.
`http_port` | `Annotated[int, Field(ge=1, le=65535, description='HTTP server port')]` | Port for HTTP transport.
`log_level` | `str` | Logging level.

Source code in `src/freecad_mcp/config.py`

     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103

    class ServerConfig(BaseSettings):
        """Configuration for the FreeCAD Robust MCP Server.

        Settings are loaded from environment variables with the FREECAD_ prefix.
        For example, FREECAD_MODE sets the mode field.

        Attributes:
            mode: Connection mode - 'embedded', 'socket', or 'xmlrpc'.
            freecad_path: Path to FreeCAD's lib directory (for embedded mode).
            socket_host: Hostname for socket/xmlrpc connection.
            socket_port: Port for JSON-RPC socket connection (default 9876).
            xmlrpc_port: Port for XML-RPC connection (default 9875, neka-nat compatible).
            timeout_ms: Default execution timeout in milliseconds.
            max_output_size: Maximum output size in bytes.
            transport: MCP transport type.
            http_port: Port for HTTP transport.
            log_level: Logging level.
        """

        model_config = SettingsConfigDict(
            env_prefix="FREECAD_",
            env_file=".env",
            env_file_encoding="utf-8",
            case_sensitive=False,
        )

        # FreeCAD connection settings
        mode: FreecadMode = FreecadMode.EMBEDDED
        freecad_path: Annotated[
            Path | None,
            Field(
                description="Path to FreeCAD's lib directory",
                alias="FREECAD_PATH",
            ),
        ] = None

        # Socket settings (for socket mode)
        socket_host: Annotated[
            str,
            Field(description="Socket/XML-RPC server hostname"),
        ] = "localhost"
        socket_port: Annotated[
            int,
            Field(ge=1, le=65535, description="Socket server port (JSON-RPC)"),
        ] = 9876
        xmlrpc_port: Annotated[
            int,
            Field(ge=1, le=65535, description="XML-RPC server port (neka-nat compatible)"),
        ] = 9875

        # Execution limits
        timeout_ms: Annotated[
            int,
            Field(ge=1000, le=600000, description="Execution timeout in ms"),
        ] = 30000
        max_output_size: Annotated[
            int,
            Field(ge=1000, description="Maximum output size in bytes"),
        ] = 1_000_000

        # MCP transport settings
        transport: TransportType = TransportType.STDIO
        http_port: Annotated[
            int,
            Field(ge=1, le=65535, description="HTTP server port"),
        ] = 8000

        # Logging
        log_level: str = "INFO"

        # Security settings
        enable_sandbox: bool = True
        allow_file_access: bool = True
        allow_network_access: bool = False

#### `TransportType`

Bases: `str`, `Enum`

MCP transport type.

Source code in `src/freecad_mcp/config.py`

    23
    24
    25
    26
    27

    class TransportType(str, Enum):
        """MCP transport type."""

        STDIO = "stdio"
        HTTP = "http"

### Functions

#### `get_config()`

Get the server configuration.

Returns:

Type | Description
--- | ---
`ServerConfig` | ServerConfig instance populated from environment variables.

Source code in `src/freecad_mcp/config.py`

    106
    107
    108
    109
    110
    111
    112

    def get_config() -> ServerConfig:
        """Get the server configuration.

        Returns:
            ServerConfig instance populated from environment variables.
        """
        return ServerConfig()

options: show_root_heading: true show_source: true

2026-01-06
2026-01-06