53 lines
1.8 KiB
C#
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 + "]";
|
|
}
|
|
}
|