EDT MCP Server
MCP (Model Context Protocol) server plugin for 1C:EDT, enabling AI assistants (Claude, GitHub Copilot, Cursor, etc.) to interact with EDT workspace.
Features
- 🔧 MCP Protocol 2025-11-25 - Streamable HTTP transport with SSE support
- 📊 Project Information - List workspace projects and configuration properties
- 🔴 Error Reporting - Get errors, warnings, problem summaries with filters
- 📝 Check Descriptions - Get check documentation from markdown files
- 🔄 Project Revalidation - Trigger revalidation when validation gets stuck
- 🔖 Bookmarks & Tasks - Access bookmarks and TODO/FIXME markers
- 💡 Content Assist - Get type info, method hints and platform documentation at any code position
- 🎯 Status Bar - Real-time server status indicator with request counter
Installation
From Update Site
Only EDT 2025.2.0+
- In EDT: Help → Install New Software...
- Add update site URL
- Select EDT MCP Server Feature
- Restart EDT
Configuration
Go to Window → Preferences → MCP Server:
- Server Port: HTTP port (default: 8765)
- Check descriptions folder: Path to check description markdown files
- Auto-start: Start server on EDT launch
- Plain text mode (Cursor compatibility): Returns results as plain text instead of embedded resources (for AI clients that don't support MCP resources)
Connecting AI Assistants
VS Code / GitHub Copilot
Create .vscode/mcp.json:
{
"servers": {
"EDT MCP Server": {
"type": "sse",
"url": "http://localhost:8765/mcp"
}
}
}
Cursor IDE
Note: Cursor doesn't support MCP embedded resources. Enable "Plain text mode (Cursor compatibility)" in EDT preferences: Window → Preferences → MCP Server.
Create .cursor/mcp.json:
{
"mcpServers": {
"EDT MCP Server": {
"url": "http://localhost:8765/mcp"
}
}
}
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"EDT MCP Server": {
"url": "http://localhost:8765/mcp"
}
}
}
Available Tools
| Tool | Description |
|---|---|
get_edt_version | Returns current EDT version |
list_projects | Lists workspace projects with properties |
get_configuration_properties | Gets 1C configuration properties |
get_project_errors | Returns EDT problems with severity/checkId filters |
get_problem_summary | Problem counts grouped by project and severity |
clean_project | Cleans project markers and triggers full revalidation |
revalidate_objects | Revalidates specific objects by FQN (e.g. "Document.MyDoc") |
get_bookmarks | Returns workspace bookmarks |
get_tasks | Returns TODO/FIXME task markers |
get_check_description | Returns check documentation from .md files |
get_content_assist | Get content assist proposals (type info, method hints) |
get_platform_documentation | Get platform type documentation (methods, properties, constructors) |
get_metadata_objects | Get list of metadata objects from 1C configuration |
get_metadata_details | Get detailed properties of metadata objects (attributes, tabular sections, etc.) |
Content Assist Tool
get_content_assist - Get content assist proposals at a specific position in BSL code. Returns type information, available methods, properties, and platform documentation.
Parameters:
| Parameter | Required | Description |
|---|---|---|
projectName | Yes | EDT project name |
filePath | Yes | Path relative to src/ folder (e.g. CommonModules/MyModule/Module.bsl) |
line | Yes | Line number (1-based) |
column | Yes | Column number (1-based) |
limit | No | Maximum proposals to return (default: from preferences) |
offset | No | Skip first N proposals (for pagination, default: 0) |
contains | No | Filter by display string containing these substrings (comma-separated, e.g. Insert,Add) |
extendedDocumentation | No | Return full documentation (default: false, only display string) |
Important Notes:
- Save the file first - EDT must read the current content from disk to provide accurate proposals
- Column position - Place cursor after the dot (
.) for method/property suggestions - Pagination - Use
offsetto get next batch of proposals (e.g., first call with limit=5, second call with offset=5, limit=5) - Filtering - Use
containsto filter by method/property name (case-insensitive) - Works for:
- Global platform methods (e.g.
NStr(,Format() - Methods after dot (e.g.
Structure.Insert,Array.Add) - Object properties and fields
- Configuration objects and modules
- Global platform methods (e.g.
Example - Get methods for Structure with filter:
{
"projectName": "MyProject",
"filePath": "CommonModules/MyCommonModule/Module.bsl",
"line": 15,
"column": 12,
"contains": "Insert,Add",
"extendedDocumentation": true
}
Returns only methods containing "Insert" or "Add" with full documentation:
{
"success": true,
"totalProposals": 8,
"filteredOut": 6,
"skipped": 0,
"returnedProposals": 2,
"proposals": [
{
"displayString": "Insert(Key) ~ Structure",
"documentation": "Procedure Structure.Insert(Key, [Value])..."
}
]
}
Validation Tools
clean_project: Refreshes project from disk, clears all validation markers, and triggers full revalidation using EDT's ICheckSchedulerrevalidate_objects: Revalidates specific metadata objects by their FQN:Document.MyDocument,Catalog.MyCatalog,CommonModule.MyModuleDocument.MyDoc.Form.MyFormfor nested objects
Platform Documentation Tool
get_platform_documentation - Get documentation for platform types (ValueTable, Array, Structure, Query, etc.)
Parameters:
| Parameter | Required | Description |
|---|---|---|
typeName | Yes | Platform type name (e.g. ValueTable, Array, Structure) |
projectName | No | EDT project name (uses first available project if not specified) |
memberName | No | Filter by member name (partial match) |
memberType | No | Filter: method, property, constructor, event, all (default: all) |
language | No | Output language: en or ru (default: en) |
limit | No | Maximum results (default: 50) |
Example:
{
"typeName": "ValueTable",
"memberType": "method",
"memberName": "Add",
"language": "ru"
}
Metadata Objects Tool
get_metadata_objects - Get list of metadata objects from 1C configuration.
Parameters:
| Parameter | Required | Description |
|---|---|---|
projectName | Yes | EDT project name |
metadataType | No | Filter: all, documents, catalogs, informationRegisters, accumulationRegisters, commonModules, enums, constants, reports, dataProcessors, exchangePlans, businessProcesses, tasks, commonAttributes, eventSubscriptions, scheduledJobs (default: all) |
nameFilter | No | Partial name match filter (case-insensitive) |
limit | No | Maximum results (default: 100) |
language | No | Language code for synonyms (e.g. en, ru). Uses configuration default if not specified |
Example:
{
"projectName": "MyProject",
"metadataType": "documents",
"nameFilter": "Sales"
}
Returns markdown table with columns: Name, Synonym, Comment, Type, ObjectModule, ManagerModule.
Metadata Details Tool
get_metadata_details - Get detailed properties of metadata objects.
Parameters:
| Parameter | Required | Description |
|---|---|---|
projectName | Yes | EDT project name |
objectFqns | Yes | Array of FQNs (e.g. ["Catalog.Products", "Document.SalesOrder"]) |
full | No | Return all properties (true) or only key info (false). Default: false |
language | No | Language code for synonyms. Uses configuration default if not specified |
Example:
{
"projectName": "MyProject",
"objectFqns": ["Document.SalesOrder", "Catalog.Products"],
"full": true
}
Returns markdown with detailed object properties, attributes, tabular sections, forms, commands.
Output Formats
- Markdown tools:
list_projects,get_project_errors,get_bookmarks,get_tasks,get_problem_summary,get_check_description- return Markdown as EmbeddedResource withmimeType: text/markdown - JSON tools:
get_configuration_properties,clean_project,revalidate_objects- return JSON withstructuredContent - Text tools:
get_edt_version- return plain text
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/mcp | POST | MCP JSON-RPC (initialize, tools/list, tools/call) |
/mcp | GET | Server info |
/health | GET | Health check |
Status Bar
Click the status indicator in EDT status bar:
- 🟢 Green - Server running
- ⚫ Grey - Server stopped
- [N] - Request counter
Requirements
- 1C:EDT 2025.2 (Ruby) or later
- Java 17+
Version History
1.15.0
- New: "Plain text mode (Cursor compatibility)" preference setting
- When enabled, returns Markdown results as plain text instead of embedded resources
- Solves compatibility issues with AI clients that don't support MCP embedded resources (e.g., Cursor)
- Located in: Window → Preferences → MCP Server
1.9.0
- Improved: Enhanced EObject formatting in metadata tools using new
EObjectInspectorutility- Smart detection of simple value holders (enums, wrappers) vs complex objects needing expansion
- Automatic extraction of primary values from wrapper classes (e.g., StandardCommandGroup → category enum)
- EMF-based detection without hardcoded class names using EAttribute/EReference analysis
- Better formatting for StandardCommandGroup, Color, Picture, and other wrapper types
- Internal: New
EObjectInspectorutility class for EMF EObject type analysisgetFormatStyle()- Determines SIMPLE_VALUE, REFERENCE, or EXPAND formattingisSimpleValueHolder()- Checks if EClass/EObject is a simple wrappergetPrimaryValue()- Extracts meaningful value from wrapper objectsformatReference()- Smart reference formatting for any EObject type
- Refactored:
AbstractMetadataFormatterandUniversalMetadataFormatternow use EObjectInspector
1.8.0
- New:
get_metadata_objectstool - Get list of metadata objects from 1C configuration- Returns Name, Synonym, Comment, Type, ObjectModule, ManagerModule for each object
- Supports filtering by metadata type (documents, catalogs, registers, commonModules, commonAttributes, eventSubscriptions, scheduledJobs, etc.)
- Supports partial name filtering (case-insensitive)
- Uses configuration default language for synonyms
- New:
get_metadata_detailstool - Get detailed properties of metadata objects- Accepts array of FQNs (e.g.
["Catalog.Products", "Document.SalesOrder"]) fullmode for complete property details- Type-specific properties (Document: posting, Catalog: hierarchy, Register: periodicity, etc.)
- Accepts array of FQNs (e.g.
1.7.0
- New:
get_platform_documentationtool - Get platform type documentation- Returns methods, properties, constructors, events with full documentation
- Supports all platform types: ValueTable, Array, Structure, Query, Map, etc.
- Filter by member name or type (method/property/constructor/event)
- Bilingual output (English/Russian)
- Uses EDT's IEObjectProvider with TYPE provider for accurate results
1.6.16
- New:
get_content_assisttool - Get content assist proposals at any code position- Returns type information, methods, properties with full platform documentation
- Supports global methods and dot-notation methods
- Pagination with
offsetparameter for large result sets - Filtering with
containsparameter (case-insensitive, comma-separated) - Optional extended documentation (default: disabled for faster responses)
- Uses EDT's ICompletionProposalExtension5 for async documentation retrieval
- HTML documentation converted to Markdown using CopyDown library
- Refactored: Extracted common
escapeForTable()toMarkdownUtilsclass - Fixed: Removed dead code (
tools/BuildUtils.java)
1.6.10
- Refactored: All JSON responses now use Gson serialization instead of manual StringBuilder
- New:
ToolResultclass - fluent API for building JSON responses - Improved: More reliable JSON output (no more missing braces or escaping issues)
- Internal: Uses
JsonParser.parseString()for input JSON array parsing
1.6.9
- Fixed:
revalidate_objectsJSON response was missing closing brace causing parse error
1.6.8
- Fixed:
revalidate_objectsnow uses 4-parameter scheduleValidation (without IBmTransaction) to avoid null transaction error
1.6.7
- Fixed:
revalidate_objectsnow uses bmGetId() (Long) instead of URI - fixes NullPointerException in CheckScheduler
1.6.6
- Added: Custom PNG icons for Start (green), Stop (red), Restart (blue) buttons
- Improved: Additional defensive null filtering in revalidate_objects
- Added: Debug logging for object lookup in revalidate_objects
1.6.5
- Fixed: Port and checks folder changes now apply immediately when clicking Start/Restart (no need to click Apply first)
- Fixed: Restart button now has a distinct icon (Redo instead of disabled Synced)
1.6.4
- Fixed:
revalidate_objectsnull URI handling (objects with null bmGetUri() are now skipped) - Fixed: Full project revalidation when objects array is empty
- Improved: Service retrieval via Activator (not static fields)
- Added: JSON field
objectsSkippedNullUrifor objects with null URI
1.6.3
- Fixed:
clean_projectnow uses Eclipse CLEAN_BUILD (same as Project → Clean menu)
1.6.2
- Fixed:
revalidate_objectsnow passes object URI to scheduleValidation (was ClassCastException)
1.6.1
- Fixed: Array parameters parsing for
revalidate_objectstool - Fixed: Removed JSON duplication in text field (now only in structuredContent)
- Improved: FQN examples in tool descriptions
1.6.0
- New:
clean_projecttool - clears markers and triggers full revalidation via EDT ICheckScheduler - New:
revalidate_objectstool - revalidates specific objects by FQN - Removed old
revalidate_project(used Eclipse build, not EDT validation) - Added ICheckScheduler and IBmModelManager service integration
1.5.1
- Dynamic file names for EmbeddedResource (e.g.,
begin-transaction.mdinstead oftool-result) - Added
getResultFileName()method to IMcpTool interface
1.5.0
- Explicit ResponseType per tool (TEXT, JSON, MARKDOWN)
- Markdown returned as EmbeddedResource with mimeType
- JSON returned with structuredContent support
1.4.0
- Converted list tools to Markdown output
- Fixed unused code warnings
1.3.0
- MCP Protocol 2025-11-25 with Streamable HTTP
- SSE transport support
- Session management with MCP-Session-Id header
1.2.0
- EDT IMarkerManager integration
- EDT severity levels (BLOCKER, CRITICAL, MAJOR, MINOR, TRIVIAL)
1.0.0
- Initial release
License
Copyright (c) 2025 DitriX. All rights reserved.
EDT MCP Server v1.15.0