@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
86 lines • 3.1 kB
JavaScript
import { CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';
// import { ToolCategory } from '../../core/types.js';
import { setupIssueTrackingTools } from './tools.js';
import { convertToolResultToMCP } from '../../core/mcp-adapter.js';
/**
* Issue Tracking Module Setup - 12-Factor MCP Implementation
*
* Provides comprehensive issue tracking capabilities
*/
export const issueTrackingModule = {
name: 'issue-tracking',
version: '1.0.0',
description: 'Track bugs, features, and enhancements',
async setup(context) {
const server = context.server;
// Register tools with the server
const toolRegistration = await setupIssueTrackingTools();
// Register tool handler for all issue tracking tools
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name } = request.params;
// Find the matching tool
const tool = toolRegistration.tools.find(t => t.name === name);
if (!tool) {
return null; // Let other handlers process this
}
// Create request context
const context = {
toolName: name,
requestId: `req-${Date.now()}`,
projectId: 'default',
userId: 'system',
timestamp: Date.now(),
db: null
};
// Execute the tool and convert result to MCP format
const result = await tool.execute(request.params.arguments || {}, context);
return convertToolResultToMCP(result, name);
});
return { success: true };
},
async getTools() {
const registration = await setupIssueTrackingTools();
return registration.tools;
}
/* metadata: {
category: 'project-management',
subcategory: 'Issue Tracking',
complexity: 'intermediate',
dependencies: ['projects'],
requiredPermissions: ['database:read', 'database:write'],
configSchema: {
type: 'object',
properties: {
defaultPriority: {
type: 'string',
enum: ['critical', 'high', 'medium', 'low'],
default: 'medium',
description: 'Default priority for new issues'
},
allowAnonymousIssues: {
type: 'boolean',
default: false,
description: 'Allow creating issues without authentication'
},
requireLabels: {
type: 'boolean',
default: false,
description: 'Require at least one label on issues'
},
autoAssignToCreator: {
type: 'boolean',
default: false,
description: 'Automatically assign issues to their creator'
},
issueNumberPrefix: {
type: 'string',
default: 'ISSUE',
description: 'Prefix for issue IDs'
}
}
}
} */
};
// Default export for compatibility
export default issueTrackingModule;
//# sourceMappingURL=index.js.map