@houtini/gemini-mcp 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +784 -941
  2. package/dist/cli.js +5 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/index.d.ts +1 -1
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +5 -42
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/config/types.js +1 -2
  9. package/dist/index.d.ts +1 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +182 -90
  12. package/dist/index.js.map +1 -1
  13. package/dist/services/base-service.js +3 -10
  14. package/dist/services/base-service.js.map +1 -1
  15. package/dist/services/gemini/index.d.ts +3 -3
  16. package/dist/services/gemini/index.d.ts.map +1 -1
  17. package/dist/services/gemini/index.js +20 -24
  18. package/dist/services/gemini/index.js.map +1 -1
  19. package/dist/services/gemini/types.js +1 -2
  20. package/dist/tools/gemini-chat.d.ts +1 -1
  21. package/dist/tools/gemini-chat.d.ts.map +1 -1
  22. package/dist/tools/gemini-chat.js +10 -17
  23. package/dist/tools/gemini-chat.js.map +1 -1
  24. package/dist/tools/gemini-deep-research.d.ts +1 -1
  25. package/dist/tools/gemini-deep-research.d.ts.map +1 -1
  26. package/dist/tools/gemini-deep-research.js +24 -31
  27. package/dist/tools/gemini-deep-research.js.map +1 -1
  28. package/dist/tools/gemini-list-models.d.ts +1 -1
  29. package/dist/tools/gemini-list-models.d.ts.map +1 -1
  30. package/dist/tools/gemini-list-models.js +7 -14
  31. package/dist/tools/gemini-list-models.js.map +1 -1
  32. package/dist/utils/error-handler.js +7 -18
  33. package/dist/utils/error-handler.js.map +1 -1
  34. package/dist/utils/logger.js +4 -39
  35. package/dist/utils/logger.js.map +1 -1
  36. package/package.json +7 -5
  37. package/dist/tools/gemini-describe-video.d.ts +0 -38
  38. package/dist/tools/gemini-describe-video.d.ts.map +0 -1
  39. package/dist/tools/gemini-describe-video.js +0 -196
  40. package/dist/tools/gemini-describe-video.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,20 +1,15 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const index_1 = require("./index");
8
- const logger_1 = __importDefault(require("./utils/logger"));
2
+ import { GeminiMcpServer } from './index.js';
3
+ import logger from './utils/logger.js';
9
4
  // CLI entry point
10
5
  async function cli() {
11
6
  try {
12
- logger_1.default.info('Starting Gemini MCP Server via CLI...');
13
- const server = new index_1.GeminiMcpServer();
7
+ logger.info('Starting Gemini MCP Server via CLI...');
8
+ const server = new GeminiMcpServer();
14
9
  await server.start();
15
10
  }
16
11
  catch (error) {
17
- logger_1.default.error('CLI startup failed', { error });
12
+ logger.error('CLI startup failed', { error });
18
13
  process.exit(1);
19
14
  }
20
15
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,mCAA0C;AAC1C,4DAAoC;AAEpC,kBAAkB;AAClB,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC;QACH,gBAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,IAAI,uBAAe,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAEvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,kBAAkB;AAClB,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAEvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Config } from './types';
1
+ import { Config } from './types.js';
2
2
  export declare const config: Config;
3
3
  export declare function validateConfig(): void;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,eAAO,MAAM,MAAM,EAAE,MAmCpB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAKpC,eAAO,MAAM,MAAM,EAAE,MAmCpB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
@@ -1,43 +1,6 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.config = void 0;
37
- exports.validateConfig = validateConfig;
38
- const dotenv = __importStar(require("dotenv"));
1
+ import * as dotenv from 'dotenv';
39
2
  dotenv.config();
