atlas-mcp-server
Version:
ATLAS (Adaptive Task & Logic Automation System): An MCP server enabling LLM agents to manage projects, tasks, and knowledge via a Neo4j-backed, three-tier architecture. Facilitates complex workflow automation and project management through LLM Agents.
72 lines (71 loc) • 3.24 kB
JavaScript
import { createToolResponse } from "../../../types/mcp.js"; // Import the new response creator
/**
* Formatter for structured knowledge query responses
*/
export class KnowledgeListFormatter {
format(data) {
const { knowledge, total, page, limit, totalPages } = data;
// Generate result summary section
const summary = `Knowledge Repository\n\n` +
`Total Items: ${total}\n` +
`Page: ${page} of ${totalPages}\n` +
`Displaying: ${Math.min(limit, knowledge.length)} item(s) per page\n`;
if (knowledge.length === 0) {
return `${summary}\n\nNo knowledge items matched the specified criteria`;
}
// Format each knowledge item
const knowledgeSections = knowledge
.map((item, index) => {
const { id, projectId, projectName, domain, tags, text, citations, createdAt, updatedAt, } = item;
let knowledgeSection = `${index + 1}. ${domain || "Uncategorized"} Knowledge\n\n` +
`ID: ${id}\n` +
`Project: ${projectName || projectId}\n` +
`Domain: ${domain}\n`;
// Add tags if available
if (tags && tags.length > 0) {
knowledgeSection += `Tags: ${tags.join(", ")}\n`;
}
// Format dates
const createdDate = createdAt
? new Date(createdAt).toLocaleString()
: "Unknown Date";
const updatedDate = updatedAt
? new Date(updatedAt).toLocaleString()
: "Unknown Date";
knowledgeSection +=
`Created: ${createdDate}\n` + `Updated: ${updatedDate}\n\n`;
// Add knowledge content
knowledgeSection += `Content:\n${text || "No content available"}\n`;
// Add citations if available
if (citations && citations.length > 0) {
knowledgeSection += `\nCitations:\n`;
citations.forEach((citation, citIndex) => {
knowledgeSection += `${citIndex + 1}. ${citation}\n`;
});
}
return knowledgeSection;
})
.join("\n\n----------\n\n");
// Append pagination metadata for multi-page results
let paginationInfo = "";
if (totalPages > 1) {
paginationInfo =
`\n\nPagination Controls\n\n` +
`Viewing page ${page} of ${totalPages}.\n` +
`${page < totalPages ? "Use 'page' parameter to navigate to additional results." : ""}`;
}
return `${summary}\n\n${knowledgeSections}${paginationInfo}`;
}
}
/**
* Create a human-readable formatted response for the atlas_knowledge_list tool
*
* @param data The structured knowledge query response data
* @param isError Whether this response represents an error condition
* @returns Formatted MCP tool response with appropriate structure
*/
export function formatKnowledgeListResponse(data, isError = false) {
const formatter = new KnowledgeListFormatter();
const formattedText = formatter.format(data); // Assuming data is KnowledgeListResponse
return createToolResponse(formattedText, isError);
}