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

89 lines
3.0 KiB
C#

using LazyBear.Confluence;
using ModelContextProtocol.Server;
namespace LazyBear.Confluence.Pages;
[McpServerToolType]
public sealed class ConfluencePagesTools(ConfluenceHttpClientProvider provider)
{
private readonly ConfluenceHttpClientProvider _provider = provider;
[McpServerTool, Description("Список страниц Confluence")]
public async Task<string> ListPagesAsync(
[Description("Пространство")] string? spaceKey = null,
[Description("ID родитель")] string? parentId = null,
[Description("Максимум")] int? limit = 20,
CancellationToken cancellationToken = default)
{
if (string.IsNullOrWhiteSpace(spaceKey))
{
return "spaceKey не задан.";
}
var resource = $"{spaceKey}/pages";
var request = new HttpRequestMessage(HttpMethod.Get, resource);
return $"Список страниц в {spaceKey}";
}
[McpServerTool, Description("Получить страницу Confluence")]
public async Task<string> GetPageAsync(
[Description("ID страницы")] string pageId,
CancellationToken cancellationToken = default)
{
if (string.IsNullOrWhiteSpace(pageId))
{
return "pageId не задан.";
}
return $"Страница: {pageId}";
}
[McpServerTool, Description("Создать страницу")]
public async Task<string> CreatePageAsync(
[Description("Заголовок")] string title,
[Description("Контент")] string content,
[Description("Пространство")] string spaceKey,
[Description("ID родитель")] string? parentId = null,
CancellationToken cancellationToken = default)
{
if (string.IsNullOrWhiteSpace(title))
{
return "title не задан.";
}
var request = new HttpRequestMessage(HttpMethod.Post, $"rest/api/content?typeName=page");
return $"Страница создана: {title}";
}
[McpServerTool, Description("Обновить страницу")]
public async Task<string> UpdatePageAsync(
[Description("ID")] string id,
[Description("Заголовок")] string? title = null,
[Description("Контент")] string? content = null,
CancellationToken cancellationToken = default)
{
if (string.IsNullOrWhiteSpace(id))
{
return "id не задан.";
}
return $"Страница обновлена: {id}";
}
[McpServerTool, Description("Удалить страницу")]
public async Task<string> DeletePageAsync(
[Description("ID страницы")] string pageId,
[Description("Перманентно?")] bool? permanent = false,
CancellationToken cancellationToken = default)
{
if (string.IsNullOrWhiteSpace(pageId))
{
return "pageId не задан.";
}
return $"Страница удалена: {pageId}";
}
}