Files
kompas3d-mcp/src/Kompas.Mcp.Host/Program.cs
T
mikhail bc52b5d920 feat: параметрика — переменные модели (create/set/delete_variable) через API5
- VariableService: CreateVariableAsync/SetVariableAsync/DeleteVariableAsync/GetVariableValueAsync
- создание ТОЛЬКО на ksFeature.VariableCollection (ksPart — только внешние); RebuildModel + re-fetch
- Expression — ведущее поле (константа/формула со ссылками); value пересчитывается
- list_variables (ModelInspectionService) исправлен: читает feature-коллекцию (все переменные)
- инструменты create_variable/set_variable/delete_variable (VariableTools) + DI
- интеграционный тест CRUD round-trip (создание, формула width*2, удаление по зависимостям)
- ОГРАНИЧЕНИЕ: переменные драйвят геометрию лишь в параметрической модели (эскизы на литералах — нет)
- 116 тестов; спек docs/superpowers/specs/2026-05-27-parametrics-design.md
2026-05-27 11:14:28 +03:00

42 lines
1.7 KiB
C#

using Kompas.Mcp.Core;
using Kompas.Mcp.Core.Conversion;
using Kompas.Mcp.Core.Documents;
using Kompas.Mcp.Core.Editing;
using Kompas.Mcp.Core.Modeling;
using Kompas.Mcp.Core.Query;
using Kompas.Mcp.Core.Threading;
using Kompas.Mcp.Core.Validation;
using Kompas.Mcp.Core.Vision;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
var builder = Host.CreateApplicationBuilder(args);
// ВАЖНО: stdout занят протоколом MCP (stdio). Все логи — только в stderr.
builder.Logging.AddConsole(o => o.LogToStandardErrorThreshold = LogLevel.Trace);
builder.Logging.SetMinimumLevel(LogLevel.Information);
// COM-слой: один STA-поток, одно подключение, общие сервисы (синглтоны).
builder.Services.AddSingleton<KompasDispatcher>();
builder.Services.AddSingleton<KompasSession>();
builder.Services.AddSingleton<DocumentService>();
builder.Services.AddSingleton<PartModeler>();
builder.Services.AddSingleton<HoleService>();
builder.Services.AddSingleton<VariableService>();
builder.Services.AddSingleton<SnapshotService>();
builder.Services.AddSingleton<QueryService>();
builder.Services.AddSingleton<ModelInspectionService>();
builder.Services.AddSingleton<ConversionService>();
builder.Services.AddSingleton<FaceEditService>();
builder.Services.AddSingleton<SolidEditService>();
builder.Services.AddSingleton<ValidationService>();
// MCP-сервер поверх stdio; инструменты находятся по атрибутам в этой сборке.
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();
await builder.Build().RunAsync();