ai-expert-workflow-mcp
Version:
Enhanced AI Expert Workflow MCP Server with structured conversation flow, topic tracking, and optional Task Master integration
67 lines (66 loc) • 2.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExpertResponse = getExpertResponse;
exports.generateDocument = generateDocument;
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
const anthropic = new sdk_1.default({
apiKey: process.env.ANTHROPIC_API_KEY || '',
});
async function getExpertResponse(systemPrompt, userInput) {
try {
const response = await anthropic.messages.create({
model: process.env.MODEL || 'claude-3-sonnet-20240229',
max_tokens: parseInt(process.env.MAX_TOKENS || '4000'),
temperature: parseFloat(process.env.TEMPERATURE || '0.7'),
system: systemPrompt,
messages: [
{ role: 'user', content: userInput }
]
});
// Handle different content block types
const content = response.content[0];
if ('text' in content) {
return content.text || '';
}
else {
console.error('Unexpected content format:', content);
return 'Error: Unexpected response format from Claude API';
}
}
catch (error) {
console.error('Error calling Claude API:', error);
throw error;
}
}
async function generateDocument(systemPrompt, template, userInput) {
const enhancedPrompt = `${systemPrompt}\n\nPlease use the following template structure for your response:\n\n${template}\n\nBased on the user's input, create a complete, well-structured document. Format your response using Markdown with clear sections and subsections.`;
try {
const response = await anthropic.messages.create({
model: process.env.MODEL || 'claude-3-sonnet-20240229',
max_tokens: parseInt(process.env.MAX_TOKENS || '8000'),
temperature: parseFloat(process.env.TEMPERATURE || '0.5'),
system: enhancedPrompt,
messages: [
{ role: 'user', content: userInput }
]
});
// Handle different content block types
const content = response.content[0];
if ('text' in content) {
return content.text || '';
}
else {
console.error('Unexpected content format:', content);
return 'Error: Unexpected response format from Claude API';
}
}
catch (error) {
console.error('Error calling Claude API:', error);
throw error;
}
}