set_api_keys
Configure OpenAI and YouTube API keys to enable automated LinkedIn post drafts generation from YouTube video transcripts using the LinkedIn Post Generator MCP server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| openaiApiKey | Yes | Your OpenAI API key | |
| youtubeApiKey | No | Your YouTube API key (optional) |
Implementation Reference
- src/server.js:25-53 (handler)Executes the set_api_keys tool: sets OpenAI API key (required) and YouTube API key (optional) using ApiKeyManager, returns JSON success/error response.async ({ openaiApiKey, youtubeApiKey }) => { try { apiKeyManager.setOpenAIKey(openaiApiKey); if (youtubeApiKey) { apiKeyManager.setYouTubeKey(youtubeApiKey); } return { content: [{ type: "text", text: JSON.stringify({ success: true, message: "API keys set successfully. You can now use the other tools." }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ success: false, error: error.message }, null, 2) }], isError: true }; } },
- src/server.js:21-24 (schema)Zod input schema validating openaiApiKey (required string) and youtubeApiKey (optional string).{ openaiApiKey: z.string().min(1).describe("Your OpenAI API key"), youtubeApiKey: z.string().optional().describe("Your YouTube API key (optional)") },
- src/server.js:19-55 (registration)Registers the 'set_api_keys' tool on the MCP server with name, input schema, handler function, and description.server.tool( "set_api_keys", { openaiApiKey: z.string().min(1).describe("Your OpenAI API key"), youtubeApiKey: z.string().optional().describe("Your YouTube API key (optional)") }, async ({ openaiApiKey, youtubeApiKey }) => { try { apiKeyManager.setOpenAIKey(openaiApiKey); if (youtubeApiKey) { apiKeyManager.setYouTubeKey(youtubeApiKey); } return { content: [{ type: "text", text: JSON.stringify({ success: true, message: "API keys set successfully. You can now use the other tools." }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ success: false, error: error.message }, null, 2) }], isError: true }; } }, { description: "Set your API keys for OpenAI and YouTube (optional)" } );
- src/modules/api-key-manager.js:23-29 (helper)ApiKeyManager.setOpenAIKey method: validates and stores the OpenAI API key in instance property.setOpenAIKey(key) { if (!key || typeof key !== 'string' || key.trim() === '') { throw new Error("Invalid OpenAI API key"); } this.openaiApiKey = key.trim(); console.log("OpenAI API key set successfully"); }
- src/modules/api-key-manager.js:35-41 (helper)ApiKeyManager.setYouTubeKey method: validates and stores the YouTube API key in instance property.setYouTubeKey(key) { if (!key || typeof key !== 'string' || key.trim() === '') { throw new Error("Invalid YouTube API key"); } this.youtubeApiKey = key.trim(); console.log("YouTube API key set successfully"); }