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,
|
isDesignCritiqueArgs,
|
||||||
isWritingFeedbackArgs,
|
isWritingFeedbackArgs,
|
||||||
isBrainstormEnhancementsArgs,
|
isBrainstormEnhancementsArgs,
|
||||||
|
toolResponseToServerResult,
|
||||||
} from "./types/index.js";
|
} from "./types/index.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,6 +76,7 @@ class MentorServer {
|
|||||||
const { name, arguments: args } = request.params;
|
const { name, arguments: args } = request.params;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
let response;
|
||||||
switch (name) {
|
switch (name) {
|
||||||
case "second_opinion": {
|
case "second_opinion": {
|
||||||
if (!args || !('user_request' in args) || typeof args.user_request !== 'string') {
|
if (!args || !('user_request' in args) || typeof args.user_request !== 'string') {
|
||||||
@@ -83,7 +85,8 @@ class MentorServer {
|
|||||||
"Missing required parameter: user_request"
|
"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": {
|
case "code_review": {
|
||||||
@@ -93,7 +96,8 @@ class MentorServer {
|
|||||||
"Invalid parameters for code review"
|
"Invalid parameters for code review"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await codeReview.handler(args);
|
response = await codeReview.handler(args);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "design_critique": {
|
case "design_critique": {
|
||||||
@@ -103,7 +107,8 @@ class MentorServer {
|
|||||||
"Invalid parameters for design critique"
|
"Invalid parameters for design critique"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await designCritique.handler(args);
|
response = await designCritique.handler(args);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "writing_feedback": {
|
case "writing_feedback": {
|
||||||
@@ -113,7 +118,8 @@ class MentorServer {
|
|||||||
"Invalid parameters for writing feedback"
|
"Invalid parameters for writing feedback"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await writingFeedback.handler(args);
|
response = await writingFeedback.handler(args);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "brainstorm_enhancements": {
|
case "brainstorm_enhancements": {
|
||||||
@@ -123,7 +129,8 @@ class MentorServer {
|
|||||||
"Invalid parameters for brainstorm enhancements"
|
"Invalid parameters for brainstorm enhancements"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await brainstormEnhancements.handler(args);
|
response = await brainstormEnhancements.handler(args);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -132,6 +139,9 @@ class MentorServer {
|
|||||||
`Tool not found: ${name}`
|
`Tool not found: ${name}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert tool response to server result format
|
||||||
|
return toolResponseToServerResult(response);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Handle errors that aren't already McpErrors
|
// Handle errors that aren't already McpErrors
|
||||||
if (!(error instanceof McpError)) {
|
if (!(error instanceof McpError)) {
|
||||||
|
|||||||
@@ -16,15 +16,16 @@ export interface ToolContent {
|
|||||||
text: string;
|
text: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Response format for our internal tool handlers
|
||||||
export interface ToolResponse {
|
export interface ToolResponse {
|
||||||
content: ToolContent[];
|
content: ToolContent[];
|
||||||
reasoning?: ToolContent[]; // Added to expose reasoning content
|
reasoning?: ToolContent[];
|
||||||
isError?: boolean;
|
isError?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LLMResponse {
|
export interface LLMResponse {
|
||||||
text: string;
|
text: string;
|
||||||
reasoning?: string; // Added for Chain of Thought content
|
reasoning?: string;
|
||||||
isError: boolean;
|
isError: boolean;
|
||||||
errorMessage?: string;
|
errorMessage?: string;
|
||||||
}
|
}
|
||||||
@@ -34,9 +35,6 @@ export interface FileValidationResult {
|
|||||||
error?: string;
|
error?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Configuration for the Deepseek API
|
|
||||||
*/
|
|
||||||
export interface APIConfig {
|
export interface APIConfig {
|
||||||
apiKey: string;
|
apiKey: string;
|
||||||
baseUrl: string;
|
baseUrl: string;
|
||||||
@@ -128,3 +126,12 @@ export interface ChatMessage {
|
|||||||
export interface ChatHistory {
|
export interface ChatHistory {
|
||||||
messages: ChatMessage[];
|
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