# ditrixnew/edt-mcp architecture

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

- Interactive diagram: https://gitdiagram.com/ditrixnew/edt-mcp
- Repository: https://github.com/ditrixnew/edt-mcp

## Overview

EDT MCP Server is an Eclipse/1C:EDT plugin that exposes workspace and development operations to MCP-capable AI clients. The principal flow is an MCP request over streamable HTTP/SSE, protocol handling and tool dispatch, execution against EDT workspace capabilities, then a tool result returned to the client. Tool families cover inspection, code and metadata changes, forms, projects, applications, and debugging; separate product features manage tags, groups, tool access, and call history. The README and tree establish these capabilities; most implementation wiring was not sampled, so links below are limited to the documented runtime flow.

Main entry points: [`mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl) (Tool Implementations), [`mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpProtocolHandler.java`](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpProtocolHandler.java) (Protocol Handler), [`mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/McpServer.java`](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/McpServer.java) (MCP Server), [`mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/McpToolRegistry.java`](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/McpToolRegistry.java) (Tool Registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_transport["MCP Transport"]
  node_server["MCP Server<br/>[McpServer.java]"]
  node_protocol["Protocol Handler"]
  node_sessions["MCP Sessions"]
  node_proxy["Proxy Backend<br/>[Backend.java]"]
end

subgraph group_tools["EDT Tools"]
  node_toolregistry["Tool Registry"]
  node_toolsets["Tool Controls"]
  node_toolimpl["Tool Implementations<br/>[impl]"]
end

subgraph group_workspace["Workspace Features"]
  node_analysis["Project Analysis<br/>[impl]"]
  node_code["BSL Code Tools<br/>[impl]"]
  node_metadata["Metadata Tools<br/>[impl]"]
  node_refactor["Metadata Refactoring"]
  node_forms["Form Inspection"]
  node_applications["Apps And Debug<br/>[impl]"]
end

subgraph group_organization["Workspace Organization"]
  node_tags["Metadata Tags<br/>[TagService.java]"]
  node_tagstorage["Tag Data<br/>[TagStorage.java]"]
  node_groups["Metadata Groups"]
  node_groupstorage["Group Data<br/>[GroupStorage.java]"]
end

subgraph group_operations["Server Operations"]
  node_history["Call History"]
  node_status["Status And Signals<br/>[UserSignal.java]"]
end

node_client(("AI Client"))
node_edt["EDT Workspace"]
node_externalassistant(("Optional Assistant"))

node_client -->|"sends MCP requests"| node_server
node_server -->|"handles requests"| node_protocol
node_protocol -->|"tracks sessions"| node_sessions
node_protocol -->|"dispatches tools"| node_toolregistry
node_toolregistry -->|"checks availability"| node_toolsets
node_toolregistry -->|"invokes tools"| node_toolimpl
node_toolimpl -->|"operates on workspace"| node_edt
node_toolimpl -->|"provides inspection"| node_analysis
node_toolimpl -->|"provides code actions"| node_code
node_toolimpl -->|"provides metadata actions"| node_metadata
node_toolimpl -->|"uses rename service"| node_refactor
node_toolimpl -->|"uses layout service"| node_forms
node_toolimpl -->|"provides runtime actions"| node_applications
node_tags -->|"loads and saves"| node_tagstorage
node_groups -->|"persists groups"| node_groupstorage
node_protocol -->|"records calls"| node_history
node_server -->|"reports activity"| node_status
node_client -.->|"may connect through"| node_proxy
node_proxy -.->|"forwards requests"| node_server
node_toolimpl -.->|"may ask workmate"| node_externalassistant

click node_server "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/McpServer.java"
click node_protocol "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpProtocolHandler.java"
click node_sessions "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpSessionRegistry.java"
click node_toolregistry "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/McpToolRegistry.java"
click node_toolsets "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/preferences/ToolSettingsService.java"
click node_toolimpl "https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl"
click node_analysis "https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl"
click node_code "https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl"
click node_metadata "https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl"
click node_refactor "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/rename/MetadataRenameService.java"
click node_forms "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/form/FormLayoutSnapshotService.java"
click node_applications "https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl"
click node_tags "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/TagService.java"
click node_tagstorage "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/model/TagStorage.java"
click node_groups "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/internal/GroupServiceImpl.java"
click node_groupstorage "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/model/GroupStorage.java"
click node_history "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/history/McpCallHistory.java"
click node_status "https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/UserSignal.java"
click node_proxy "https://github.com/ditrixnew/edt-mcp/blob/master/proxy/src/main/java/com/ditrix/edt/mcp/proxy/Backend.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_protocol,node_sessions,node_proxy,node_client toneBlue
class node_toolregistry,node_toolsets,node_toolimpl toneAmber
class node_analysis,node_code,node_metadata,node_refactor,node_forms,node_applications toneMint
class node_tags,node_tagstorage,node_groups,node_groupstorage toneRose
class node_history,node_status,node_edt,node_externalassistant toneIndigo
```

## Components

### MCP Transport

- [MCP Server](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/McpServer.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/McpServer.java`
- [Protocol Handler](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpProtocolHandler.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpProtocolHandler.java`
- [MCP Sessions](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpSessionRegistry.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/protocol/McpSessionRegistry.java`
- [Proxy Backend](https://github.com/ditrixnew/edt-mcp/blob/master/proxy/src/main/java/com/ditrix/edt/mcp/proxy/Backend.java): `proxy/src/main/java/com/ditrix/edt/mcp/proxy/Backend.java`

### EDT Tools

- [Tool Registry](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/McpToolRegistry.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/McpToolRegistry.java`
- [Tool Controls](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/preferences/ToolSettingsService.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/preferences/ToolSettingsService.java`
- [Tool Implementations](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`

### Workspace Features

- [Project Analysis](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`
- [BSL Code Tools](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`
- [Metadata Tools](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`
- [Metadata Refactoring](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/rename/MetadataRenameService.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/rename/MetadataRenameService.java`
- [Form Inspection](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/form/FormLayoutSnapshotService.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/form/FormLayoutSnapshotService.java`
- [Apps And Debug](https://github.com/ditrixnew/edt-mcp/tree/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tools/impl`

### Workspace Organization

- [Metadata Tags](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/TagService.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/TagService.java`
- [Tag Data](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/model/TagStorage.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/tags/model/TagStorage.java`
- [Metadata Groups](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/internal/GroupServiceImpl.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/internal/GroupServiceImpl.java`
- [Group Data](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/model/GroupStorage.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/groups/model/GroupStorage.java`

### Server Operations

- [Call History](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/history/McpCallHistory.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/history/McpCallHistory.java`
- [Status And Signals](https://github.com/ditrixnew/edt-mcp/blob/master/mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/UserSignal.java): `mcp/bundles/com.ditrix.edt.mcp.server/src/com/ditrix/edt/mcp/server/UserSignal.java`

### Other components

- **AI Client**
- **EDT Workspace**
- **Optional Assistant**

## Connections

- AI Client → MCP Server: sends MCP requests
- MCP Server → Protocol Handler: handles requests
- Protocol Handler → MCP Sessions: tracks sessions
- Protocol Handler → Tool Registry: dispatches tools
- Tool Registry → Tool Controls: checks availability
- Tool Registry → Tool Implementations: invokes tools
- Tool Implementations → EDT Workspace: operates on workspace
- Tool Implementations → Project Analysis: provides inspection
- Tool Implementations → BSL Code Tools: provides code actions
- Tool Implementations → Metadata Tools: provides metadata actions
- Tool Implementations → Metadata Refactoring: uses rename service
- Tool Implementations → Form Inspection: uses layout service
- Tool Implementations → Apps And Debug: provides runtime actions
- Metadata Tags → Tag Data: loads and saves
- Metadata Groups → Group Data: persists groups
- Protocol Handler → Call History: records calls
- MCP Server → Status And Signals: reports activity
- AI Client → Proxy Backend: may connect through
- Proxy Backend → MCP Server: forwards requests
- Tool Implementations → Optional Assistant: may ask workmate
