@vantageconnections/mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,88 @@
1
+ # @vantageconnections/mcp
2
+
3
+ [Model Context Protocol](https://modelcontextprotocol.io) server for the
4
+ [VantageConnections](https://vantageconnections.dev) platform. Wire it into
5
+ Claude Code, Cursor, Claude Desktop, or any MCP-aware client, and Claude can
6
+ provision websites, change SEO tiers, edit content, run scans, and more —
7
+ without leaving the conversation.
8
+
9
+ ## Install
10
+
11
+ The server runs on demand via `npx`; no install needed.
12
+
13
+ Wire it up in your MCP client's config:
14
+
15
+ ### Claude Code (`.claude/settings.json` in any project, or `~/.claude/settings.json` globally)
16
+
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "vantage": {
21
+ "command": "npx",
22
+ "args": ["-y", "@vantageconnections/mcp"]
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ ### Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS)
29
+
30
+ Same shape — paste the snippet above under `mcpServers`.
31
+
32
+ ### Cursor (Settings → MCP)
33
+
34
+ Add a new server with command `npx` and args `["-y", "@vantageconnections/mcp"]`.
35
+
36
+ ## Auth
37
+
38
+ The MCP server reads the same credentials file the
39
+ [`@vantageconnections/cli`](https://www.npmjs.com/package/@vantageconnections/cli) writes. Log in
40
+ once:
41
+
42
+ ```bash
43
+ npm install -g @vantageconnections/cli
44
+ vantage login # paste a vc_pat_* token from the portal
45
+ ```
46
+
47
+ …or set the `VANTAGE_TOKEN` environment variable in your MCP client's
48
+ environment. The MCP server picks it up automatically.
49
+
50
+ Get a token at **portal → Settings → API keys**.
51
+
52
+ ## Tools exposed
53
+
54
+ Each tool's description is written for an LLM to choose between; the AI can
55
+ call them autonomously. Highlights:
56
+
57
+ - `vantage_whoami` — confirm the connection is alive
58
+ - `vantage_websites_list` / `_get` / `_create` / `_delete`
59
+ - `vantage_content_get` / `_save`
60
+ - `vantage_blueprint_get`
61
+ - `vantage_bookings_enable` / `_disable`
62
+ - `vantage_seo_set_tier` / `_disable` / `_scan` / `_geo_probe` / `_get`
63
+ - `vantage_domains_list` / `_add`
64
+
65
+ Once configured, ask Claude things like:
66
+
67
+ > *"Provision a new site for my plumbing client in Irvine, slug
68
+ > `joes-plumbing-irvine`, then set SEO to Growth."*
69
+
70
+ > *"For website wb_abc, what are the top search queries this week?"*
71
+
72
+ > *"Add the FAQ section to wb_abc with 5 questions a local barber's
73
+ > customers would ask."*
74
+
75
+ ## Verify the integration
76
+
77
+ After wiring up the MCP server, ask Claude:
78
+
79
+ > *"Run `vantage_whoami`."*
80
+
81
+ If that returns your role + email, the integration is live. If it fails,
82
+ run `vantage selftest` from the terminal to see exactly which step is
83
+ broken (missing token, wrong API host, etc.).
84
+
85
+ ## See also
86
+
87
+ - [`@vantageconnections/cli`](https://www.npmjs.com/package/@vantageconnections/cli) — terminal interface to the same platform
88
+ - [`@vantageconnections/sdk`](https://www.npmjs.com/package/@vantageconnections/sdk) — direct TypeScript client
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared credentials loader. Reads `~/.vantage/credentials.json` —
3
+ * the same file the CLI writes via `vantage login`. Duplicated here
4
+ * (not imported from @vantageconnections/cli) so the MCP server doesn't reach
5
+ * into the CLI package's private internals.
6
+ */
7
+ export interface StoredCredentials {
8
+ token: string;
9
+ baseUrl?: string;
10
+ }
11
+ export declare function loadCredentials(): Promise<StoredCredentials | null>;
@@ -0,0 +1,20 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ export async function loadCredentials() {
5
+ if (process.env.VANTAGE_TOKEN) {
6
+ return {
7
+ token: process.env.VANTAGE_TOKEN,
8
+ baseUrl: process.env.VANTAGE_API_URL,
9
+ };
10
+ }
11
+ try {
12
+ const filePath = path.join(homedir(), ".vantage", "credentials.json");
13
+ const raw = await fs.readFile(filePath, "utf8");
14
+ return JSON.parse(raw);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;YAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;SACrC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,316 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * VantageConnections MCP server.
4
+ *
5
+ * Exposes the platform's high-leverage actions (provision websites,
6
+ * change SEO tier, edit content, run scans, etc.) as MCP tools that
7
+ * Claude Code, Cursor, Claude Desktop, and other MCP clients can
8
+ * call autonomously.
9
+ *
10
+ * Auth: reuses the same `~/.vantage/credentials.json` file the CLI
11
+ * writes. Log in once with `vantage login`, both work.
12
+ *
13
+ * Wire-up in Claude Code (`.claude/settings.json`):
14
+ *
15
+ * {
16
+ * "mcpServers": {
17
+ * "vantage": { "command": "npx", "args": ["-y", "@vantageconnections/mcp"] }
18
+ * }
19
+ * }
20
+ *
21
+ * The server speaks MCP over stdio — no port, no daemon, no setup.
22
+ * The MCP client manages its lifetime.
23
+ */
24
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
25
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
26
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
27
+ import { loadCredentials } from "./credentials.js";
28
+ import { VantageClient, VantageApiError } from "@vantageconnections/sdk";
29
+ const server = new Server({ name: "vantage", version: "0.1.0" }, { capabilities: { tools: {} } });
30
+ /* ─── Tool catalog ─────────────────────────────────────────────── */
31
+ /**
32
+ * Each tool description is written so an LLM can pick the right one
33
+ * from the name + description alone. Schemas are deliberately strict
34
+ * — the AI will hand us bad inputs occasionally, and a schema
35
+ * rejection is friendlier than a 400 from the API.
36
+ */
37
+ const tools = [
38
+ {
39
+ name: "vantage_whoami",
40
+ description: "Confirm authentication. Returns the email + role + websiteId scope of the currently active API key. Use this first if there's any doubt about credentials.",
41
+ inputSchema: { type: "object", properties: {} },
42
+ },
43
+ {
44
+ name: "vantage_websites_list",
45
+ description: "List every website on the platform you have access to. Returns id, name, slug, status, owner, and creation date for each.",
46
+ inputSchema: { type: "object", properties: {} },
47
+ },
48
+ {
49
+ name: "vantage_websites_get",
50
+ description: "Get a single website by id with full record.",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: { websiteId: { type: "string" } },
54
+ required: ["websiteId"],
55
+ },
56
+ },
57
+ {
58
+ name: "vantage_websites_create",
59
+ description: "Provision a new website. Synchronously creates the record and enqueues the GitHub repo + Vercel project + CMS provisioning. Returns the new website id; jobs run in the background. Optional clientId attaches it to a specific client at creation; omit to leave unassigned.",
60
+ inputSchema: {
61
+ type: "object",
62
+ properties: {
63
+ name: { type: "string", description: "Display name (e.g. 'Joe's Plumbing')." },
64
+ slug: {
65
+ type: "string",
66
+ description: "Lowercase URL-safe slug (e.g. 'joes-plumbing'). Becomes the GitHub repo + Vercel project name.",
67
+ },
68
+ clientId: { type: "string" },
69
+ },
70
+ required: ["name", "slug"],
71
+ },
72
+ },
73
+ {
74
+ name: "vantage_websites_delete",
75
+ description: "Tear down a website: cancel Stripe subscription, delete the GitHub repo + Vercel project, revoke per-site OpenRouter keys, drop all platform rows. Destructive and irreversible — only call after explicit confirmation.",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: { websiteId: { type: "string" } },
79
+ required: ["websiteId"],
80
+ },
81
+ },
82
+ {
83
+ name: "vantage_content_get",
84
+ description: "Read the website's CMS content document (the JSON that drives the live site's hero, services, FAQ, etc.).",
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: { websiteId: { type: "string" } },
88
+ required: ["websiteId"],
89
+ },
90
+ },
91
+ {
92
+ name: "vantage_content_save",
93
+ description: "Replace the website's CMS content document. Pass the new content object as `content`; optional `sha` enables optimistic-concurrency (pass the sha from the most recent get).",
94
+ inputSchema: {
95
+ type: "object",
96
+ properties: {
97
+ websiteId: { type: "string" },
98
+ content: { type: "object" },
99
+ sha: { type: "string" },
100
+ },
101
+ required: ["websiteId", "content"],
102
+ },
103
+ },
104
+ {
105
+ name: "vantage_blueprint_get",
106
+ description: "Return the website's blueprint graph — the nodes (github/vercel/openrouter/etc.) + edges between them + their canvas positions.",
107
+ inputSchema: {
108
+ type: "object",
109
+ properties: { websiteId: { type: "string" } },
110
+ required: ["websiteId"],
111
+ },
112
+ },
113
+ {
114
+ name: "vantage_bookings_enable",
115
+ description: "Turn on Cal.com appointment bookings for a website. Pushes NEXT_PUBLIC_CAL_USERNAME to Vercel and redeploys.",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {
119
+ websiteId: { type: "string" },
120
+ calUsername: { type: "string" },
121
+ brandColor: { type: "string", description: "Optional #RRGGBB." },
122
+ },
123
+ required: ["websiteId", "calUsername"],
124
+ },
125
+ },
126
+ {
127
+ name: "vantage_bookings_disable",
128
+ description: "Turn off Cal.com bookings. Removes env vars, deletes the service row, redeploys.",
129
+ inputSchema: {
130
+ type: "object",
131
+ properties: { websiteId: { type: "string" } },
132
+ required: ["websiteId"],
133
+ },
134
+ },
135
+ {
136
+ name: "vantage_seo_set_tier",
137
+ description: "Set or change the SEO/GEO automation tier. Pushes NEXT_PUBLIC_SEO_TIER to Vercel and redeploys.",
138
+ inputSchema: {
139
+ type: "object",
140
+ properties: {
141
+ websiteId: { type: "string" },
142
+ tier: {
143
+ type: "string",
144
+ enum: ["essentials", "growth", "premium", "premium_plus"],
145
+ },
146
+ },
147
+ required: ["websiteId", "tier"],
148
+ },
149
+ },
150
+ {
151
+ name: "vantage_seo_disable",
152
+ description: "Turn off SEO automation for a website.",
153
+ inputSchema: {
154
+ type: "object",
155
+ properties: { websiteId: { type: "string" } },
156
+ required: ["websiteId"],
157
+ },
158
+ },
159
+ {
160
+ name: "vantage_seo_scan",
161
+ description: "Run an immediate SEO health scan against the live site. Returns score 0-100 + the issue list (missing title, no JSON-LD, etc.).",
162
+ inputSchema: {
163
+ type: "object",
164
+ properties: { websiteId: { type: "string" } },
165
+ required: ["websiteId"],
166
+ },
167
+ },
168
+ {
169
+ name: "vantage_seo_geo_probe",
170
+ description: "Send a prompt to an AI search engine (Perplexity Sonar by default) and report whether the website's primary domain shows up in the citations.",
171
+ inputSchema: {
172
+ type: "object",
173
+ properties: {
174
+ websiteId: { type: "string" },
175
+ prompt: { type: "string" },
176
+ model: { type: "string" },
177
+ },
178
+ required: ["websiteId", "prompt"],
179
+ },
180
+ },
181
+ {
182
+ name: "vantage_seo_get",
183
+ description: "Read everything we know about the website's SEO state — current tier, capabilities, last scan, GEO probes, citations checklist, competitor URLs, Search Console metrics.",
184
+ inputSchema: {
185
+ type: "object",
186
+ properties: { websiteId: { type: "string" } },
187
+ required: ["websiteId"],
188
+ },
189
+ },
190
+ {
191
+ name: "vantage_domains_list",
192
+ description: "List domains attached to a website (site + email).",
193
+ inputSchema: {
194
+ type: "object",
195
+ properties: { websiteId: { type: "string" } },
196
+ required: ["websiteId"],
197
+ },
198
+ },
199
+ {
200
+ name: "vantage_domains_add",
201
+ description: "Attach a new domain to a website. Returns the DNS records the client needs to set at their registrar.",
202
+ inputSchema: {
203
+ type: "object",
204
+ properties: {
205
+ websiteId: { type: "string" },
206
+ domain: { type: "string" },
207
+ kind: { type: "string", enum: ["site", "email"] },
208
+ },
209
+ required: ["websiteId", "domain", "kind"],
210
+ },
211
+ },
212
+ ];
213
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
214
+ /* ─── Tool dispatch ────────────────────────────────────────────── */
215
+ async function buildClient() {
216
+ const creds = await loadCredentials();
217
+ if (!creds) {
218
+ throw new Error("Not logged in. Run `vantage login` in your terminal, or set the VANTAGE_TOKEN env var, then restart your MCP client.");
219
+ }
220
+ return new VantageClient({ token: creds.token, baseUrl: creds.baseUrl });
221
+ }
222
+ function asText(value) {
223
+ return typeof value === "string"
224
+ ? value
225
+ : JSON.stringify(value, null, 2);
226
+ }
227
+ server.setRequestHandler(CallToolRequestSchema, async (req) => {
228
+ const name = req.params.name;
229
+ const args = (req.params.arguments ?? {});
230
+ try {
231
+ const vc = await buildClient();
232
+ const result = await dispatch(vc, name, args);
233
+ return {
234
+ content: [{ type: "text", text: asText(result) }],
235
+ };
236
+ }
237
+ catch (err) {
238
+ const message = err instanceof VantageApiError
239
+ ? `HTTP ${err.status}: ${err.message}`
240
+ : err instanceof Error
241
+ ? err.message
242
+ : String(err);
243
+ return {
244
+ isError: true,
245
+ content: [{ type: "text", text: message }],
246
+ };
247
+ }
248
+ });
249
+ async function dispatch(vc, name, args) {
250
+ function str(key) {
251
+ const v = args[key];
252
+ if (typeof v !== "string" || !v) {
253
+ throw new Error(`Missing required arg: ${key}`);
254
+ }
255
+ return v;
256
+ }
257
+ function strOpt(key) {
258
+ const v = args[key];
259
+ return typeof v === "string" ? v : undefined;
260
+ }
261
+ switch (name) {
262
+ case "vantage_whoami":
263
+ return vc.whoami();
264
+ case "vantage_websites_list":
265
+ return vc.websites.list();
266
+ case "vantage_websites_get":
267
+ return vc.websites.get(str("websiteId"));
268
+ case "vantage_websites_create":
269
+ return vc.websites.create({
270
+ name: str("name"),
271
+ slug: str("slug"),
272
+ clientId: strOpt("clientId"),
273
+ features: { openrouter: false, resend: false, bookings: false, seo: false },
274
+ });
275
+ case "vantage_websites_delete":
276
+ return vc.websites.delete(str("websiteId"));
277
+ case "vantage_content_get":
278
+ return vc.content.get(str("websiteId"));
279
+ case "vantage_content_save":
280
+ return vc.content.save(str("websiteId"), args.content, strOpt("sha") ?? null);
281
+ case "vantage_blueprint_get":
282
+ return vc.blueprint.get(str("websiteId"));
283
+ case "vantage_bookings_enable":
284
+ return vc.bookings.enable(str("websiteId"), {
285
+ calUsername: str("calUsername"),
286
+ brandColor: strOpt("brandColor"),
287
+ });
288
+ case "vantage_bookings_disable":
289
+ return vc.bookings.disable(str("websiteId"));
290
+ case "vantage_seo_set_tier":
291
+ return vc.seo.setTier(str("websiteId"), str("tier"));
292
+ case "vantage_seo_disable":
293
+ return vc.seo.disable(str("websiteId"));
294
+ case "vantage_seo_scan":
295
+ return vc.seo.scan(str("websiteId"));
296
+ case "vantage_seo_geo_probe":
297
+ return vc.seo.geoProbe(str("websiteId"), {
298
+ prompt: str("prompt"),
299
+ model: strOpt("model"),
300
+ });
301
+ case "vantage_seo_get":
302
+ return vc.seo.get(str("websiteId"));
303
+ case "vantage_domains_list":
304
+ return vc.domains.list(str("websiteId"));
305
+ case "vantage_domains_add":
306
+ return vc.domains.add(str("websiteId"), {
307
+ domain: str("domain"),
308
+ kind: str("kind"),
309
+ });
310
+ default:
311
+ throw new Error(`Unknown tool: ${name}`);
312
+ }
313
+ }
314
+ const transport = new StdioServerTransport();
315
+ await server.connect(transport);
316
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@vantageconnections/mcp",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol server for VantageConnections — exposes platform actions as tools for Claude Code, Cursor, and other AI coding assistants.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "bin": {
9
+ "vantage-mcp": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc -p tsconfig.json",
13
+ "typecheck": "tsc -p tsconfig.json --noEmit",
14
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
15
+ },
16
+ "dependencies": {
17
+ "@modelcontextprotocol/sdk": "^1.0.0",
18
+ "@vantageconnections/sdk": "0.1.0",
19
+ "@vantageconnections/shared": "0.1.0"
20
+ },
21
+ "devDependencies": {
22
+ "@types/node": "^20.14.0",
23
+ "typescript": "^5.5.0"
24
+ },
25
+ "files": ["dist", "README.md"]
26
+ }