42 lines
2.2 KiB
C#
42 lines
2.2 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;
|
|
|
|
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();
|
|
|
|
var urls = Environment.GetEnvironmentVariable("ASPNETCORE_URLS") ?? "http://localhost:5000";
|
|
app.Run(urls);
|