@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
39 lines (38 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const error_util_js_1 = require("../utils/error.util.js");
const logger_util_js_1 = require("../utils/logger.util.js");
const transport_util_js_1 = require("../utils/transport.util.js");
const API_PATH = '/wiki/rest/api/search';
/**
* Search Confluence content using CQL
* @param params Search parameters
* @returns Search results
*/
async function search(params) {
const serviceLogger = logger_util_js_1.Logger.forContext('services/vendor.atlassian.search.service.ts', 'search');
serviceLogger.debug('Searching Confluence with params:', params);
const credentials = (0, transport_util_js_1.getAtlassianCredentials)();
if (!credentials) {
throw (0, error_util_js_1.createAuthMissingError)('Atlassian credentials are required for this operation');
}
const queryParams = new URLSearchParams({ cql: params.cql });
if (params.cqlcontext)
queryParams.set('cqlcontext', params.cqlcontext);
if (params.cursor)
queryParams.set('cursor', params.cursor);
if (params.limit !== undefined)
queryParams.set('limit', params.limit.toString());
if (params.start !== undefined)
queryParams.set('start', params.start.toString());
if (params.includeArchivedSpaces !== undefined)
queryParams.set('includeArchivedSpaces', params.includeArchivedSpaces.toString());
if (params.excludeCurrentSpaces !== undefined)
queryParams.set('excludeCurrentSpaces', params.excludeCurrentSpaces.toString());
if (params.excerpt)
queryParams.set('excerpt', params.excerpt);
const path = `${API_PATH}?${queryParams.toString()}`;
serviceLogger.debug('Sending request to:', path);
return (0, transport_util_js_1.fetchAtlassian)(credentials, path);
}
exports.default = { search };