mirror of
https://github.com/aljazceru/mentor-mcp-server.git
synced 2025-12-17 05:54:26 +01:00
fix: resolve TypeScript errors in server implementation
- Fix tool response type compatibility with MCP SDK - Add toolResponseToServerResult helper function - Update server to properly convert tool responses - Improve type safety in request handling - Clean up error handling
This commit is contained in:
@@ -18,6 +18,7 @@ import {
|
||||
isDesignCritiqueArgs,
|
||||
isWritingFeedbackArgs,
|
||||
isBrainstormEnhancementsArgs,
|
||||
toolResponseToServerResult,
|
||||
} from "./types/index.js";
|
||||
|
||||
/**
|
||||
@@ -75,6 +76,7 @@ class MentorServer {
|
||||
const { name, arguments: args } = request.params;
|
||||
|
||||
try {
|
||||
let response;
|
||||
switch (name) {
|
||||
case "second_opinion": {
|
||||
if (!args || !('user_request' in args) || typeof args.user_request !== 'string') {
|
||||
@@ -83,7 +85,8 @@ class MentorServer {
|
||||
"Missing required parameter: user_request"
|
||||
);
|
||||
}
|
||||
return await secondOpinion.handler({ user_request: args.user_request });
|
||||
response = await secondOpinion.handler({ user_request: args.user_request });
|
||||
break;
|
||||
}
|
||||
|
||||
case "code_review": {
|
||||
@@ -93,7 +96,8 @@ class MentorServer {
|
||||
"Invalid parameters for code review"
|
||||
);
|
||||
}
|
||||
return await codeReview.handler(args);
|
||||
response = await codeReview.handler(args);
|
||||
break;
|
||||
}
|
||||
|
||||
case "design_critique": {
|
||||
@@ -103,7 +107,8 @@ class MentorServer {
|
||||
"Invalid parameters for design critique"
|
||||
);
|
||||
}
|
||||
return await designCritique.handler(args);
|
||||
response = await designCritique.handler(args);
|
||||
break;
|
||||
}
|
||||
|
||||
case "writing_feedback": {
|
||||
@@ -113,7 +118,8 @@ class MentorServer {
|
||||
"Invalid parameters for writing feedback"
|
||||
);
|
||||
}
|
||||
return await writingFeedback.handler(args);
|
||||
response = await writingFeedback.handler(args);
|
||||
break;
|
||||
}
|
||||
|
||||
case "brainstorm_enhancements": {
|
||||
@@ -123,7 +129,8 @@ class MentorServer {
|
||||
"Invalid parameters for brainstorm enhancements"
|
||||
);
|
||||
}
|
||||
return await brainstormEnhancements.handler(args);
|
||||
response = await brainstormEnhancements.handler(args);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -132,6 +139,9 @@ class MentorServer {
|
||||
`Tool not found: ${name}`
|
||||
);
|
||||
}
|
||||
|
||||
// Convert tool response to server result format
|
||||
return toolResponseToServerResult(response);
|
||||
} catch (error) {
|
||||
// Handle errors that aren't already McpErrors
|
||||
if (!(error instanceof McpError)) {
|
||||
|
||||
@@ -16,15 +16,16 @@ export interface ToolContent {
|
||||
text: string;
|
||||
}
|
||||
|
||||
// Response format for our internal tool handlers
|
||||
export interface ToolResponse {
|
||||
content: ToolContent[];
|
||||
reasoning?: ToolContent[]; // Added to expose reasoning content
|
||||
reasoning?: ToolContent[];
|
||||
isError?: boolean;
|
||||
}
|
||||
|
||||
export interface LLMResponse {
|
||||
text: string;
|
||||
reasoning?: string; // Added for Chain of Thought content
|
||||
reasoning?: string;
|
||||
isError: boolean;
|
||||
errorMessage?: string;
|
||||
}
|
||||
@@ -34,9 +35,6 @@ export interface FileValidationResult {
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configuration for the Deepseek API
|
||||
*/
|
||||
export interface APIConfig {
|
||||
apiKey: string;
|
||||
baseUrl: string;
|
||||
@@ -127,4 +125,13 @@ export interface ChatMessage {
|
||||
|
||||
export interface ChatHistory {
|
||||
messages: ChatMessage[];
|
||||
}
|
||||
|
||||
// Helper function to convert ToolResponse to ServerResult format
|
||||
export function toolResponseToServerResult(response: ToolResponse): Record<string, unknown> {
|
||||
return {
|
||||
content: response.content,
|
||||
...(response.reasoning ? { reasoning: response.reasoning } : {}),
|
||||
...(response.isError ? { isError: response.isError } : {})
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user