# teknovizier/tekla_mcp_server architecture

> Architecture diagram of the GitHub repository teknovizier/tekla_mcp_server, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/teknovizier/tekla_mcp_server
- Repository: https://github.com/teknovizier/tekla_mcp_server

## Overview

Tekla MCP Server exposes Tekla Structures modeling and drawing capabilities to MCP clients through modular tool and resource providers. A typical workflow is a client request routed by the server to a provider, which uses Tekla wrappers and OpenAPI to query or modify the active model and returns a result. The README also documents resource discovery, component plugins, semantic property mapping, and read-only/category access controls. Connections below follow the README and source-index references; unsampled provider internals are not assumed.

Main entry points: [`src/tekla_mcp_server/mcp_server.py`](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/mcp_server.py) (MCP server), [`src/tekla_mcp_server/providers/drawings_provider.py`](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/drawings_provider.py) (Drawing tools), [`src/tekla_mcp_server/tekla/wrappers/model.py`](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model.py) (Model connection), [`src/tekla_mcp_server/tekla/wrappers/model_object.py`](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model_object.py) (Model objects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["MCP entry and policy"]
  node_server["MCP server<br/>[mcp_server.py]"]
  node_config["Configuration<br/>[config.py]"]
  node_startup["Runtime initialization<br/>[init.py]"]
end

subgraph group_providers["MCP capabilities"]
  node_resources["Resource discovery"]
  node_selection["Selection tools"]
  node_view["View tools<br/>[view_provider.py]"]
  node_properties["Property tools"]
  node_components["Component tools"]
  node_operations["Model operations"]
  node_modeling["Modeling tools"]
  node_drawings["Drawing tools"]
end

subgraph group_tekla["Tekla integration"]
  node_model["Model connection<br/>[model.py]"]
  node_model_objects["Model objects<br/>[model_object.py]"]
  node_drawing_objects["Drawing objects<br/>[drawing.py]"]
  node_drawing_handler["Drawing handler<br/>[drawing_handler.py]"]
end

subgraph group_support["Domain support"]
  node_models["Domain models<br/>[models.py]"]
  node_component_handlers["Component plugins"]
  node_semantic["Semantic mapping"]
  node_embeddings["Embedding support<br/>[embeddings.py]"]
  node_drawing_utils["Drawing utilities<br/>[drawing_utils.py]"]
  node_export["DXF operations<br/>[dxf_operations.py]"]
  node_clash["Clash checks<br/>[clash_check.py]"]
  node_filter["Filter builder<br/>[filter_builder.py]"]
  node_loader["OpenAPI loader<br/>[loader.py]"]
end

node_client(("MCP client"))
node_openapi["Tekla OpenAPI"]

node_client -->|"sends requests"| node_server
node_server -->|"registers tools"| node_selection
node_server -->|"registers tools"| node_view
node_server -->|"registers tools"| node_properties
node_server -->|"registers tools"| node_components
node_server -->|"registers tools"| node_operations
node_server -->|"registers tools"| node_modeling
node_server -->|"registers tools"| node_drawings
node_server -->|"registers resources"| node_resources
node_server -->|"loads policy"| node_config
node_server -->|"initializes runtime"| node_startup
node_config -->|"configures loading"| node_startup
node_components -->|"uses wrapper"| node_model
node_components -->|"uses wrapper"| node_model_objects
node_components -->|"dispatches plugins"| node_component_handlers
node_properties -->|"uses wrapper"| node_model
node_properties -->|"uses wrapper"| node_model_objects
node_properties -->|"resolves attributes"| node_semantic
node_operations -->|"uses wrapper"| node_model
node_operations -->|"uses wrapper"| node_model_objects
node_operations -->|"checks clashes"| node_clash
node_modeling -->|"uses wrapper"| node_model
node_modeling -->|"uses wrapper"| node_model_objects
node_drawings -->|"uses wrapper"| node_drawing_objects
node_drawings -->|"uses wrapper"| node_drawing_handler
node_drawings -->|"uses utilities"| node_drawing_utils
node_drawings -->|"uses DXF operations"| node_export
node_drawings -->|"uses wrapper"| node_model
node_drawings -->|"uses wrapper"| node_model_objects
node_resources -->|"uses wrapper"| node_model
node_resources -->|"reads settings"| node_config
node_model -->|"connects to"| node_openapi
node_model_objects -.->|"wraps objects"| node_openapi
node_drawing_handler -->|"controls drawings"| node_openapi
node_drawing_handler -->|"wraps active drawing"| node_drawing_objects
node_model -->|"imports API types"| node_loader
node_model_objects -->|"imports API types"| node_loader
node_drawing_objects -->|"imports API types"| node_loader
node_semantic -->|"uses embeddings"| node_embeddings
node_server -->|"enables mapping"| node_semantic
node_components -->|"uses schemas"| node_models
node_properties -.->|"uses schemas"| node_models
node_drawings -->|"uses schemas"| node_models
node_modeling -->|"uses schemas"| node_models
node_operations -->|"uses schemas"| node_models

click node_server "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/mcp_server.py"
click node_config "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/config.py"
click node_startup "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/init.py"
click node_resources "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/resources_provider.py"
click node_selection "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/selection_provider.py"
click node_view "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/view_provider.py"
click node_properties "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/properties_provider.py"
click node_components "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/components_provider.py"
click node_operations "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/operations_provider.py"
click node_modeling "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/modeling_provider.py"
click node_drawings "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/drawings_provider.py"
click node_model "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model.py"
click node_model_objects "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model_object.py"
click node_drawing_objects "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/drawing.py"
click node_drawing_handler "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/drawing_handler.py"
click node_models "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/models.py"
click node_component_handlers "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/component_handlers.py"
click node_semantic "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/template_attrs_parser.py"
click node_embeddings "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/embeddings.py"
click node_drawing_utils "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/drawing_utils.py"
click node_export "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/dxf_operations.py"
click node_clash "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/clash_check.py"
click node_filter "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/filter_builder.py"
click node_loader "https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/loader.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_config,node_startup,node_client toneBlue
class node_resources,node_selection,node_view,node_properties,node_components,node_operations,node_modeling,node_drawings toneAmber
class node_model,node_model_objects,node_drawing_objects,node_drawing_handler,node_openapi toneMint
class node_models,node_component_handlers,node_semantic,node_embeddings,node_drawing_utils,node_export,node_clash,node_filter,node_loader toneRose
```

## Components

### MCP entry and policy

- [MCP server](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/mcp_server.py): `src/tekla_mcp_server/mcp_server.py`
- [Configuration](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/config.py): `src/tekla_mcp_server/config.py`
- [Runtime initialization](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/init.py): `src/tekla_mcp_server/init.py`

### MCP capabilities

- [Resource discovery](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/resources_provider.py): `src/tekla_mcp_server/providers/resources_provider.py`
- [Selection tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/selection_provider.py): `src/tekla_mcp_server/providers/selection_provider.py`
- [View tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/view_provider.py): `src/tekla_mcp_server/providers/view_provider.py`
- [Property tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/properties_provider.py): `src/tekla_mcp_server/providers/properties_provider.py`
- [Component tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/components_provider.py): `src/tekla_mcp_server/providers/components_provider.py`
- [Model operations](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/operations_provider.py): `src/tekla_mcp_server/providers/operations_provider.py`
- [Modeling tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/modeling_provider.py): `src/tekla_mcp_server/providers/modeling_provider.py`
- [Drawing tools](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/providers/drawings_provider.py): `src/tekla_mcp_server/providers/drawings_provider.py`

### Tekla integration

- [Model connection](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model.py): `src/tekla_mcp_server/tekla/wrappers/model.py`
- [Model objects](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/model_object.py): `src/tekla_mcp_server/tekla/wrappers/model_object.py`
- [Drawing objects](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/drawing.py): `src/tekla_mcp_server/tekla/wrappers/drawing.py`
- [Drawing handler](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/wrappers/drawing_handler.py): `src/tekla_mcp_server/tekla/wrappers/drawing_handler.py`

### Domain support

- [Domain models](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/models.py): `src/tekla_mcp_server/models.py`
- [Component plugins](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/component_handlers.py): `src/tekla_mcp_server/tekla/component_handlers.py`
- [Semantic mapping](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/template_attrs_parser.py): `src/tekla_mcp_server/tekla/template_attrs_parser.py`
- [Embedding support](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/embeddings.py): `src/tekla_mcp_server/embeddings.py`
- [Drawing utilities](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/drawing_utils.py): `src/tekla_mcp_server/tekla/drawing_utils.py`
- [DXF operations](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/dxf_operations.py): `src/tekla_mcp_server/dxf_operations.py`
- [Clash checks](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/clash_check.py): `src/tekla_mcp_server/tekla/clash_check.py`
- [Filter builder](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/filter_builder.py): `src/tekla_mcp_server/tekla/filter_builder.py`
- [OpenAPI loader](https://github.com/teknovizier/tekla_mcp_server/blob/main/src/tekla_mcp_server/tekla/loader.py): `src/tekla_mcp_server/tekla/loader.py`

### Other components

- **MCP client**
- **Tekla OpenAPI**

## Connections

- MCP client → MCP server: sends requests (evidence: `README.md`)
- MCP server → Selection tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → View tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Property tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Component tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Model operations: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Modeling tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Drawing tools: registers tools (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Resource discovery: registers resources (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Configuration: loads policy (evidence: `src/tekla_mcp_server/mcp_server.py`)
- MCP server → Runtime initialization: initializes runtime (evidence: `src/tekla_mcp_server/mcp_server.py`)
- Configuration → Runtime initialization: configures loading (evidence: `src/tekla_mcp_server/config.py`)
- Component tools → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/components_provider.py`)
- Component tools → Model objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/components_provider.py`)
- Component tools → Component plugins: dispatches plugins (evidence: `src/tekla_mcp_server/providers/components_provider.py`)
- Property tools → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/properties_provider.py`)
- Property tools → Model objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/properties_provider.py`)
- Property tools → Semantic mapping: resolves attributes (evidence: `src/tekla_mcp_server/providers/properties_provider.py`)
- Model operations → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/operations_provider.py`)
- Model operations → Model objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/operations_provider.py`)
- Model operations → Clash checks: checks clashes (evidence: `src/tekla_mcp_server/providers/operations_provider.py`)
- Modeling tools → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/modeling_provider.py`)
- Modeling tools → Model objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/modeling_provider.py`)
- Drawing tools → Drawing objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Drawing tools → Drawing handler: uses wrapper (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Drawing tools → Drawing utilities: uses utilities (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Drawing tools → DXF operations: uses DXF operations (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Drawing tools → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Drawing tools → Model objects: uses wrapper (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Resource discovery → Model connection: uses wrapper (evidence: `src/tekla_mcp_server/providers/resources_provider.py`)
- Resource discovery → Configuration: reads settings (evidence: `src/tekla_mcp_server/providers/resources_provider.py`)
- Model connection → Tekla OpenAPI: connects to (evidence: `src/tekla_mcp_server/tekla/wrappers/model.py`)
- Model objects → Tekla OpenAPI: wraps objects (evidence: `src/tekla_mcp_server/tekla/wrappers/model_object.py`)
- Drawing handler → Tekla OpenAPI: controls drawings (evidence: `src/tekla_mcp_server/tekla/wrappers/drawing_handler.py`)
- Drawing handler → Drawing objects: wraps active drawing (evidence: `src/tekla_mcp_server/tekla/wrappers/drawing_handler.py`)
- Model connection → OpenAPI loader: imports API types (evidence: `src/tekla_mcp_server/tekla/wrappers/model.py`)
- Model objects → OpenAPI loader: imports API types (evidence: `src/tekla_mcp_server/tekla/wrappers/model_object.py`)
- Drawing objects → OpenAPI loader: imports API types (evidence: `src/tekla_mcp_server/tekla/wrappers/drawing.py`)
- Semantic mapping → Embedding support: uses embeddings (evidence: `src/tekla_mcp_server/tekla/template_attrs_parser.py`)
- MCP server → Semantic mapping: enables mapping (evidence: `src/tekla_mcp_server/mcp_server.py`)
- Component tools → Domain models: uses schemas (evidence: `src/tekla_mcp_server/providers/components_provider.py`)
- Property tools → Domain models: uses schemas (evidence: `src/tekla_mcp_server/providers/properties_provider.py`)
- Drawing tools → Domain models: uses schemas (evidence: `src/tekla_mcp_server/providers/drawings_provider.py`)
- Modeling tools → Domain models: uses schemas (evidence: `src/tekla_mcp_server/providers/modeling_provider.py`)
- Model operations → Domain models: uses schemas (evidence: `src/tekla_mcp_server/providers/operations_provider.py`)
