Files
LazyBearWorks/Libraries/Confluence/ConfluenceSpacesTools.cs
2026-04-13 13:40:32 +03:00

53 lines
1.8 KiB
C#

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<string> 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<string> 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<string> GetSpacesHierarchyAsync(CancellationToken cancellationToken = default)
{
return "Hierarchy: [" + LimitToSpaces("", null) + "]";
}
private string LimitToSpaces(string resource, HttpRequestMessage? request)
{
return "Spaces: [" + resource + "]";
}
}