Skip to content

feat(vscode): revamp 15 MCP extensions around hosted HTTP endpoint#356

Merged
Germey merged 1 commit into
mainfrom
feat/vscode-ext-revamp
May 31, 2026
Merged

feat(vscode): revamp 15 MCP extensions around hosted HTTP endpoint#356
Germey merged 1 commit into
mainfrom
feat/vscode-ext-revamp

Conversation

@acedatacloud-dev
Copy link
Copy Markdown
Member

Summary

Every <service>/vscode/ extension in the MCPs monorepo was using the same broken clone-template. Three concrete user-visible issues:

  1. READMEs lied about prompting for an API token. The package.json had env: { ACEDATACLOUD_API_TOKEN: "" } and no inputs block, so VS Code never asked. First call → silent 401 → 1-star review.
  2. The hosted streamable-HTTP endpoint was never mentioned, even though it's the recommended zero-install path. Suno's main README documents https://suno.mcp.acedata.cloud/mcp + Claude.ai OAuth, but suno/vscode/README.md only knew about uvx mcp-suno.
  3. "Zero-install setup" was false — uvx itself requires uv to be installed.

Plus duplicate-clone READMEs across 15 services with zero per-service tool list, examples, or pricing info.

What's in this PR

A small codegen tool — scripts/build_vscode_extensions.py + scripts/vscode_extensions.yaml — and the 45 files (15 × 3) it regenerated:

  • <service>/vscode/package.json
    • Contributed MCP server is now type: "http" pointing at https://<alias>.mcp.acedata.cloud/mcp
    • headers.Authorization: "Bearer ${input:acedatacloud_api_token}" references a contributes.inputs promptString (password = true), so VS Code shows a secure prompt on first use and stores the token in the OS secret store
    • Version bumped 0.1.00.2.0, adds galleryBanner, per-service keywords/categories
  • <service>/vscode/README.md
    • Hosted-endpoint-first quick start (3 steps)
    • Per-service example prompts (hand-curated, 2–3 each)
    • Tool reference table imported automatically from each service's main README — no more drift between docs and marketplace
    • Supported models list (where applicable), pricing/free-credit note
    • Documents the two alternatives clearly: local stdio via uvx <pypi-pkg>, and OAuth 2.1 via DCR
  • <service>/vscode/.vscodeignore — standardised

15 services covered: suno, midjourney, flux, seedream, nanobanana, luma, sora, veo, kling, hailuo, wan, seedance, producer, serp, shorturl.

Why a codegen script instead of 15 hand edits

So the next person editing the marketplace listing for one MCP doesn't accidentally let it drift from the other 14, and so adding a new MCP is a one-line YAML entry. Tool counts and descriptions are parsed straight out of each main README.md's "## Tool Reference" table, so updates to upstream READMEs propagate.

Sanity checks

  • python3 -c "import json; json.load(open('<svc>/vscode/package.json'))" — all 15 valid

  • Tool counts per service:

    Service Tools Service Tools
    suno 27 luma 8
    midjourney 15 sora 10
    producer 18 kling 8
    serp 11 hailuo 6
    flux 6 wan 7
    seedream 6 seedance 7
    nanobanana 4 veo 8
    shorturl 4

Out of scope (follow-ups)

  • Duplicate icon.png across flux/kling/producer/wan (md5 f3551b1e…) and hailuo/luma (md5 2d8f5e5e…) — needs design assets.
  • Missing extensions for aichat and openai — these are the highest-traffic services and have no vscode/ folder. Worth a separate PR.

Test

Locally:

python3 scripts/build_vscode_extensions.py --dry-run     # diff-only mode
python3 scripts/build_vscode_extensions.py --only suno   # regenerate one

Marketplace install: install the published acedatacloud.mcp-suno 0.2.0, open Copilot Chat, ask "generate a lofi track about late-night coding, use suno" → VS Code prompts for the API token → first call to the hosted endpoint succeeds.

Every '<service>/vscode/' extension was a clone-template that:

- Lied about prompting for an API token (it didn't — env was empty,
  giving silent 401s on first call)
- Never mentioned the hosted streamable-HTTP endpoint at
  https://<alias>.mcp.acedata.cloud/mcp, even though that's the
  recommended zero-install path
- Hid a hard 'uvx' dependency behind 'Zero-install setup'
- Had no per-service tool list / examples / pricing info

This rewrite, driven by 'scripts/build_vscode_extensions.py' +
'scripts/vscode_extensions.yaml':

- Switches the contributed MCP server to type: http pointing at the
  hosted endpoint, with Authorization sourced from a
  'contributes.inputs' promptString (password) — so VS Code prompts
  for the token instead of silently 401-ing
- Imports the tool reference table from each service's main README
- Adds per-service example prompts, model list, pricing blurb, and
  links to PyPI / GitHub / platform sign-up
- Documents the local stdio (uvx <pkg>) and OAuth-via-DCR
  alternatives as copy-paste mcp.json snippets
- Bumps version 0.1.0 → 0.2.0, adds galleryBanner, normalises
  .vscodeignore

15 services covered: suno, midjourney, flux, seedream, nanobanana,
luma, sora, veo, kling, hailuo, wan, seedance, producer, serp,
shorturl. Out of scope for this PR: shared/duplicate icon.png
(needs design assets) and adding extensions for aichat/openai.
@Germey Germey merged commit fcdeb0b into main May 31, 2026
76 checks passed
acedatacloud-dev added a commit that referenced this pull request May 31, 2026
face and fish were the only two MCP services whose VS Code extensions
were still hand-written and shipping with the old `uvx <pkg>` stdio
launch config — they never got the hosted-HTTP-first UX from #356.

Add them to `scripts/vscode_extensions.yaml`:

  - face: pinned to existing IDs (`mcp-face-transform` on PyPI/Marketplace)
    via `pypi_override` and `ext_name`. Currently Alpha.
  - fish: defaults work (`mcp-fish` already matches `mcp-<alias>`).

Regenerate `face/vscode/{package.json,README.md,.vscodeignore}` and
`fish/vscode/{package.json,README.md,.vscodeignore}` from the codegen.
Each now points to its hosted streamable-HTTP endpoint at
`https://<alias>.mcp.acedata.cloud/mcp` with a Bearer token prompt
input — no local Python install required.

Also normalize the main READMEs' tool tables to `## Tool Reference`
with `| Tool | Description |` columns so the codegen can parse them
(was `## Available Tools` with `Tool|Endpoint|Purpose` on face,
`## Available Tools` heading on fish).

Marketplace IDs are unchanged so existing installs / ratings carry
over: `acedatacloud.mcp-face-transform` and `acedatacloud.mcp-fish".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants