---
title: MCP Server API Execution
slug: ai/mcp-server/setup-guide-api-execution
excerpt: >-
  Set up the hosted Pine Labs MCP Server in Claude Desktop and VS Code — no
  installation, just paste a config.
hidden: false
sidebar_order: 1
metadata:
  title: MCP Server API Execution Setup — Claude & VS Code | Pine Labs
  description: >-
    Step-by-step setup for hosted Pine Labs MCP Server. Configure Claude Desktop
    or VS Code to call payment APIs via MCP with credentials and JSON config.
  keywords: >-
    MCP API execution, Claude MCP setup, VS Code MCP, hosted MCP server,
    mcp-remote config, MCP credentials setup
  robots: index
sidebar_label: API Execution
---
## Integration Steps

Learn how to set up the Pine Labs Online MCP Server — for code execution.

[block:html]
{
  "html": "<style>\n\n  .code-lang {\n\t\tcolor: #fff;\n}\n\n/* ── Hero / Overview ────────────────────────────────────────────── */\n.hero {\n  background: #f9fafb;\n  border: 1px solid rgba(99,102,241,0.2);\n  border-radius: 0.5rem;\n  padding: 2rem;\n  scroll-margin-top: 2rem;\n}\n\n.hero-header {\n  display: flex;\n  align-items: flex-start;\n  gap: 1rem;\n  margin-bottom: 1rem;\n}\n\n.hero-subtitle {\n  font-size: 0.875rem;\n}\n\n.hero-description {\n  font-size: 0.875rem;\n  line-height: 1.8;\n  max-width: 680px;\n  margin-bottom: 1.25rem;\n}\n\n.hero-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n  padding: 0.375rem 0.75rem;\n  border-radius: 0.5rem;\n  font-size: 0.75rem;\n  background: #003434;\n  color: #fff;\n  border: 1px solid rgba(34,197,94,0.2);\n}\n\n/* ── Section ────────────────────────────────────────────────────── */\n.section {\n  display: flex;\n  flex-direction: column;\n  gap: 1.25rem;\n  scroll-margin-top: 2rem;\n}\n\n.section-header {\n  display: flex;\n  align-items: center;\n  gap: 0.75rem;\n}\n\n.section-title {\n  font-size: 1.25rem;\n  font-weight: 500;\n  color: #f1f5f9;\n  line-height: 1.5;\n}\n\n.section-body {\n  margin-left: 2.75rem;\n  padding-left: 1.5rem;\n  border-left: 1px solid #003434;\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n}\n\n/* ── Step Badge ─────────────────────────────────────────────────── */\n.step-badge {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 2rem;\n  height: 2rem;\n  border-radius: 50%;\n  flex-shrink: 0;\n  font-size: 0.875rem;\n  font-weight: 600;\n  color: #fff;\n  background: #003434;\n  box-shadow: 0 2px 12px rgba(99,102,241,0.4);\n}\n\n.icon-badge {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 2rem;\n  height: 2rem;\n  border-radius: 0.5rem;\n  flex-shrink: 0;\n  background: #d0f6e5;\n  color: #003434;\n}\n\n/* ── Section text ───────────────────────────────────────────────── */\n.section-body p {\n  font-size: 0.875rem;\n  line-height: 1.8;\n}\n\n/* ── Prerequisites Cards ────────────────────────────────────────── */\n.prereq-list {\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n}\n\n.prereq-card {\n  display: flex;\n  align-items: flex-start;\n  gap: 1rem;\n  padding: 1rem;\n  border-radius: 0.75rem;\n  background: rgba(255,255,255,0.03);\n  border: 1px solid rgba(99,102,241,0.2);\n}\n\n.prereq-icon-wrap {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 2rem;\n  height: 2rem;\n  border-radius: 0.5rem;\n  flex-shrink: 0;\n  margin-top: 0.125rem;\n  background: #d0f6e5;\n  color: #003434;\n}\n\n.prereq-name {\n  font-size: 0.875rem;\n  font-weight: 500;\n  margin-bottom: 0.125rem;\n}\n\n.prereq-detail {\n  font-size: 0.875rem;\n  line-height: 1.6;\n}\n\n/* ── Ordered Steps List ─────────────────────────────────────────── */\n.steps-list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 0.625rem;\n}\n\n.steps-list li {\n  display: flex;\n  align-items: center;\n  gap: 0.75rem;\n}\n\n.step-num {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 2rem;\n  height: 2rem;\n  border-radius: 50%;\n  flex-shrink: 0;\n  margin-top: 0.125rem;\n  font-size: 0.75rem;\n  font-weight: 600;\n  background: #003434;\n  color: #fff;\n}\n\n/* ── Links ──────────────────────────────────────────────────────── */\na.doc-link {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.25rem;\n  color: #008d63;\n  text-decoration: underline;\n  text-underline-offset: 2px;\n}\n\na.doc-link:hover {\n  color: #008d63;\n\ttext-decoration: none;\n}\n\n\n\n.env-badge {\n  display: inline-block;\n  padding: 0.125rem 0.5rem;\n  border-radius: 9999px;\n  font-size: 0.7rem;\n  font-weight: 500;\n}\n\n.env-badge.sandbox {\n  background: rgba(251,191,36,0.12);\n  color: #fbbf24;\n  border: 1px solid rgba(251,191,36,0.3);\n}\n\n.env-badge.live {\n  background: rgba(34,197,94,0.12);\n  color: #4ade80;\n  border: 1px solid rgba(34,197,94,0.3);\n}\n\n/* ── Client Tabs ────────────────────────────────────────────────── */\n.tab-bar {\n  display: flex;\n  gap: 0.25rem;\n  border-radius: 0.5rem;\n  width: fit-content;\n  background: #f1f5f9;\n  margin-bottom: 1.25rem;\n}\n\n/* ── Tab labels (act as buttons) ────────────────────────────────── */\n.tab-label {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  padding: 0.5rem 1rem;\n  border-radius: 0.5rem;\n  font-size: 0.875rem;\n  cursor: pointer;\n  color: #64748b;\n  user-select: none;\n  transition: color 0.15s;\n  white-space: nowrap;\n}\n\n\n.tab-btn {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  padding: 0.5rem 1rem;\n  border-radius: 0.5rem;\n  font-size: 0.875rem;\n  cursor: pointer;\n  border: none;\n  background: transparent;\n  color: #64748b;\n  font-family: inherit;\n  transition: all 0.15s ease;\n  white-space: nowrap;\n}\n\n.tab-btn:hover {\n  color: #003434;\n}\n\n.tab-btn.active {\n  background: linear-gradient(135deg, #6366f1, #8b5cf6);\n  color: #fff;\n  font-weight: 500;\n  box-shadow: 0 2px 8px rgba(99,102,241,0.35);\n}\n\n.tab-panel {\n  display: none;\n  flex-direction: column;\n  gap: 1rem;\n}\n\n.tab-panel.active {\n  display: flex;\n}\n\n/* Tabs purely css /*\n/* ── Active label style — triggered by :checked sibling ─────────── */\n#tab-claude:checked ~ .tab-bar .tab-label[for=\"tab-claude\"],\n#tab-vscode:checked ~ .tab-bar .tab-label[for=\"tab-vscode\"] {\n  background: #003434;\n  color: #fff;\n  font-weight: 500;\n  box-shadow: 0 2px 8px rgba(99, 102, 241, 0.35);\n}\n\n/* ── All panels hidden by default ───────────────────────────────── */\n.tab-panels {\n  display: contents; /* panels are siblings of the radio inputs */\n}\n\n.tab-panel {\n  display: none;\n  flex-direction: column;\n  gap: 1rem;\n}\n\n/* ── Show matching panel when radio is checked ──────────────────── */\n#tab-claude:checked ~ .tab-panels .panel-claude,\n#tab-vscode:checked ~ .tab-panels .panel-vscode {\n  display: flex;\n  }\n  \n/* Tabs Container */\n.tabs-container-pre {\n    width: 100%;\n    position: relative;\n}\n\n/* Hide Radio Inputs */\n.tab-input-pre {\n    position: absolute;\n    opacity: 0;\n    pointer-events: none;\n}\n\n/* Tabs List */\n.tabs-list-pre {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    width: 100%;\n    background-color: #f1f5f9;\n    border-radius: 0.5rem;\n    padding: 0.25rem;\n    margin-bottom: 1rem;\n}\n\n/* Tab Trigger Label */\n.tab-trigger-pre {\n    padding: 0.5rem 1rem;\n    color: #64748b;\n    font-size: 0.875rem;\n    font-weight: 500;\n    cursor: pointer;\n    border-radius: 0.375rem;\n    transition: all 0.2s ease;\n    text-align: center;\n    user-select: none;\n}\n\n.tab-trigger-pre:hover {\n    color: #0f172a;\n}\n\n\n/* ── Code Block ─────────────────────────────────────────────────── */\n.code-block {\n  border-radius: 0.75rem;\n  overflow: hidden;\n  border: 1px solid rgba(255,255,255,0.08);\n}\n\n.code-block-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0.625rem 1rem;\n  background: #1a1f2e;\n  border-bottom: 1px solid rgba(255,255,255,0.06);\n}\n\n.code-block-lang {\n  font-size: 0.75rem;\n  color: #fff;\n  margin-left: 0.5rem;\n}\n\n.code-block-header-left {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.code-block pre {\n  margin: 0;\n  padding: 1.25rem;\n  background: #0f1117;\n  color: #e2e8f0;\n  font-size: 0.8125rem;\n  line-height: 1.7;\n  overflow-x: auto;\n  font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n}\n\n/* ── Callout ────────────────────────────────────────────────────── */\n.callout {\n  display: flex;\n  gap: 0.75rem;\n  padding: 1rem;\n  border-radius: 0.75rem;\n  font-size: 0.875rem;\n  color: #cbd5e1;\n  line-height: 1.7;\n}\n\n.callout.info {\n  background: rgba(99,102,241,0.08);\n  border: 1px solid rgba(99,102,241,0.25);\n\tborder-radius: 0.5rem;\n}\n\n.callout.info .callout-icon { color: #818cf8; }\n.callout.info .callout-label { color: #818cf8; }\n\n.callout-icon {\n  flex-shrink: 0;\n  margin-top: 0.125rem;\n}\n\n.callout-label {\n  font-weight: 600;\n  margin-right: 0.375rem;\n}\n\n/* ── Test prompt block ──────────────────────────────────────────── */\n.test-prompt {\n  display: flex;\n  align-items: center;\n  gap: 0.75rem;\n  padding: 1rem;\n  border-radius: 0.75rem;\n  background: rgba(255,255,255,0.03);\n  border: 1px solid rgba(99,102,241,0.2);\n}\n\n.test-prompt-icon {\n  flex-shrink: 0;\n  color: #003434;\n}\n\n\n/* ── Footer spacer ──────────────────────────────────────────────── */\n.footer-spacer {\n  padding-bottom: 2.5rem;\n}\n\n/* ── SVG Icons ──────────────────────────────────────────────────── */\nsvg {\n  display: inline-block;\n  vertical-align: middle;\n  flex-shrink: 0;\n}\n\n/* ── Responsive ─────────────────────────────────────────────────── */\n@media (max-width: 640px) {\n  .main {\n    padding: 1.5rem 1rem;\n    gap: 2rem;\n  }\n\n  .hero {\n    padding: 1.25rem;\n  }\n\n  .tab-btn {\n    padding: 0.375rem 0.75rem;\n    font-size: 0.8125rem;\n  }\n\n  .env-table thead th:last-child,\n  .env-table tbody td:last-child {\n    display: none;\n  }\n}\n\n</style>\n"
}
[/block]