40
- exports.config = {
3
+ export const config = {
41
4
  gemini: {
42
5
  apiKey: process.env.GEMINI_API_KEY,
43
6
  safetySettings: [
@@ -58,7 +21,7 @@ exports.config = {
58
21
  threshold: 'BLOCK_MEDIUM_AND_ABOVE'
59
22
  }
60
23
  ],
61
- defaultModel: 'gemini-2.5-flash',
24
+ defaultModel: 'gemini-3-pro-preview',
62
25
  maxTokens: 16384,
63
26
  temperature: 0.7,
64
27
  defaultGrounding: true,
@@ -73,8 +36,8 @@ exports.config = {
73
36
  format: 'combined'
74
37
  }
75
38
  };
76
- function validateConfig() {
77
- if (!exports.config.gemini.apiKey) {
39
+ export function validateConfig() {
40
+ if (!config.gemini.apiKey) {
78
41
  throw new Error('GEMINI_API_KEY environment variable not set. ' +
79
42
  'Please set your Gemini API key: export GEMINI_API_KEY=your-api-key-here');
80
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,wCAOC;AAhDD,+CAAiC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEH,QAAA,MAAM,GAAW;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,cAAc,EAAE;YACd;gBACE,QAAQ,EAAE,0BAA0B;gBACpC,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,wBAAwB;aACpC;SACF;QACD,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,GAAG;QAChB,gBAAgB,EAAE,IAAI;QACtB,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM;KAC1E;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,MAAM,EAAE,UAAU;KACnB;CACF,CAAC;AAEF,SAAgB,cAAc;IAC5B,IAAI,CAAC,cAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,cAAc,EAAE;YACd;gBACE,QAAQ,EAAE,0BAA0B;gBACpC,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,wBAAwB;aACpC;YACD;gBACE,QAAQ,EAAE,iCAAiC;gBAC3C,SAAS,EAAE,wBAAwB;aACpC;SACF;QACD,YAAY,EAAE,sBAAsB;QACpC,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,GAAG;QAChB,gBAAgB,EAAE,IAAI;QACtB,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM;KAC1E;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,MAAM,EAAE,UAAU;KACnB;CACF,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
package/dist/index.d.ts CHANGED
@@ -2,10 +2,8 @@
2
2
  declare class GeminiMcpServer {
3
3
  private server;
4
4
  private geminiService;
5
- private tools;
6
5
  constructor();
7
- private initializeTools;
8
- private setupHandlers;
6
+ private registerTools;
9
7
  start(): Promise<void>;
10
8
  }
11
9
  export { GeminiMcpServer };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAiBA,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,KAAK,CAAmB;;IAkChC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAoDf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB7B;AAkCD,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAYA,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,aAAa,CAAgB;;IAyBrC,OAAO,CAAC,aAAa;IAkMf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB7B;AAgCD,OAAO,EAAE,eAAe,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,102 +1,196 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.GeminiMcpServer = void 0;
8
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
9
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
10
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
11
- const config_1 = require("./config");
12
- const gemini_1 = require("./services/gemini");
13
- const gemini_chat_1 = require("./tools/gemini-chat");
14
- const gemini_list_models_1 = require("./tools/gemini-list-models");
15
- const gemini_deep_research_1 = require("./tools/gemini-deep-research");
16
- const logger_1 = __importDefault(require("./utils/logger"));
17
- const error_handler_1 = require("./utils/error-handler");
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import * as z from 'zod';
5
+ import { config, validateConfig } from './config/index.js';
6
+ import { GeminiService } from './services/gemini/index.js';
7
+ import { GeminiDeepResearchTool } from './tools/gemini-deep-research.js';
8
+ import logger from './utils/logger.js';
9
+ import { McpError, createToolResult } from './utils/error-handler.js';
18
10
  class GeminiMcpServer {
19
11
  server;
20
12
  geminiService;
21
- tools;
22
13
  constructor() {
23
14
  try {
24
- (0, config_1.validateConfig)();
15
+ validateConfig();
25
16
  }
26
17
  catch (error) {
27
- logger_1.default.error('Configuration validation failed', { error });
18
+ logger.error('Configuration validation failed', { error });
28
19
  process.exit(1);
29
20
  }
30
- this.geminiService = new gemini_1.GeminiService(config_1.config.gemini);
31
- this.server = new index_js_1.Server({
32
- name: config_1.config.server.name,
33
- version: config_1.config.server.version,
34
- }, {
35
- capabilities: {
36
- tools: {},
37
- },
38
- });
39
- this.tools = new Map();
40
- this.initializeTools();
41
- this.setupHandlers();
42
- logger_1.default.info('Gemini MCP Server initialized', {
43
- serverName: config_1.config.server.name,
44
- version: config_1.config.server.version
21
+ this.geminiService = new GeminiService(config.gemini);
22
+ this.server = new McpServer({
23
+ name: config.server.name,
24
+ version: config.server.version,
45
25
  });
46
- }
47
- initializeTools() {
48
- const geminiChatTool = new gemini_chat_1.GeminiChatTool(this.geminiService);
49
- const geminiListModelsTool = new gemini_list_models_1.GeminiListModelsTool(this.geminiService);
50
- const geminiDeepResearchTool = new gemini_deep_research_1.GeminiDeepResearchTool(this.geminiService);
51
- this.tools.set('gemini_chat', geminiChatTool);
52
- this.tools.set('gemini_list_models', geminiListModelsTool);
53
- this.tools.set('gemini_deep_research', geminiDeepResearchTool);
54
- logger_1.default.info('Tools initialized', {
55
- toolCount: this.tools.size,
56
- tools: Array.from(this.tools.keys())
26
+ this.registerTools();
27
+ logger.info('Gemini MCP Server initialized', {
28
+ serverName: config.server.name,
29
+ version: config.server.version
57
30
  });
58
31
  }
59
- setupHandlers() {
60
- this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
61
- logger_1.default.info('Handling list_tools request');
62
- const tools = Array.from(this.tools.values()).map(tool => tool.getDefinition());
63
- return {
64
- tools
65
- };
32
+ registerTools() {
33
+ // Register gemini_chat tool
34
+ this.server.registerTool('gemini_chat', {
35
+ title: 'Gemini Chat',
36
+ description: 'Chat with Google Gemini models',
37
+ inputSchema: {
38
+ message: z.string().describe('The message to send'),
39
+ model: z.string()
40
+ .optional()
41
+ .describe('Model to use (defaults to latest available)'),
42
+ temperature: z.number()
43
+ .min(0.0)
44
+ .max(1.0)
45
+ .optional()
46
+ .default(0.7)
47
+ .describe('Controls randomness (0.0 to 1.0)'),
48
+ max_tokens: z.number()
49
+ .int()
50
+ .min(1)
51
+ .max(32768)
52
+ .optional()
53
+ .default(8192)
54
+ .describe('Maximum tokens in response'),
55
+ system_prompt: z.string()
56
+ .optional()
57
+ .describe('Optional system instruction'),
58
+ grounding: z.boolean()
59
+ .optional()
60
+ .default(true)
61
+ .describe('Enable Google Search grounding for real-time information')
62
+ },
63
+ outputSchema: {
64
+ content: z.string(),
65
+ success: z.boolean()
66
+ }
67
+ }, async ({ message, model, temperature, max_tokens, system_prompt, grounding }) => {
68
+ try {
69
+ logger.info('Executing gemini_chat tool', {
70
+ model,
71
+ messageLength: message?.length
72
+ });
73
+ if (!message) {
74
+ throw new McpError('Message is required', 'INVALID_PARAMS');
75
+ }
76
+ const response = await this.geminiService.chat({
77
+ message,
78
+ model,
79
+ temperature,
80
+ maxTokens: max_tokens,
81
+ systemPrompt: system_prompt,
82
+ grounding
83
+ });
84
+ return {
85
+ content: createToolResult(true, response.content),
86
+ structuredContent: { content: response.content, success: true }
87
+ };
88
+ }
89
+ catch (error) {
90
+ logger.error('gemini_chat tool execution failed', { error });
91
+ const errorMessage = error instanceof McpError
92
+ ? error.message
93
+ : `Unexpected error: ${error.message}`;
94
+ return {
95
+ content: createToolResult(false, errorMessage, error),
96
+ structuredContent: { content: errorMessage, success: false }
97
+ };
98
+ }
66
99
  });
67
- this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
68
- const { name, arguments: args } = request.params;
69
- logger_1.default.info('Handling call_tool request', {
70
- toolName: name,
71
- hasArgs: !!args
72
- });
100
+ // Register gemini_list_models tool
101
+ this.server.registerTool('gemini_list_models', {
102
+ title: 'List Gemini Models',
103
+ description: 'List available Gemini models and their descriptions',
104
+ inputSchema: {},
105
+ outputSchema: {
106
+ content: z.string(),
107
+ success: z.boolean()
108
+ }
109
+ }, async () => {
73
110
  try {
74
- const tool = this.tools.get(name);
75
- if (!tool) {
76
- throw new Error(`Unknown tool: ${name}`);
111
+ logger.info('Executing gemini_list_models tool');
112
+ const response = await this.geminiService.listModels();
113
+ let modelsInfo = 'Available Gemini Models:\n\n';
114
+ for (const model of response.models) {
115
+ modelsInfo += `• **${model.name}**: ${model.description}\n`;
77
116
  }
78
- const result = await tool.execute(args);
117
+ modelsInfo += `\nLast updated: ${response.timestamp}`;
79
118
  return {
80
- content: result
119
+ content: createToolResult(true, modelsInfo),
120
+ structuredContent: { content: modelsInfo, success: true }
81
121
  };
82
122
  }
83
123
  catch (error) {
84
- logger_1.default.error('Tool execution failed', {
85
- toolName: name,
86
- error: error.message
124
+ logger.error('gemini_list_models tool execution failed', { error });
125
+ const errorMessage = `Error listing models: ${error.message}`;
126
+ return {
127
+ content: createToolResult(false, errorMessage, error),
128
+ structuredContent: { content: errorMessage, success: false }
129
+ };
130
+ }
131
+ });
132
+ // Register gemini_deep_research tool
133
+ this.server.registerTool('gemini_deep_research', {
134
+ title: 'Gemini Deep Research',
135
+ description: 'Conduct deep research on complex topics using iterative multi-step analysis with Gemini. This performs multiple searches and synthesizes comprehensive research reports (takes several minutes). [MCP_RECOMMENDED_TIMEOUT_MS: 900000]',
136
+ inputSchema: {
137
+ research_question: z.string().describe('The complex research question or topic to investigate deeply'),
138
+ model: z.string()
139
+ .optional()
140
+ .describe('Model to use for deep research (defaults to latest available)'),
141
+ max_iterations: z.number()
142
+ .int()
143
+ .min(3)
144
+ .max(10)
145
+ .optional()
146
+ .default(5)
147
+ .describe('Number of research iterations (3-10, default 5). Environment guidance: Claude Desktop: use 3-4 (4-min timeout). Agent SDK/IDEs (VSCode, Cursor, Windsurf)/AI platforms (Cline, Roo-Cline): can use 7-10 (longer timeout tolerance)'),
148
+ focus_areas: z.array(z.string())
149
+ .optional()
150
+ .describe('Optional: specific areas to focus the research on')
151
+ },
152
+ outputSchema: {
153
+ content: z.string(),
154
+ success: z.boolean()
155
+ }
156
+ }, async ({ research_question, model, max_iterations, focus_areas }) => {
157
+ try {
158
+ logger.info('Starting deep research', {
159
+ question: research_question,
160
+ maxIterations: max_iterations || 5
161
+ });
162
+ // Create instance and execute (business logic preserved)
163
+ const deepResearchTool = new GeminiDeepResearchTool(this.geminiService);
164
+ const result = await deepResearchTool.execute({
165
+ research_question,
166
+ model,
167
+ max_iterations,
168
+ focus_areas
87
169
  });
88
- const mcpError = (0, error_handler_1.handleError)(error, `tool:${name}`);
170
+ // Result is already TextContent[] from execute method
89
171
  return {
90
- content: [
91
- {
92
- type: 'text',
93
- text: mcpError.message
94
- }
95
- ],
96
- isError: true
172
+ content: result,
173
+ structuredContent: {
174
+ content: result[0]?.text || 'Research completed',
175
+ success: true
176
+ }
177
+ };
178
+ }
179
+ catch (error) {
180
+ logger.error('Deep research failed', { error });
181
+ const errorMessage = error instanceof McpError
182
+ ? error.message
183
+ : `Deep research failed: ${error.message}`;
184
+ return {
185
+ content: createToolResult(false, errorMessage, error),
186
+ structuredContent: { content: errorMessage, success: false }
97
187
  };
98
188
  }
99
189
  });
190
+ logger.info('Tools registered', {
191
+ toolCount: 3,
192
+ tools: ['gemini_chat', 'gemini_list_models', 'gemini_deep_research']
193
+ });
100
194
  }
101
195
  async start() {
102
196
  try {
@@ -104,45 +198,43 @@ class GeminiMcpServer {
104
198
  if (!isValid) {
105
199
  throw new Error('Gemini API key validation failed');
106
200
  }
107
- logger_1.default.info('Starting Gemini MCP Server...');
108
- const transport = new stdio_js_1.StdioServerTransport();
201
+ logger.info('Starting Gemini MCP Server...');
202
+ const transport = new StdioServerTransport();
109
203
  await this.server.connect(transport);
110
- logger_1.default.info('Gemini MCP Server started successfully', {
204
+ logger.info('Gemini MCP Server started successfully', {
111
205
  transport: 'stdio',
112
- toolsAvailable: Array.from(this.tools.keys())
206
+ toolsAvailable: ['gemini_chat', 'gemini_list_models', 'gemini_deep_research']
113
207
  });
114
208
  }
115
209
  catch (error) {
116
- logger_1.default.error('Failed to start Gemini MCP Server', { error });
210
+ logger.error('Failed to start Gemini MCP Server', { error });
117
211
  process.exit(1);
118
212
  }
119
213
  }
120
214
  }
121
- exports.GeminiMcpServer = GeminiMcpServer;
122
215
  process.on('SIGINT', () => {
123
- logger_1.default.info('Received SIGINT, shutting down gracefully...');
216
+ logger.info('Received SIGINT, shutting down gracefully...');
124
217
  process.exit(0);
125
218
  });
126
219
  process.on('SIGTERM', () => {
127
- logger_1.default.info('Received SIGTERM, shutting down gracefully...');
220
+ logger.info('Received SIGTERM, shutting down gracefully...');
128
221
  process.exit(0);
129
222
  });
130
223
  process.on('uncaughtException', (error) => {
131
- logger_1.default.error('Uncaught exception', { error });
224
+ logger.error('Uncaught exception', { error });
132
225
  process.exit(1);
133
226
  });
134
227
  process.on('unhandledRejection', (reason, promise) => {
135
- logger_1.default.error('Unhandled promise rejection', { reason, promise });
228
+ logger.error('Unhandled promise rejection', { reason, promise });
136
229
  process.exit(1);
137
230
  });
138
231
  async function main() {
139
232
  const server = new GeminiMcpServer();
140
233
  await server.start();
141
234
  }
142
- if (require.main === module) {
143
- main().catch(error => {
144
- logger_1.default.error('Server startup failed', { error });
145
- process.exit(1);
146
- });
147
- }
235
+ main().catch(error => {
236
+ logger.error('Server startup failed', { error });
237
+ process.exit(1);
238
+ });
239
+ export { GeminiMcpServer };
148
240
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseService = void 0;
7
- const logger_1 = __importDefault(require("../utils/logger"));
8
- class BaseService {
9
- logger = logger_1.default;
1
+ import logger from '../utils/logger.js';
2
+ export class BaseService {
3
+ logger = logger;
10
4
  async handleError(error, context) {
11
5
  const contextMessage = context ? `[${context}] ` : '';
12
6
  const message = `${contextMessage}${error.message}`;
@@ -26,5 +20,4 @@ class BaseService {
26
20
  this.logger.error(message, { error: error?.stack });
27
21
  }
28
22
  }
29
- exports.BaseService = BaseService;
30
23
  //# sourceMappingURL=base-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-service.js","sourceRoot":"","sources":["../../src/services/base-service.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqC;AAErC,MAAsB,WAAW;IACrB,MAAM,GAAG,gBAAM,CAAC;IAEhB,KAAK,CAAC,WAAW,CAAC,KAAY,EAAE,OAAgB;QACxD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;IACd,CAAC;IAES,OAAO,CAAC,OAAe,EAAE,QAAc;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAES,UAAU,CAAC,OAAe,EAAE,QAAc;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAES,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AA1BD,kCA0BC"}
1
+ {"version":3,"file":"base-service.js","sourceRoot":"","sources":["../../src/services/base-service.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,MAAM,OAAgB,WAAW;IACrB,MAAM,GAAG,MAAM,CAAC;IAEhB,KAAK,CAAC,WAAW,CAAC,KAAY,EAAE,OAAgB;QACxD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;IACd,CAAC;IAES,OAAO,CAAC,OAAe,EAAE,QAAc;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAES,UAAU,CAAC,OAAe,EAAE,QAAc;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAES,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- import { BaseService } from '../base-service';
2
- import { GeminiConfig } from '../../config/types';
3
- import { ChatRequest, ChatResponse, ListModelsResponse } from './types';
1
+ import { BaseService } from '../base-service.js';
2
+ import { GeminiConfig } from '../../config/types.js';
3
+ import { ChatRequest, ChatResponse, ListModelsResponse } from './types.js';
4
4
  export declare class GeminiService extends BaseService {
5
5
  private genAI;
6
6
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,MAAM,EAAE,YAAY;YAelB,uBAAuB;YAcvB,gBAAgB;YAsBhB,kBAAkB;IAmChC,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAyCzB,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,kBAAkB;IAkEpB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8IjD,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAezC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxC,OAAO,CAAC,iBAAiB;IAqBzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAIjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAGpB,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,MAAM,EAAE,YAAY;YAelB,uBAAuB;YAcvB,gBAAgB;YAsBhB,kBAAkB;IAmChC,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAyCzB,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,kBAAkB;IAkEpB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8IjD,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAezC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxC,OAAO,CAAC,iBAAiB;IAqBzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAIjD"}