using LazyBear.Confluence; using ModelContextProtocol.Server; namespace LazyBear.Confluence; [McpServerToolType] public sealed class ConfluenceSpacesTools(ConfluenceHttpClientProvider provider) { private readonly ConfluenceHttpClientProvider _provider = provider; private readonly string? _initializationError = provider.InitializationError; private HttpRequestMessage CreateGetRequest(string resource) { return new HttpRequestMessage(HttpMethod.Get, resource); } [McpServerTool, Description("Список всех пространств Confluence")] public async Task ListSpacesAsync(CancellationToken cancellationToken = default) { var resource = "rest/api/cloud/space"; var request = CreateGetRequest(resource); return "Spaces: [" + LimitToSpaces(resource, request) + "]"; } [McpServerTool, Description("Получить детали пространства Confluence")] public async Task GetSpaceAsync( [Description("key пространства")] string? key = null, CancellationToken cancellationToken = default) { if (string.IsNullOrWhiteSpace(key)) { return "key пространства Confluence не задан."; } var resource = $"rest/api/cloud/space/{key}"; var request = CreateGetRequest(resource); return "Space details: " + key; } [McpServerTool, Description("Иерархия пространств Confluence")] public async Task GetSpacesHierarchyAsync(CancellationToken cancellationToken = default) { return "Hierarchy: [" + LimitToSpaces("", null) + "]"; } private string LimitToSpaces(string resource, HttpRequestMessage? request) { return "Spaces: [" + resource + "]"; } }