Download frontend/src/ui/mcp/setupInstructions.js from ruslanmv/HomePilot: direct link, hf CLI and curl.
- Browser
- Download file 14 kB
-
https://huggingface.co/spaces/ruslanmv/HomePilot/resolve/main/frontend/src/ui/mcp/setupInstructions.js
- Command line
-
hf download hf://spaces/ruslanmv/HomePilot/frontend/src/ui/mcp/setupInstructions.js
-
curl -L -o setupInstructions.js https://huggingface.co/spaces/ruslanmv/HomePilot/resolve/main/frontend/src/ui/mcp/setupInstructions.js
14 kB
| /** | |
| * Setup instructions for MCP catalog servers, keyed by auth type. | |
| * | |
| * Provides per-server guidance (where to get API keys, what scopes to grant, etc.) | |
| * with a fallback to generic instructions per auth type. | |
| * | |
| * All documentation URLs are derived from the actual server URLs in mcp-catalog.yml. | |
| * OAuth servers: the server URL itself IS the connection point β users open it in | |
| * their browser to authorize. There is no separate /oauth/authorize endpoint. | |
| * | |
| * Phase 10 β fully additive, does not modify any existing file. | |
| */ | |
| // ββ Per-server overrides (keyed by server.id from mcp-catalog.yml) βββββββ | |
| const SERVER_GUIDES = { | |
| // ββ API Key servers ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| hubspot: { | |
| steps: [ | |
| { title: 'Open HubSpot Settings', description: 'Go to Settings > Integrations > Private Apps in your HubSpot account.', link: { label: 'Open HubSpot Private Apps', url: 'https://app.hubspot.com/private-apps/' } }, | |
| { title: 'Create a private app', description: 'Click "Create a private app". Give it a name and select the scopes you need (CRM, Marketing, etc.).' }, | |
| { title: 'Copy the token', description: 'After creating the app, copy the access token and paste it below.' }, | |
| ], | |
| credentialLabel: 'Private App Token', | |
| credentialPlaceholder: 'pat-xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| telnyx: { | |
| steps: [ | |
| { title: 'Open Telnyx Portal', description: 'Log in to your Telnyx account and go to the API Keys section.', link: { label: 'Open Telnyx API Keys', url: 'https://portal.telnyx.com/#/app/api-keys' } }, | |
| { title: 'Create API Key', description: 'Click "Create API Key", give it a descriptive name.' }, | |
| { title: 'Copy & paste', description: 'Copy the generated key and paste it below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'KEY_xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| zapier: { | |
| steps: [ | |
| { title: 'Open Zapier MCP', description: 'Visit your Zapier MCP settings to find your API key.', link: { label: 'Open Zapier MCP', url: 'https://actions.zapier.com/credentials/' } }, | |
| { title: 'Copy your API key', description: 'Copy the API key from your Zapier MCP credentials page.' }, | |
| { title: 'Paste below', description: 'Paste the key below to connect Zapier to your gateway.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'sk-xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| apify: { | |
| steps: [ | |
| { title: 'Open Apify Console', description: 'Log in to your Apify account and go to Settings > Integrations.', link: { label: 'Open Apify Console', url: 'https://console.apify.com/account/integrations' } }, | |
| { title: 'Copy your API token', description: 'Find your personal API token and copy it.' }, | |
| { title: 'Paste below', description: 'Paste your Apify API token in the field below.' }, | |
| ], | |
| credentialLabel: 'API Token', | |
| credentialPlaceholder: 'apify_api_xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| needle: { | |
| steps: [ | |
| { title: 'Open Needle Dashboard', description: 'Log in to your Needle account and navigate to API settings.', link: { label: 'Visit Needle', url: 'https://needle-ai.com' } }, | |
| { title: 'Generate API Key', description: 'Create a new API key for MCP integration.' }, | |
| { title: 'Paste below', description: 'Paste the API key in the field below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'ndk_xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| dappier: { | |
| steps: [ | |
| { title: 'Open Dappier Dashboard', description: 'Log in to your Dappier account.', link: { label: 'Visit Dappier', url: 'https://dappier.com' } }, | |
| { title: 'Get your API key', description: 'Navigate to your developer settings and copy your API key.' }, | |
| { title: 'Paste below', description: 'Paste it in the field below to connect.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your Dappier API key...', | |
| }, | |
| 'close-crm-api': { | |
| steps: [ | |
| { title: 'Open Close Settings', description: 'Log in to Close and go to Settings > Developer > API Keys.', link: { label: 'Open Close Settings', url: 'https://app.close.com/settings/' } }, | |
| { title: 'Create API Key', description: 'Click "Create API Key" and give it a descriptive name.' }, | |
| { title: 'Paste below', description: 'Copy the key and paste it below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'api_xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| 'dodo-payments': { | |
| steps: [ | |
| { title: 'Open Dodo Payments', description: 'Log in to your Dodo Payments dashboard.', link: { label: 'Visit Dodo Payments', url: 'https://dodopayments.com' } }, | |
| { title: 'Navigate to API Keys', description: 'Find the API Keys section in your account settings.' }, | |
| { title: 'Paste below', description: 'Copy your API key and paste it below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your Dodo Payments API key...', | |
| }, | |
| 'mercado-pago': { | |
| steps: [ | |
| { title: 'Open Mercado Pago Developer', description: 'Go to the Mercado Pago developer portal.', link: { label: 'Open Mercado Pago Dev', url: 'https://www.mercadopago.com/developers' } }, | |
| { title: 'Get your Access Token', description: 'Navigate to your credentials and copy your Access Token.' }, | |
| { title: 'Paste below', description: 'Paste the token in the field below.' }, | |
| ], | |
| credentialLabel: 'Access Token', | |
| credentialPlaceholder: 'APP_USR-xxxxxxxxxxxxxxxxxxxx', | |
| }, | |
| 'mercado-libre': { | |
| steps: [ | |
| { title: 'Open Mercado Libre Developer', description: 'Go to the Mercado Libre developer portal.', link: { label: 'Open ML Developer', url: 'https://developers.mercadolibre.com' } }, | |
| { title: 'Get your Access Token', description: 'Create an app and get your access token from the credentials page.' }, | |
| { title: 'Paste below', description: 'Paste the token in the field below.' }, | |
| ], | |
| credentialLabel: 'Access Token', | |
| credentialPlaceholder: 'Enter your Mercado Libre token...', | |
| }, | |
| shortio: { | |
| steps: [ | |
| { title: 'Open Short.io Dashboard', description: 'Log in to your Short.io account.', link: { label: 'Open Short.io', url: 'https://short.io' } }, | |
| { title: 'Get your API Key', description: 'Go to Integrations & API to find your API key.' }, | |
| { title: 'Paste below', description: 'Copy and paste the API key below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your Short.io API key...', | |
| }, | |
| 'polar-signals': { | |
| steps: [ | |
| { title: 'Open Polar Signals Cloud', description: 'Log in to your Polar Signals account.', link: { label: 'Open Polar Signals', url: 'https://cloud.polarsignals.com' } }, | |
| { title: 'Generate API Token', description: 'Go to Settings > API Tokens and create a new token.' }, | |
| { title: 'Paste below', description: 'Paste the token in the field below.' }, | |
| ], | |
| credentialLabel: 'API Token', | |
| credentialPlaceholder: 'Enter your Polar Signals token...', | |
| }, | |
| customgpt: { | |
| steps: [ | |
| { title: 'Open CustomGPT Dashboard', description: 'Log in to your CustomGPT.ai account.', link: { label: 'Open CustomGPT.ai', url: 'https://app.customgpt.ai' } }, | |
| { title: 'Get your API Key', description: 'Navigate to Settings > API to find your project API key.' }, | |
| { title: 'Paste below', description: 'Copy and paste the key below.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your CustomGPT API key...', | |
| }, | |
| // ββ OAuth2.1 & API Key (Stripe β supports both) ββββββββββββββββββββββββ | |
| stripe: { | |
| steps: [ | |
| { title: 'Open Stripe Dashboard', description: 'Go to Developers > API keys in your Stripe dashboard.', link: { label: 'Open Stripe API Keys', url: 'https://dashboard.stripe.com/apikeys' } }, | |
| { title: 'Copy your secret key', description: 'Use your Secret key (starts with sk_test_ or sk_live_). For testing, use the test mode key.' }, | |
| { title: 'Paste below', description: 'Paste your Stripe secret key in the field below.' }, | |
| ], | |
| credentialLabel: 'Secret Key', | |
| credentialPlaceholder: 'sk_test_xxxxxxxxxxxxxxxxxxxx', | |
| credentialHint: 'Use a restricted key with only the permissions you need.', | |
| }, | |
| }; | |
| // ββ Generic fallbacks by auth type βββββββββββββββββββββββββββββββββββββββ | |
| const AUTH_TYPE_GUIDES = { | |
| 'Open': { | |
| steps: [ | |
| { title: 'No configuration needed', description: 'This server is open and does not require any authentication. It will be ready to use immediately after adding.' }, | |
| ], | |
| }, | |
| 'OAuth2.1': { | |
| steps: [ | |
| { title: 'About OAuth authentication', description: 'This MCP server uses OAuth 2.1 for authentication. The OAuth flow is handled directly by the server when your MCP client connects to it.' }, | |
| { title: 'How it works', description: 'When your MCP client first connects, the server will redirect you to the provider\'s login page. After you grant access, the connection is established automatically.' }, | |
| { title: 'Note', description: 'The server has been registered in your gateway. OAuth authorization will happen automatically when an MCP-compatible client connects to the server URL. You may need to configure your client to connect to this server endpoint.' }, | |
| ], | |
| }, | |
| 'OAuth': { | |
| steps: [ | |
| { title: 'About OAuth authentication', description: 'This MCP server uses OAuth for authentication. The flow is handled by the server when your MCP client connects.' }, | |
| { title: 'How it works', description: 'Your MCP client will be redirected to the provider to authorize access. After granting permissions, the connection completes automatically.' }, | |
| { title: 'Note', description: 'The server has been added to your gateway. OAuth will be triggered when a client connects.' }, | |
| ], | |
| }, | |
| 'API Key': { | |
| steps: [ | |
| { title: 'Get your API key', description: 'Log in to the provider\'s website and navigate to their API or developer settings to generate an API key.' }, | |
| { title: 'Copy the key', description: 'Create a new key (or use an existing one) and copy it to your clipboard.' }, | |
| { title: 'Paste below', description: 'Paste the API key in the field below to connect.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your API key...', | |
| credentialHint: 'Your key is sent securely and stored encrypted.', | |
| }, | |
| 'API': { | |
| steps: [ | |
| { title: 'Get your API credentials', description: 'Log in to the provider and find your API key or token in the developer/settings section.' }, | |
| { title: 'Paste below', description: 'Paste the credential in the field below.' }, | |
| ], | |
| credentialLabel: 'API Token', | |
| credentialPlaceholder: 'Enter your API token...', | |
| credentialHint: 'Your token is sent securely and stored encrypted.', | |
| }, | |
| 'OAuth2.1 & API Key': { | |
| steps: [ | |
| { title: 'Choose your method', description: 'This server supports both OAuth and API Key authentication. The simplest option is to use an API key β paste it below to connect immediately.' }, | |
| { title: 'Get your API key', description: 'Log in to the provider\'s website and navigate to their developer settings to generate an API key.' }, | |
| { title: 'Paste below', description: 'Enter your API key to connect. OAuth can also be used when an MCP client connects directly.' }, | |
| ], | |
| credentialLabel: 'API Key', | |
| credentialPlaceholder: 'Enter your API key...', | |
| credentialHint: 'API Key is the simplest method. OAuth is also available via direct client connection.', | |
| }, | |
| }; | |
| // ββ Public API ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| /** Returns the setup guide for a given server, merging per-server overrides with auth-type defaults. */ | |
| export function getSetupGuide(serverId, authType) { | |
| const serverOverride = SERVER_GUIDES[serverId]; | |
| const authDefault = AUTH_TYPE_GUIDES[authType] || AUTH_TYPE_GUIDES['API Key']; | |
| if (!serverOverride) | |
| return authDefault; | |
| return { | |
| steps: serverOverride.steps || authDefault.steps, | |
| credentialLabel: serverOverride.credentialLabel || authDefault.credentialLabel, | |
| credentialPlaceholder: serverOverride.credentialPlaceholder || authDefault.credentialPlaceholder, | |
| credentialHint: serverOverride.credentialHint || authDefault.credentialHint, | |
| }; | |
| } | |
| /** Returns true if this auth type requires the user to enter an API key / token. */ | |
| export function needsCredentialInput(authType) { | |
| return ['API Key', 'API', 'OAuth2.1 & API Key'].includes(authType); | |
| } | |
| /** Returns true if this auth type uses an OAuth redirect flow (handled by the server URL itself). */ | |
| export function needsOAuthFlow(authType) { | |
| return ['OAuth2.1', 'OAuth'].includes(authType); | |
| } | |
| /** Returns true if the server works immediately without any config. */ | |
| export function isOpenAuth(authType) { | |
| return authType === 'Open'; | |
| } | |