[block:html]
{
  "html": "  <!-- ── Hero / Overview ──────────────────────────────────────── -->\n  <div id=\"overview\" class=\"hero\">\n    <div class=\"hero-header\">\n      <div>\n        <p class=\"hero-subtitle\">Pine Labs Online &middot; Model Context Protocol</p>\n      </div>\n    </div>\n    <p class=\"hero-description\">\n      The Pine Labs Online MCP Server enables AI assistants to interact with Pine Labs Online\n      payment APIs through the Model Context Protocol (MCP). Once configured, you can create\n      payment links, look up orders, cancel transactions, and more &mdash; all using conversational\n      prompts in your editor or chat interface.\n    </p>\n    <div class=\"hero-badge\">\n      <!-- Zap icon -->\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\"\n           fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n           stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"/>\n      </svg>\n      Fully hosted by Pine Labs &mdash; nothing to deploy or maintain\n    </div>\n  </div>\n\n  <!-- Divider -->\n  <hr class=\"divider\" />\n\n  <!-- ── Prerequisites ────────────────────────────────────────── -->\n  <section id=\"prerequisites\" class=\"section\">\n    <div class=\"section-header\">\n      <div class=\"icon-badge\">\n        <!-- Shield icon -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\"\n             fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"\n             stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n        </svg>\n      </div>\n      <h2 class=\"section-title\">Prerequisites</h2>\n    </div>\n    <div class=\"section-body\">\n      <p class=\"muted\">Make sure the following are in place before you begin:</p>\n\n      <div class=\"prereq-list\">\n\n        <!-- Card 1 -->\n        <div class=\"prereq-card\">\n          <div class=\"prereq-icon-wrap\">\n            <!-- Monitor icon -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\"\n                 fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"\n                 stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"/>\n              <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"/>\n              <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"/>\n            </svg>\n          </div>\n          <div>\n            <p class=\"prereq-name\">MCP-compatible AI client</p>\n            <p class=\"prereq-detail\">Claude Desktop, or VS Code (with Copilot in agent mode)</p>\n          </div>\n        </div>\n\n        <!-- Card 2 -->\n        <div class=\"prereq-card\">\n          <div class=\"prereq-icon-wrap\">\n            <!-- Shield icon -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\"\n                 fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"\n                 stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/>\n            </svg>\n          </div>\n          <div>\n            <p class=\"prereq-name\">Pine Labs merchant account</p>\n            <p class=\"prereq-detail\">A Pine Labs Online Merchant account with API access enabled</p>\n          </div>\n        </div>\n\n        <!-- Card 3 -->\n        <div class=\"prereq-card\">\n          <div class=\"prereq-icon-wrap\">\n            <!-- Key icon -->\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\"\n                 fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"\n                 stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\"/>\n              <path d=\"m21 2-9.6 9.6\"/>\n              <path d=\"m15.5 7.5 3 3L22 7l-3-3\"/>\n            </svg>\n          </div>\n          <div>\n            <p class=\"prereq-name\">API credentials</p>\n            <p class=\"prereq-detail\">\n              Your <code class=\"inline\">X-Client-Id</code> and\n              <code class=\"inline\">X-Client-Secret</code> from the Pine Labs Dashboard\n            </p>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </section>\n\n  <!-- Divider -->\n  <hr class=\"divider\" />\n\n  <!-- ── Step 1 — API Credentials ─────────────────────────────── -->\n  <section id=\"step-1\" class=\"section\">\n    <div class=\"section-header\">\n      <div class=\"step-badge\">1</div>\n      <h2 class=\"section-title\">Get Your API Credentials</h2>\n    </div>\n    <div class=\"section-body\">\n      <p>\n        Pine Labs authenticates MCP requests using a\n        <strong>Client ID</strong> and\n        <strong>Client Secret</strong> pair. To obtain yours:\n      </p>\n\n      <ol class=\"steps-list\">\n        <li>\n          <span class=\"step-num\">1</span>\n          <span class=\"step-text\">\n            Log in to the\n            <a class=\"doc-link\" href=\"https://dashboardv2.pluralonline.com/signup\"\n               target=\"_blank\" rel=\"noopener noreferrer\">\n              Pine Labs Dashboard\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\"\n                   fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n                   stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>\n                <polyline points=\"15 3 21 3 21 9\"/>\n                <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/>\n              </svg>\n            </a>.\n          </span>\n        </li>\n        <li>\n          <span class=\"step-num\">2</span>\n          <span class=\"step-text\">Navigate to your merchant account settings.</span>\n        </li>\n        <li>\n          <span class=\"step-num\">3</span>\n          <span class=\"step-text\">\n            Locate your <code class=\"inline\">X-Client-Id</code> and\n            <code class=\"inline\">X-Client-Secret</code> values.\n          </span>\n        </li>\n        <li>\n          <span class=\"step-num\">4</span>\n          <span class=\"step-text\">Copy both &mdash; you&rsquo;ll need them in the next step.</span>\n        </li>\n      </ol>\n\n      <!-- Environment Table -->\n      <div class=\"env-table-wrap\">\n        <p>MCP Server Endpoints</p>\n        <table class=\"env-table\">\n          <thead>\n            <tr>\n              <th>Environment</th>\n              <th>MCP Server URL</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>\n                <div class=\"env-name-cell\">\n                  <span class=\"env-name\">UAT (Sandbox)</span>\n                  <span class=\"env-badge sandbox\">sandbox</span>\n                </div>\n              </td>\n              <td>\n                <span><code>https://pluralai.v2.pinepg.in/mcp</code></span>\n              </td>\n            </tr>\n            <tr>\n              <td>\n                <div class=\"env-name-cell\">\n                  <span class=\"env-name\">PROD (Production)</span>\n                  <span class=\"env-badge sandbox\">production</span>\n                </div>\n              </td>\n              <td>\n                <span><code>https://mcp.pinelabs.com/mcp</code></span>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n  </section>\n\n  <!-- Divider -->\n  <hr class=\"divider\" />\n\n  <!-- ── Step 2 — Connect AI Client ───────────────────────────── -->\n  <section id=\"step-2\" class=\"section\">\n    <div class=\"section-header\">\n      <div class=\"step-badge\">2</div>\n      <h2 class=\"section-title\">Connect Your AI Client</h2>\n    </div>\n    <div class=\"section-body\">\n      <p>Pick the application you use and apply the matching configuration.</p>\n\n      <!-- Tab Bar -->\n      <div class=\"tabs-root\">\n\n      <!-- 1 ── Hidden radio inputs ─────────────────────────────── -->\n\n\t\t\t<!-- Hidden Radio Inputs for Tab Control -->\n            <input type=\"radio\" name=\"client-tab\" id=\"tab-claude\" class=\"tab-input-pre\" checked>\n            <input type=\"radio\" name=\"client-tab\" id=\"tab-vscode\" class=\"tab-input-pre\">\n\n      <!-- 2 ── Tab bar (labels as tab buttons) ────────────────── -->\n      <div class=\"tab-bar\">\n\n        <label class=\"tab-label\" for=\"tab-claude\">\n          <!-- Terminal icon -->\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\"\n               fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n               stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"4 17 10 11 4 5\"/>\n            <line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"/>\n          </svg>\n          Claude Desktop\n        </label>\n\n        <label class=\"tab-label\" for=\"tab-vscode\">\n          <!-- Code2 icon -->\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\"\n               fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n               stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"m18 16 4-4-4-4\"/>\n            <path d=\"m6 8-4 4 4 4\"/>\n            <path d=\"m14.5 4-5 16\"/>\n          </svg>\n          Visual Studio Code\n        </label>\n\n      </div><!-- /.tab-bar -->\n\n      <!-- 3 ── Tab panels ──────────────────────────────────────── -->\n      <div class=\"tab-panels\">\n\n        <!-- Claude Desktop panel -->\n        <div class=\"tab-panel panel-claude\">\n\n          <ol class=\"steps-list\">\n            <li>\n              <span class=\"step-num\">1</span>\n              <span class=\"step-text\">\n                Open Claude Desktop and navigate to\n                <code class=\"kbd\">Settings &rarr; Developer &rarr; Edit Config</code>.\n              </span>\n            </li>\n            <li>\n              <span class=\"step-num\">2</span>\n              <span class=\"step-text\">Add the JSON configuration below, then save the file.</span>\n            </li>\n            <li>\n              <span class=\"step-num\">3</span>\n              <span class=\"step-text\">\n                Replace <code class=\"inline\">&lt;your-client-id&gt;</code> and\n                <code class=\"inline\">&lt;your-client-secret&gt;</code>\n                with the credentials from Step 1.\n              </span>\n            </li>\n          </ol>\n\n          <div class=\"code-block\">\n            <div class=\"code-block-header\">\n              <div class=\"code-block-header-left\">\n                <div class=\"dots\">\n                  <span class=\"dot dot-red\"></span>\n                  <span class=\"dot dot-yellow\"></span>\n                  <span class=\"dot dot-green\"></span>\n                </div>\n                <span class=\"code-lang\">json</span>\n              </div>\n              \n            </div>\n            <pre>{\n  \"mcpServers\": {\n    \"pinelabs\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https://pluralai.v2.pinepg.in/mcp\",\n        \"--header\",\n        \"X-Client-Id:&lt;your-client-id&gt;\",\n        \"--header\",\n        \"X-Client-Secret:&lt;your-client-secret&gt;\"\n      ]\n    }\n  }\n}</pre>\n          </div>\n\n        </div><!-- /.panel-claude -->\n\n        <!-- VS Code panel -->\n        <div class=\"tab-panel panel-vscode\">\n\n          <ol class=\"steps-list\">\n            <li>\n              <span class=\"step-num\">1</span>\n              <span class=\"step-text\">\n                Open Visual Studio Code.\n              </span>\n            </li>\n\t\t\t\t\t\t<li>\n \t\t\t\t\t\t <span class=\"step-num\">2</span>\n  \t\t\t\t\t\t<span class=\"step-text\">\n                Launch the Command Palette for macOS: <code class=\"kbd\">Cmd + Shift + P</code> and for Windows / Linux: <code class=\"kbd\">Ctrl + Shift + P</code>\n\t\t\t\t\t\t</li>\n            <li>\n              <span class=\"step-num\">3</span>\n              <span class=\"step-text\">\n                Search for <code class=\"kbd\">MCP: Open User Configuration</code>\n                and select.\n              </span>\n            </li>\n            <li>\n              <span class=\"step-num\">4</span>\n              <span class=\"step-text\">Merge the configuration block below into your settings file.</span>\n            </li>\n            <li>\n              <span class=\"step-num\">5</span>\n              <span class=\"step-text\">\n                VS Code will prompt you for both credential values when the MCP server starts.\n              </span>\n            </li>\n          </ol>\n\n          <div class=\"code-block\">\n            <div class=\"code-block-header\">\n              <div class=\"code-block-header-left\">\n                <div class=\"dots\">\n                  <span class=\"dot dot-red\"></span>\n                  <span class=\"dot dot-yellow\"></span>\n                  <span class=\"dot dot-green\"></span>\n                </div>\n                <span class=\"code-lang\">json</span>\n              </div>\n              \n            </div>\n            <pre>{\n    \"servers\": {\n      \"pinelabs\": {\n        \"type\": \"http\",\n        \"url\": \"https://pluralai.v2.pinepg.in/mcp\",\n        \"headers\": {\n          \"X-Client-Id\": \"${input:pinelabs_client_id}\",\n          \"X-Client-Secret\": \"${input:pinelabs_client_secret}\"\n        }\n      }\n    },\n    \"inputs\": []\n}</pre>\n          </div>\n\n          <!-- Tip callout -->\n          <div class=\"callout info\">\n            <span class=\"callout-icon\">\n              <!-- AlertCircle icon -->\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\"\n                   fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n                   stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n                <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/>\n                <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/>\n              </svg>\n            </span>\n            <span>\n              <span class=\"callout-label\">Tip:</span>\n              For more details on MCP server support in VS Code, visit the\n              <a class=\"doc-link\"\n                 href=\"https://code.visualstudio.com/docs/copilot/chat/mcp-servers\"\n                 target=\"_blank\" rel=\"noopener noreferrer\">\n                VS Code MCP documentation\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\"\n                     fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n                     stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                  <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>\n                  <polyline points=\"15 3 21 3 21 9\"/>\n                  <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/>\n                </svg>\n              </a>.\n            </span>\n          </div>\n\n        </div><!-- /.panel-vscode -->\n\n      </div><!-- /.tab-panels -->\n\n    </div>\n\n    </div>\n  </section>\n\n  <!-- Divider -->\n  <hr class=\"divider\" />\n\n  <!-- ── Step 3 — Verify ───────────────────────────────────────── -->\n  <section id=\"step-3\" class=\"section\">\n    <div class=\"section-header\">\n      <div class=\"step-badge\">3</div>\n      <h2 class=\"section-title\">Verify the Connection</h2>\n    </div>\n    <div class=\"section-body\">\n      <p>\n        After saving the configuration,\n        <strong>restart your AI client</strong>.\n        Then try this quick test prompt in your assistant:\n      </p>\n\n      <div class=\"test-prompt\">\n        <span class=\"test-prompt-icon\">\n          <!-- Terminal icon -->\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\"\n               fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n               stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"4 17 10 11 4 5\"/>\n            <line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"/>\n          </svg>\n        </span>\n        <code>&ldquo;List all available Pine Labs tools&rdquo;</code>\n      </div>\n\n      <blockquote>\n        <span class=\"callout-icon\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\"\n               fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n               stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n            <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/>\n            <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/>\n          </svg>\n        </span>\n        <span>\n          <span class=\"callout-label\">Note:</span>\n          If everything is configured correctly, the assistant will respond with the full set of\n          available Pine Labs tools. A successful response confirms your MCP connection is live.\n        </span>\n      </blockquote>\n    </div>\n  </section>\n\n<script>\n  /* ── Tab Switching ──────────────────────────────────────────── */\n  function switchTab(id, btn) {\n    // Deactivate all panels and buttons\n    document.querySelectorAll('.tab-panel').forEach(p => p.classList.remove('active'));\n    document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));\n    // Activate selected\n    document.getElementById('panel-' + id).classList.add('active');\n    btn.classList.add('active');\n  }\n\n  /* ── Copy to Clipboard ──────────────────────────────────────── */\n  function handleCopy(btn) {\n    const text = btn.getAttribute('data-copy');\n    navigator.clipboard.writeText(text).then(() => {\n      const iconCopy  = btn.querySelector('.icon-copy');\n      const iconCheck = btn.querySelector('.icon-check');\n      const label     = btn.querySelector('.copy-label');\n\n      btn.classList.add('copied');\n      if (iconCopy)  iconCopy.style.display  = 'none';\n      if (iconCheck) iconCheck.style.display = 'inline-block';\n      if (label)     label.textContent       = 'Copied!';\n\n      setTimeout(() => {\n        btn.classList.remove('copied');\n        if (iconCopy)  iconCopy.style.display  = 'inline-block';\n        if (iconCheck) iconCheck.style.display = 'none';\n        if (label)     label.textContent       = 'Copy';\n      }, 2000);\n    });\n  }\n</script>\n"
}
[/block]

## Resources

- Try the [Use Cases](/ai/mcp-server/use-cases) — real prompts and what happens behind the scenes.
- Browse the [Available Tools](/ai/mcp-server/available-tools) reference.
- Read the [FAQs](/ai/mcp-server/faqs) for limits and authentication details.

