@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
145 lines (144 loc) • 3.39 kB
TypeScript
/**
* Types for Atlassian Confluence Spaces API
*/
import { ContentProperty, ContentRepresentation, DescriptionFormat, Label, Operation, OptionalFieldMeta, OptionalFieldLinks, PaginatedResponse } from './vendor.atlassian.types.js';
/**
* Space type enum
*/
export type SpaceType = 'global' | 'personal' | 'collaboration' | 'knowledge_base';
/**
* Space status enum
*/
export type SpaceStatus = 'current' | 'archived';
/**
* Space sort order enum
*/
export type SpaceSortOrder = 'id' | '-id' | 'key' | '-key' | 'name' | '-name';
/**
* Space description object
*/
export interface SpaceDescription {
plain?: ContentRepresentation;
view?: ContentRepresentation;
}
/**
* Space icon object
*/
export interface SpaceIcon {
path?: string;
apiDownloadLink?: string;
}
/**
* Space links object
*/
export interface SpaceLinks {
webui: string;
base?: string;
}
/**
* Space property object - alias for ContentProperty with no additional fields
*/
export type SpaceProperty = ContentProperty;
/**
* Permission subject object
*/
export interface PermissionSubject {
type: 'user' | 'group';
identifier: string;
}
/**
* Space permission assignment object
*/
export interface SpacePermissionAssignment {
id: string;
subject: PermissionSubject;
operation: Operation;
}
/**
* Space role assignment object
*/
export interface SpaceRoleAssignment {
id: string;
role: string;
subject: PermissionSubject;
}
/**
* Space object returned from the API (basic fields)
*/
export interface Space {
id: string;
key: string;
name: string;
type: SpaceType;
status: SpaceStatus;
authorId: string;
createdAt: string;
homepageId: string;
description?: SpaceDescription;
icon?: SpaceIcon;
_links: SpaceLinks;
currentActiveAlias?: string;
}
/**
* Extended space object with optional fields
*/
export interface SpaceDetailed extends Space {
labels?: {
results: Label[];
meta: OptionalFieldMeta;
_links: OptionalFieldLinks;
};
properties?: {
results: SpaceProperty[];
meta: OptionalFieldMeta;
_links: OptionalFieldLinks;
};
operations?: {
results: Operation[];
meta: OptionalFieldMeta;
_links: OptionalFieldLinks;
};
permissions?: {
results: SpacePermissionAssignment[];
meta: OptionalFieldMeta;
_links: OptionalFieldLinks;
};
roleAssignments?: {
results: SpaceRoleAssignment[];
meta: OptionalFieldMeta;
_links: OptionalFieldLinks;
};
}
/**
* Parameters for listing spaces
*/
export interface ListSpacesParams {
ids?: string[];
keys?: string[];
type?: SpaceType;
status?: SpaceStatus;
labels?: string[];
favoritedBy?: string;
notFavoritedBy?: string;
sort?: SpaceSortOrder;
descriptionFormat?: DescriptionFormat;
includeIcon?: boolean;
cursor?: string;
limit?: number;
}
/**
* Parameters for getting a space by ID
*/
export interface GetSpaceByIdParams {
descriptionFormat?: DescriptionFormat;
includeIcon?: boolean;
includeOperations?: boolean;
includeProperties?: boolean;
includePermissions?: boolean;
includeRoleAssignments?: boolean;
includeLabels?: boolean;
}
/**
* API response for listing spaces
*/
export type SpacesResponse = PaginatedResponse<Space>;