Skip to main content

Connect VS Code to Nordva Launch

VS Code's agent mode (GitHub Copilot Chat) loads MCP servers from .vscode/mcp.json. Inputs keep the key out of the file.

Before you start

Create a secret key (it starts with nv_live_) under Dashboard → API keys. Publishable keys are meant for browsers and are refused by most tools.

Setup

01Add the server to the workspace

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "nordva-key",
      "description": "Nordva Launch secret key",
      "password": true
    }
  ],
  "servers": {
    "nordva": {
      "type": "http",
      "url": "https://mcp.nordva.dev",
      "headers": {
        "Authorization": "Bearer ${input:nordva-key}"
      }
    }
  }
}

VS Code prompts for the key the first time the server starts and stores it in its secret storage, so this file is safe to commit. Note that the top-level property is servers, not mcpServers.

02Check the connection

Run MCP: List Servers from the Command Palette and start nordva. In the Chat view, switch to Agent mode and check that the nordva tools are listed under the tools button. Ask it to run setup_check.

Notes for VS Code

  • MCP tools are only available in Agent mode, not in Ask or Edit mode.
  • If the connection fails with 401, the Authorization header is missing or malformed. If a tool answers INVALID_API_KEY or KEY_REVOKED, the header arrived but the key is wrong.

Tools you get

Changelog

publish_changelog_entryPublish or schedule a changelog entryAll plans
list_changelog_entriesList recent changelog entriesAll plans
archive_changelog_entryRemove a changelog entry from public viewAll plans

Waitlist

add_to_waitlistAdd an email to a waitlistAll plans
import_waitlistImport an existing list into the waitlistAll plans
get_waitlist_statsGet waitlist stats and top referrers (admin view)All plans
get_waitlist_leaderboardGet the public-safe waitlist leaderboardIndie and Builder
invite_from_waitlistInvite people from the waitlistIndie and Builder
export_waitlistExport waitlist to CSV or JSONIndie and Builder
get_waitlist_settingsGet current waitlist pause state and custom copyAll plans
update_waitlist_settingsPause/resume waitlist or set custom landing-page copyAll plans
get_waitlist_embed_snippetGet HTML snippet to embed the waitlist on the developer's siteAll plans

Feedback

submit_feedbackSubmit, classify, and route user feedbackIndie and Builder
list_feedbackList recent feedback submissionsAll plans
update_feedbackMark feedback reviewed or resolved, or fix its categoryAll plans
configure_feedback_routingConfigure a feedback routing destination (email/linear/github/slack)All plans

Notifications

send_notificationSend an in-app notification to one of your usersBuilder
get_unread_notificationsList unread notificationsBuilder
mark_notifications_readMark notifications as readBuilder

Revenue

get_stripe_connection_statusCheck whether Stripe is connected and syncingAll plans
get_revenue_summaryGet MRR, subscriptions, growth and churn from StripeIndie and Builder
get_revenue_seriesGet revenue over time from StripeIndie and Builder
list_recent_paymentsList recent payments and cancellations from StripeIndie and Builder

Contacts

list_contactsList people across waitlist, feedback, subscribers and StripeAll plans
get_contactGet one person across every primitiveAll plans
update_contactSet a contact's stage or noteAll plans

Attribution

get_attribution_reportSee which signup sources produce paying customersIndie and Builder

Project and domains

get_insightsGet a summary of the project over a periodAll plans
setup_checkVerify Nordva Launch auth and report planAll plans
get_projectRead current project name and slugAll plans
update_projectRename project or change its public URL slugAll plans
register_allowed_originAdd a CORS-allowed origin to the projectAll plans
list_allowed_originsList the project's CORS-allowed originsAll plans
register_custom_domainAdd a custom hostname for the project's widget (Builder only)Builder
list_custom_domainsList the project's custom hostnamesAll plans
get_custom_domain_statusForce-refresh a custom domain's verification statusAll plans