39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
import { baseInputSchema } from "./tools/schemas.js";
|
|
import { handleAskChatGpt } from "./tools/ask-chatgpt.js";
|
|
import { loadConfig } from "./config/env.js";
|
|
import { createOpenAIClient } from "./openai/client.js";
|
|
import { sendOpenAIResponse } from "./openai/responses.js";
|
|
|
|
const server = new McpServer({
|
|
name: "chatgpt-mcp",
|
|
version: "0.1.0"
|
|
});
|
|
|
|
server.registerTool(
|
|
"ask_chatgpt",
|
|
{
|
|
description:
|
|
"General second-opinion question for advice, alternatives, risks, and clarification.",
|
|
inputSchema: baseInputSchema,
|
|
},
|
|
async (input) => {
|
|
const result = await handleAskChatGpt(input, {
|
|
loadConfig,
|
|
createOpenAIClient,
|
|
sendOpenAIResponse,
|
|
});
|
|
|
|
return {
|
|
content: [
|
|
{ type: "text", text: result.ok ? result.answer : `Error: ${result.error}` },
|
|
],
|
|
isError: !result.ok,
|
|
warnings: result.warnings?.length ? result.warnings : undefined,
|
|
};
|
|
}
|
|
);
|
|
|
|
await server.connect(new StdioServerTransport());
|