Files
LazyBearWorks/LazyBear.MCP/Program.cs

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);