Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ConfigurationDesk MCP Server

This MCP server automates dSPACE ConfigurationDesk and Bus Manager via their COM automation interfaces. It provides project, application, hardware, bus-configuration, communication-matrix, and build automation through 77 tools, 11 resources, and 15 prompts.

ConfigurationDesk and Bus Manager are useful partners for AI-driven real-time application configuration: a AI agent can create and adapt a configuration, while the dSPACE tools provide the domain operations, COM automation, and build integration on a local Windows machine.

Prerequisites

  • 64-bit Windows 10/11 (COM automation requires Windows)
  • uv, the Python package and project manager used to create the environment, install dependencies, and run the server from this checkout
  • dSPACE ConfigurationDeskinstalled with a valid license and registered for COM automation when using COM tools
  • An MCP client, for example, VS Code, Cursor, Claude Code, or Claude Desktop

The server does not include ConfigurationDesk, a ConfigurationDesk license, hardware drivers, or project assets. You can install the server, print its version, and list tools without ConfigurationDesk. COM automation calls require a local licensed ConfigurationDesk installation. See the compatibility matrix for tested Python and ConfigurationDesk versions.

See the compatibility matrix for the supported Windows, Python, ConfigurationDesk, Bus Manager, and transport combinations.

Installation

  1. Open the repository folder.
  2. Create the project environment and install runtime dependencies from the workspace manifests:
uv sync --frozen --all-packages --no-dev

For contributor tools such as Ruff and pytest, use uv sync --frozen --all-packages instead.

Using the ConfigurationDesk MCP Server with an MCP Client

  1. In your MCP client, add a new MCP server.

  2. Configure it as a stdio MCP server using the included launcher:

    C:\path\to\ConfigurationDeskBusManagerMCP\ConfigurationDeskMCP.cmd

    For example, add the following entry to .vscode/mcp.json:

    {
    "servers": {
    "configurationdesk-mcp": {
    "type": "stdio",
    "command": "C:\\path\\to\\ConfigurationDeskBusManagerMCP\\ConfigurationDeskMCP.cmd",
    "args": []
    }
    }
    }

A downloaded Windows executable can be configured the same way; see Windows Executable.

  1. Reconnect or reload MCP servers in the client.

  2. Run a quick check prompt, for example: "Call start_configurationdesk() if ConfigurationDesk is installed. If startup fails, call diagnose_connection()."

Usage (Tool Order)

Recommended flow:

  1. start_configurationdesk()
  2. create_project(...) or open_project(...)
  3. Use the appropriate domain tools, such as add_application(...), create_bus_configuration(...), or build_application(...)
  4. close_project(...)
  5. stop_configurationdesk()

Important:

  • The COM connection is deferred until start_configurationdesk() is called.
  • Close blocking dialogs in ConfigurationDesk before retrying a failed COM operation.

Running the MCP Server

After the runtime setup, start the server with the included launcher:

.\ConfigurationDeskMCP.cmd

Verify the installation without launching ConfigurationDesk:

.\ConfigurationDeskMCP.cmd--version
.\ConfigurationDeskMCP.cmd--list-tools
.\ConfigurationDeskMCP.cmd--list-resources
.\ConfigurationDeskMCP.cmd--list-prompts

At a Glance

I want to...Go to
Change transport, logging, or COM settingsConfigure · Configuration reference
Add a tool or a new domainExtend · Extending guide
Understand the designArchitecture · COM bridge
Look up a toolTool reference

Windows Executable

GitHub Releases may include a downloadable Windows x64 executable. It bundles the Python server and open-source Python dependencies, but not ConfigurationDesk or its license.

.\configurationdesk-mcp.exe--version
.\configurationdesk-mcp.exe--list-tools

Verify the matching SHA-256 checksum before use. See Windows Executable for download verification, MCP Inspector, and host configuration.

MCP Host Configuration

Configure your MCP host to launch either the uv-installed entry point or the downloaded executable. For example:

{
"servers": {
"configurationdesk-mcp": {
"type": "stdio",
"command": "C:\\path\\to\\configurationdesk-mcp.exe"
}
}
}

The supported public transport is local MCP stdio. See MCP Clients for host-specific configuration examples.

Configuring the MCP Server

Every setting has a safe default - the server runs with no configuration in stdio mode. Override settings through process environment variables or a .envfile. Copy .env.example to .env to start from a documented template.

VariableDefaultDescription
MCP_TRANSPORTstdioSupported public transport; streamable-http is a local opt-in only
MCP_ENABLE_STREAMABLE_HTTPfalseRequired to enable loopback-only streamable HTTP
MCP_HOST127.0.0.1Loopback host for the optional HTTP transport
MCP_PORT8000Bind port (HTTP transport only)
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL (logs go to stderr)
COM_TIMEOUT_MS30000Timeout for a single COM call (500–120000)
COM_LAUNCH_TIMEOUT_MS30000Wait for ConfigurationDesk to start (5000–120000)
COM_RECONNECT_ATTEMPTS3Reconnects after a dropped COM connection (1–10)
CONFIGURATIONDESK_PROGIDConfigurationDesk.ApplicationCOM ProgID override (pin a version)
CONFIGURATIONDESK_COMMON_PATH(unset)Path to the dSPACE COM Enums helper package

See the full Configuration reference for the loopback-only HTTP restriction, client setup, and details.

