@mseep/atlas-mcp-server
Version:
A Model Context Protocol (MCP) server for ATLAS, a Neo4j-powered task management system for LLM Agents - implementing a three-tier architecture (Projects, Tasks, Knowledge) to manage complex workflows.
96 lines (95 loc) • 4.17 kB
JavaScript
import { z } from "zod";
// Base error codes that all tools can use
export var BaseErrorCode;
(function (BaseErrorCode) {
BaseErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
BaseErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
BaseErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
BaseErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
BaseErrorCode["NOT_FOUND"] = "NOT_FOUND";
BaseErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED"; // Added permission denied error
})(BaseErrorCode || (BaseErrorCode = {}));
// Project-specific error codes
export var ProjectErrorCode;
(function (ProjectErrorCode) {
ProjectErrorCode["DUPLICATE_NAME"] = "DUPLICATE_NAME";
ProjectErrorCode["INVALID_STATUS"] = "INVALID_STATUS";
ProjectErrorCode["PROJECT_NOT_FOUND"] = "PROJECT_NOT_FOUND";
ProjectErrorCode["DEPENDENCY_CYCLE"] = "DEPENDENCY_CYCLE";
ProjectErrorCode["INVALID_DEPENDENCY"] = "INVALID_DEPENDENCY";
})(ProjectErrorCode || (ProjectErrorCode = {}));
// Task-specific error codes
export var TaskErrorCode;
(function (TaskErrorCode) {
TaskErrorCode["TASK_NOT_FOUND"] = "TASK_NOT_FOUND";
TaskErrorCode["INVALID_STATUS"] = "INVALID_STATUS";
TaskErrorCode["INVALID_PRIORITY"] = "INVALID_PRIORITY";
TaskErrorCode["INVALID_DEPENDENCY"] = "INVALID_DEPENDENCY";
TaskErrorCode["DEPENDENCY_CYCLE"] = "DEPENDENCY_CYCLE";
})(TaskErrorCode || (TaskErrorCode = {}));
// Note-specific error codes
export var NoteErrorCode;
(function (NoteErrorCode) {
NoteErrorCode["INVALID_TAGS"] = "INVALID_TAGS";
NoteErrorCode["NOTE_NOT_FOUND"] = "NOTE_NOT_FOUND";
})(NoteErrorCode || (NoteErrorCode = {}));
// Link-specific error codes
export var LinkErrorCode;
(function (LinkErrorCode) {
LinkErrorCode["INVALID_URL"] = "INVALID_URL";
LinkErrorCode["LINK_NOT_FOUND"] = "LINK_NOT_FOUND";
LinkErrorCode["DUPLICATE_URL"] = "DUPLICATE_URL";
})(LinkErrorCode || (LinkErrorCode = {}));
// Member-specific error codes
export var MemberErrorCode;
(function (MemberErrorCode) {
MemberErrorCode["INVALID_ROLE"] = "INVALID_ROLE";
MemberErrorCode["MEMBER_NOT_FOUND"] = "MEMBER_NOT_FOUND";
MemberErrorCode["DUPLICATE_MEMBER"] = "DUPLICATE_MEMBER";
})(MemberErrorCode || (MemberErrorCode = {}));
// Skill-specific error codes
export var SkillErrorCode;
(function (SkillErrorCode) {
SkillErrorCode["SKILL_NOT_FOUND"] = "SKILL_NOT_FOUND";
SkillErrorCode["DEPENDENCY_NOT_FOUND"] = "DEPENDENCY_NOT_FOUND";
SkillErrorCode["MISSING_PARAMETER"] = "MISSING_PARAMETER";
SkillErrorCode["CIRCULAR_DEPENDENCY"] = "CIRCULAR_DEPENDENCY";
SkillErrorCode["SKILL_EXECUTION_ERROR"] = "SKILL_EXECUTION_ERROR";
})(SkillErrorCode || (SkillErrorCode = {}));
// Database export/import error codes
export var DatabaseExportImportErrorCode;
(function (DatabaseExportImportErrorCode) {
DatabaseExportImportErrorCode["EXPORT_ERROR"] = "EXPORT_ERROR";
DatabaseExportImportErrorCode["IMPORT_ERROR"] = "IMPORT_ERROR";
DatabaseExportImportErrorCode["FILE_ACCESS_ERROR"] = "FILE_ACCESS_ERROR";
DatabaseExportImportErrorCode["INVALID_EXPORT_FORMAT"] = "INVALID_EXPORT_FORMAT";
DatabaseExportImportErrorCode["RESET_FAILED"] = "RESET_FAILED";
DatabaseExportImportErrorCode["INVALID_CONFIRMATION_CODE"] = "INVALID_CONFIRMATION_CODE";
DatabaseExportImportErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
})(DatabaseExportImportErrorCode || (DatabaseExportImportErrorCode = {}));
// Base MCP error class
export class McpError extends Error {
constructor(code, message, details) {
super(message);
this.code = code;
this.details = details;
this.name = 'McpError';
}
toResponse() {
const content = {
type: "text",
text: `Error [${this.code}]: ${this.message}${this.details ? `\nDetails: ${JSON.stringify(this.details, null, 2)}` : ''}`
};
return {
content: [content],
isError: true,
_type: "tool_response"
};
}
}
// Error schema for validation
export const ErrorSchema = z.object({
code: z.string(),
message: z.string(),
details: z.record(z.unknown()).optional()
});