UNPKG

@aashari/mcp-server-atlassian-confluence

Version:

Node.js/TypeScript MCP server for Atlassian Confluence. Provides tools enabling AI systems (LLMs) to list/get spaces & pages (content formatted as Markdown) and search via CQL. Connects AI seamlessly to Confluence knowledge bases using the standard MCP in

138 lines (137 loc) 4.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchResponseSchema = exports.SearchResultSchema = exports.SearchResultUserSchema = exports.SearchResultSpaceSchema = exports.SearchResultContentSchema = exports.SearchResultLinksSchema = exports.SearchResultReferenceSchema = exports.ContentExcerptSchema = exports.GenericContentType = void 0; const zod_1 = require("zod"); /** * Valid generic content types for search */ var GenericContentType; (function (GenericContentType) { GenericContentType["DATABASES"] = "DATABASES"; GenericContentType["EMBEDS"] = "EMBEDS"; GenericContentType["FOLDERS"] = "FOLDERS"; GenericContentType["WHITEBOARDS"] = "WHITEBOARDS"; })(GenericContentType || (exports.GenericContentType = GenericContentType = {})); /** * Zod schemas for Confluence API search response types */ /** * Excerpt format schema */ // Unused schema - commented out // export const ExcerptFormatSchema = z.enum([ // 'view', 'plain' // ]); /** * Generic content type schema */ // Unused schema - commented out // export const GenericContentTypeSchema = z.enum([ // 'page', 'blogpost', 'attachment', 'content', 'space' // ]); /** * Content excerpt schema */ exports.ContentExcerptSchema = zod_1.z.object({ content: zod_1.z.string(), highlights: zod_1.z.array(zod_1.z.array(zod_1.z.number())).optional(), }); /** * Search result reference schema */ exports.SearchResultReferenceSchema = zod_1.z.object({ id: zod_1.z.string(), type: zod_1.z.string(), status: zod_1.z.string(), title: zod_1.z.string(), }); /** * Search result links schema */ exports.SearchResultLinksSchema = zod_1.z .object({ webui: zod_1.z.string().optional(), self: zod_1.z.string().optional(), }) .optional(); /** * Search result content schema - made more flexible to accommodate V1 API */ exports.SearchResultContentSchema = zod_1.z .object({ id: zod_1.z.string().optional(), type: zod_1.z.string().optional(), status: zod_1.z.string().optional(), title: zod_1.z.string().optional(), spaceId: zod_1.z.string().optional(), // Made optional for V1 API excerpt: exports.ContentExcerptSchema.optional(), lastModified: zod_1.z.string().optional(), _links: exports.SearchResultLinksSchema, }) .passthrough(); // Allow additional properties /** * Search result space schema - made more flexible to accommodate V1 API */ exports.SearchResultSpaceSchema = zod_1.z .object({ id: zod_1.z.string().optional(), // Made optional for V1 API key: zod_1.z.string().optional(), // Made optional for V1 API name: zod_1.z.string().optional(), // Made optional for V1 API type: zod_1.z.string().optional(), // Made optional for V1 API _links: exports.SearchResultLinksSchema, }) .passthrough(); // Allow additional properties /** * Search result user schema */ exports.SearchResultUserSchema = zod_1.z .object({ accountId: zod_1.z.string().optional(), publicName: zod_1.z.string().optional(), _links: zod_1.z .object({ self: zod_1.z.string().optional(), }) .optional(), }) .passthrough(); // Allow additional properties /** * Search result schema - made more flexible to accommodate both V1 and V2 API */ exports.SearchResultSchema = zod_1.z .object({ content: exports.SearchResultContentSchema.optional(), // Make optional and accept empty object space: exports.SearchResultSpaceSchema.optional(), // Make optional and accept empty object user: exports.SearchResultUserSchema.optional(), container: exports.SearchResultReferenceSchema.optional(), parentPage: exports.SearchResultReferenceSchema.optional(), childPages: zod_1.z.array(exports.SearchResultReferenceSchema).optional(), onboardingPage: zod_1.z.boolean().optional(), // Add V1-specific fields title: zod_1.z.string().optional(), excerpt: zod_1.z.string().optional(), url: zod_1.z.string().optional(), resultGlobalContainer: zod_1.z .object({ title: zod_1.z.string().optional(), displayUrl: zod_1.z.string().optional(), }) .optional(), breadcrumbs: zod_1.z.array(zod_1.z.unknown()).optional(), entityType: zod_1.z.string().optional(), iconCssClass: zod_1.z.string().optional(), lastModified: zod_1.z.string().optional(), friendlyLastModified: zod_1.z.string().optional(), score: zod_1.z.number().optional(), }) .passthrough(); // Allow additional properties /** * Search response schema - made more flexible to accommodate both V1 and V2 API */ exports.SearchResponseSchema = zod_1.z .object({ results: zod_1.z.array(exports.SearchResultSchema), _links: zod_1.z.object({}).passthrough().optional(), // Accept any object structure total: zod_1.z.number().optional(), // Only included if includeTotalSize is true }) .passthrough(); // Allow additional properties like start, limit, etc.