- Добавлен RazorConsole.Core для интерактивного TUI-дашборда - ToolRegistryService: живое включение/отключение модулей и отдельных методов - InMemoryLogSink: кольцевой буфер логов с фильтрацией по модулю - TUI: 3 таба (Overview, Logs, Settings) - IToolModule: generic-интерфейс для легкого добавления новых MCP-модулей - Guard-проверка TryCheckEnabled() во всех существующих инструментах
42 lines
2.1 KiB
C#
42 lines
2.1 KiB
C#
using LazyBear.MCP.Services.Confluence;
|
|
using LazyBear.MCP.Services.Jira;
|
|
using LazyBear.MCP.Services.Kubernetes;
|
|
using LazyBear.MCP.Services.Logging;
|
|
using LazyBear.MCP.Services.ToolRegistry;
|
|
using LazyBear.MCP.TUI;
|
|
using ModelContextProtocol.Server;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// ── InMemoryLogSink: регистрируем Singleton и кастомный логгер ───────────────
|
|
var logSink = new InMemoryLogSink();
|
|
builder.Services.AddSingleton(logSink);
|
|
builder.Logging.AddProvider(new InMemoryLoggerProvider(logSink));
|
|
|
|
// ── MCP-провайдеры ───────────────────────────────────────────────────────────
|
|
builder.Services.AddSingleton<K8sClientProvider>();
|
|
builder.Services.AddSingleton<JiraClientProvider>();
|
|
builder.Services.AddSingleton<ConfluenceClientProvider>();
|
|
|
|
// ── ToolRegistry ─────────────────────────────────────────────────────────────
|
|
builder.Services.AddSingleton<ToolRegistryService>();
|
|
|
|
// ── Модули инструментов (generic: добавь новый IToolModule — он появится в TUI)
|
|
builder.Services.AddSingleton<IToolModule, JiraToolModule>();
|
|
builder.Services.AddSingleton<IToolModule, KubernetesToolModule>();
|
|
builder.Services.AddSingleton<IToolModule, ConfluenceToolModule>();
|
|
|
|
// ── MCP-сервер ───────────────────────────────────────────────────────────────
|
|
builder.Services.AddMcpServer()
|
|
.WithHttpTransport()
|
|
.WithToolsFromAssembly();
|
|
|
|
// ── TUI как фоновый сервис ───────────────────────────────────────────────────
|
|
builder.Services.AddHostedService<TuiHostedService>();
|
|
|
|
var app = builder.Build();
|
|
|
|
app.MapMcp();
|
|
|
|
app.Run("http://localhost:5000");
|