Architecture

flowchart TB
LLM["AI Assistant / LLM\n(GitHub Copilot, Claude, etc.)"]
LLM -->|"MCP Protocol (stdio)"| MCP
subgraph MCP["ConfigurationDeskMCP"]
direction TB
Server["FastMCP Server\nsources/server/app.py"]
Tools["Tools\n12 domains · 77 tools"]
Resources["Resources\nautomation guides"]
Prompts["Prompts\nworkflow templates"]
Services["Services\n12 modules"]
Models["Pydantic Models\nsources/models/"]
Server --- Tools & Resources & Prompts
Tools --> Services
Services --> Models
end
subgraph Bridge["configurationdesk_com_bridge"]
direction TB
STA["STA Thread\nqueue + message pump"]
Conn["Connection Manager"]
Domains["Domain COM Modules\n12 wrappers"]
STA --- Conn --- Domains
end
Services -->|"dispatch → STA thread"| Bridge
Bridge -->|"COM Automation"| CD["ConfigurationDesk Application"]
Loading

Packages

PackagePurpose
configurationdesk-com-bridgeLow-level COM bridge with dedicated STA thread
configurationdesk-mcp-serverFastMCP server — tools, resources, prompts

Tool Domains

DomainModuleExamples
App Managementapp_managementstart_configurationdesk, stop_configurationdesk
Applicationapplicationadd_application, remove_application, list_applications
Projectprojectcreate_project, open_project, close_project
Model Topologymodel_topologyadd_model, analyze_models, replace_model
Hardwarehardwareadd_hardware_platform, scan_hardware
Bus Configurationbus_configcreate_bus_configuration, assign_ecu_to_bus_config
Communication Matrixmatrixadd_communication_matrix, assign_matrix_to_bus_config
Bus Accessbus_accesscreate_io_function_block, assign_bus_access
I/O Functionsio_functionsadd_io_function_block, list_io_function_block_types
Configurationconfigurationlist_configuration
Buildbuildbuild_application, get_build_result
Working Viewworking_viewcreate_working_view, export_working_view

The server exposes the domain tools listed above. For the full per-tool reference, see docs/tools/README.md. For ConfigurationDesk concepts, COM APIs, and feature semantics, use the documentation delivered with your licensed ConfigurationDesk release. This repository documents the MCP server and bridge; it does not republish ConfigurationDesk product documentation.

Extending the MCP Server

The server is built to grow. Tools are auto-discovered - drop a module under ConfigurationDeskMCP/sources/tools/ and its @mcp.tool handlers register automatically; there is no manifest to maintain.

A capability is four small pieces, one per layer:

sources/models/<domain>_inputs.py # Pydantic input model
configurationdesk_com_bridge/domains/<domain>_com.py # thin COM wrapper (STA thread)
sources/services/<domain>_service.py # business logic + error mapping
sources/tools/<domain>.py # @mcp.tool handler

Follow the step-by-step Extending guide (add a tool, add a domain, resources, prompts, testing). For ConfigurationDesk domain knowledge, refer to the documentation delivered with your licensed ConfigurationDesk release.

Development

# Lint and format (matches CI)
uv run ruff check .
uv run ruff format --check .
# Tests (unit + contract; no ConfigurationDesk needed)
uv run pytest ConfigurationDeskMCP/tests
# Confirm tools register
uv run configurationdesk-mcp --list-tools

CI runs the same checks on Windows across Python 3.11–3.13 (.github/workflows/ci.yml).

Documentation

DocumentWhat it covers
docs/README.mdDocumentation index
ARCHITECTURE.mdServer architecture and data flow
docs/com-bridge-architecture.mdSTA thread, dispatch(), COM lifecycle
docs/configuration.mdAll settings, transports, client config
docs/extending.mdAdd tools, domains, resources, prompts
docs/tools/README.mdPer-domain tool reference + glossary
docs/prompts/README.mdPrompt coverage and copy-and-adapt workflow requests
docs/prompts/tool-map.mdAll 77 tools mapped to a prompt or domain guide
docs/clients.mdConnect VS Code, Claude, custom clients
docs/mcp-inspector.mdTest tools interactively in a browser
docs/windows-executable.mdDownload and verify the Windows executable

Domain knowledge (ConfigurationDesk concepts and COM APIs) is delivered with licensed ConfigurationDesk documentation. This repository documents the MCP server and bridge behavior.

Troubleshooting

ProblemSolution
uv not foundInstall uv and retry the launcher; uv manages a supported Python interpreter
pywin32 import errorsRun .\.venv\Scripts\python.exe -m pip install pywin32 --force-reinstall
ConfigurationDesk COM errorsEnsure ConfigurationDesk is installed and licensed
MCP host cannot start the serverVerify the absolute executable path or uv run configurationdesk-mcp command in the host configuration
Conflicts with other Python versions installed in the systemDelete .venv; the next ConfigurationDeskMCP.cmd invocation recreates it

Support

For technical questions and issues related to the dSPACE MCP Servers and related GitHub repositories, please open a GitHub issue.

As a valued dSPACE customer, you are always welcome to contact dSPACE Support directly via http://www.dspace.com/go/supportrequest.

License

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full text and THIRD-PARTY-NOTICES.md for dependency notices.

About

MCP server for controlling dSPACE ConfigurationDesk and dSPACE BusManager.

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages