@launchpath-ai/mcp-server 1.0.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.
Files changed (53) hide show
  1. package/README.md +94 -0
  2. package/build/client.d.ts +38 -0
  3. package/build/client.js +210 -0
  4. package/build/client.js.map +1 -0
  5. package/build/index.d.ts +12 -0
  6. package/build/index.js +374 -0
  7. package/build/index.js.map +1 -0
  8. package/build/tools/agents.d.ts +6 -0
  9. package/build/tools/agents.js +249 -0
  10. package/build/tools/agents.js.map +1 -0
  11. package/build/tools/analytics.d.ts +7 -0
  12. package/build/tools/analytics.js +282 -0
  13. package/build/tools/analytics.js.map +1 -0
  14. package/build/tools/campaigns.d.ts +6 -0
  15. package/build/tools/campaigns.js +158 -0
  16. package/build/tools/campaigns.js.map +1 -0
  17. package/build/tools/channels.d.ts +7 -0
  18. package/build/tools/channels.js +319 -0
  19. package/build/tools/channels.js.map +1 -0
  20. package/build/tools/clients.d.ts +6 -0
  21. package/build/tools/clients.js +138 -0
  22. package/build/tools/clients.js.map +1 -0
  23. package/build/tools/composio.d.ts +6 -0
  24. package/build/tools/composio.js +188 -0
  25. package/build/tools/composio.js.map +1 -0
  26. package/build/tools/core.d.ts +6 -0
  27. package/build/tools/core.js +130 -0
  28. package/build/tools/core.js.map +1 -0
  29. package/build/tools/integrations.d.ts +6 -0
  30. package/build/tools/integrations.js +188 -0
  31. package/build/tools/integrations.js.map +1 -0
  32. package/build/tools/knowledge.d.ts +7 -0
  33. package/build/tools/knowledge.js +274 -0
  34. package/build/tools/knowledge.js.map +1 -0
  35. package/build/tools/portal.d.ts +6 -0
  36. package/build/tools/portal.js +86 -0
  37. package/build/tools/portal.js.map +1 -0
  38. package/build/tools/tools-config.d.ts +6 -0
  39. package/build/tools/tools-config.js +213 -0
  40. package/build/tools/tools-config.js.map +1 -0
  41. package/build/tools/whatsapp.d.ts +7 -0
  42. package/build/tools/whatsapp.js +399 -0
  43. package/build/tools/whatsapp.js.map +1 -0
  44. package/build/types.d.ts +87 -0
  45. package/build/types.js +3 -0
  46. package/build/types.js.map +1 -0
  47. package/package.json +44 -0
  48. package/plugin.json +28 -0
  49. package/skills/agent-report/SKILL.md +44 -0
  50. package/skills/deploy-agent/SKILL.md +74 -0
  51. package/skills/launchpath-guide/SKILL.md +60 -0
  52. package/skills/setup-client/SKILL.md +44 -0
  53. package/skills/whatsapp-campaign/SKILL.md +72 -0
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # @launchpath-ai/mcp-server
2
+
3
+ The official [Model Context Protocol](https://modelcontextprotocol.io) server for [LaunchPath](https://launchpath.ai). Manage AI agents, knowledge bases, deployments, clients, and campaigns from Claude Code, Cursor, or any MCP-compatible tool.
4
+
5
+ ## Quick Start
6
+
7
+ ### Claude Code
8
+
9
+ ```bash
10
+ claude mcp add launchpath -- npx -y @launchpath-ai/mcp-server
11
+ ```
12
+
13
+ Then set your API key:
14
+
15
+ ```bash
16
+ export LAUNCHPATH_API_KEY=lp_key_your_key_here
17
+ ```
18
+
19
+ ### Cursor
20
+
21
+ Add to `.cursor/mcp.json`:
22
+
23
+ ```json
24
+ {
25
+ "mcpServers": {
26
+ "launchpath": {
27
+ "command": "npx",
28
+ "args": ["-y", "@launchpath-ai/mcp-server"],
29
+ "env": {
30
+ "LAUNCHPATH_API_KEY": "lp_key_your_key_here"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### Other MCP Clients
38
+
39
+ Use the same JSON config above for Windsurf, Cline, or any client that supports stdio MCP servers.
40
+
41
+ ## Get an API Key
42
+
43
+ 1. Go to [app.launchpath.ai/dashboard/mcp](https://app.launchpath.ai/dashboard/mcp)
44
+ 2. Click **Create API Key**
45
+ 3. Copy the key (it's only shown once)
46
+
47
+ MCP access requires the **Growth** plan or higher.
48
+
49
+ ## What You Can Do
50
+
51
+ The server provides **58 tools** across **11 toolsets**, loaded on demand:
52
+
53
+ | Toolset | Tools | Description |
54
+ |---------|-------|-------------|
55
+ | **Core** | 3 | List agents, get agent details, test chat |
56
+ | **Agent Management** | 5 | Create, update, clone, delete agents |
57
+ | **Knowledge** | 8 | Scrape websites, manage FAQs, generate Q&A |
58
+ | **Deployment** | 6 | Widget, API, and WhatsApp channels |
59
+ | **Clients** | 4 | Manage client accounts |
60
+ | **Campaigns** | 4 | Link agents to clients via campaigns |
61
+ | **WhatsApp** | 8 | Templates, broadcasts, drip sequences |
62
+ | **Analytics** | 8 | Metrics, conversations, channel health |
63
+ | **Tools Config** | 5 | Manage agent integrations and webhooks |
64
+ | **Portal** | 2 | Client portal invites and branding |
65
+ | **Integrations** | 3 | Browse and connect 900+ apps |
66
+
67
+ Only core, agent management, and knowledge tools are loaded by default. Use `enable_toolset("deployment")` to load others on demand, and `disable_toolset("deployment")` to unload them.
68
+
69
+ ## Skills
70
+
71
+ Five pre-built workflows for common tasks:
72
+
73
+ - **deploy-agent** — Create, train, and deploy an agent end-to-end
74
+ - **setup-client** — Set up a client account with agents and portal access
75
+ - **agent-report** — Generate a status report across all agents
76
+ - **whatsapp-campaign** — Build and launch a WhatsApp campaign
77
+ - **launchpath-guide** — Reference guide for platform capabilities
78
+
79
+ ## Configuration
80
+
81
+ | Variable | Required | Default | Description |
82
+ |----------|----------|---------|-------------|
83
+ | `LAUNCHPATH_API_KEY` | Yes | — | Your API key from the dashboard |
84
+ | `LAUNCHPATH_BASE_URL` | No | `https://app.launchpath.ai` | API base URL |
85
+
86
+ ## Requirements
87
+
88
+ - Node.js 18 or higher
89
+ - An MCP client that supports stdio transport
90
+ - LaunchPath account on Growth plan or higher
91
+
92
+ ## License
93
+
94
+ MIT
@@ -0,0 +1,38 @@
1
+ /**
2
+ * HTTP client wrapper for LaunchPath API.
3
+ * Handles auth, error formatting, and SSE stream consumption.
4
+ */
5
+ import type { LaunchPathConfig, ApiResponse } from "./types.js";
6
+ export declare class LaunchPathClient {
7
+ private apiKey;
8
+ private baseUrl;
9
+ /** The dashboard base URL (e.g., https://app.launchpath.ai) */
10
+ get dashboardUrl(): string;
11
+ constructor(config: LaunchPathConfig);
12
+ private headers;
13
+ /** Standard JSON request */
14
+ request<T = unknown>(method: string, path: string, body?: unknown): Promise<ApiResponse<T>>;
15
+ /** Single retry on transient server errors (500, 502, 503) or network failures */
16
+ private requestWithRetry;
17
+ /** GET shorthand */
18
+ get<T = unknown>(path: string): Promise<ApiResponse<T>>;
19
+ /** POST shorthand */
20
+ post<T = unknown>(path: string, body?: unknown): Promise<ApiResponse<T>>;
21
+ /** PATCH shorthand */
22
+ patch<T = unknown>(path: string, body?: unknown): Promise<ApiResponse<T>>;
23
+ /** DELETE shorthand */
24
+ del<T = unknown>(path: string): Promise<ApiResponse<T>>;
25
+ /**
26
+ * Consume an SSE stream endpoint and return the final assembled result.
27
+ * Used for `/agents/generate` and `/agents/[id]/chat` which stream via SSE.
28
+ *
29
+ * Reads all SSE events, extracts text chunks from `data:` lines,
30
+ * and returns the complete response once the stream closes.
31
+ */
32
+ consumeSSE(method: string, path: string, body?: unknown): Promise<ApiResponse<{
33
+ text: string;
34
+ raw_events: string[];
35
+ }>>;
36
+ }
37
+ /** Format API errors into helpful MCP error text */
38
+ export declare function formatError(error: string, status: number, hint?: string): string;
@@ -0,0 +1,210 @@
1
+ /**
2
+ * HTTP client wrapper for LaunchPath API.
3
+ * Handles auth, error formatting, and SSE stream consumption.
4
+ */
5
+ export class LaunchPathClient {
6
+ apiKey;
7
+ baseUrl;
8
+ /** The dashboard base URL (e.g., https://app.launchpath.ai) */
9
+ get dashboardUrl() {
10
+ return this.baseUrl;
11
+ }
12
+ constructor(config) {
13
+ this.apiKey = config.apiKey;
14
+ this.baseUrl = config.baseUrl.replace(/\/$/, "");
15
+ }
16
+ headers() {
17
+ return {
18
+ Authorization: `Bearer ${this.apiKey}`,
19
+ "Content-Type": "application/json",
20
+ "X-MCP-Client": "launchpath-mcp/1.0.0",
21
+ };
22
+ }
23
+ /** Standard JSON request */
24
+ async request(method, path, body) {
25
+ const url = `${this.baseUrl}${path}`;
26
+ try {
27
+ const res = await fetch(url, {
28
+ method,
29
+ headers: this.headers(),
30
+ body: body ? JSON.stringify(body) : undefined,
31
+ });
32
+ const contentType = res.headers.get("content-type") ?? "";
33
+ if (!contentType.includes("application/json")) {
34
+ const text = await res.text();
35
+ if (!res.ok) {
36
+ return {
37
+ error: `HTTP ${res.status}: ${text || res.statusText}`,
38
+ status: res.status,
39
+ };
40
+ }
41
+ return { data: text, status: res.status };
42
+ }
43
+ const json = await res.json();
44
+ if (!res.ok) {
45
+ const errorMsg = json.error || json.message || `HTTP ${res.status}`;
46
+ return { error: errorMsg, status: res.status };
47
+ }
48
+ return { data: json, status: res.status };
49
+ }
50
+ catch (err) {
51
+ const message = err instanceof Error ? err.message : "Unknown network error";
52
+ return { error: `Network error: ${message}`, status: 0 };
53
+ }
54
+ }
55
+ /** Single retry on transient server errors (500, 502, 503) or network failures */
56
+ async requestWithRetry(method, path, body) {
57
+ const result = await this.request(method, path, body);
58
+ if (result.status >= 500 || result.status === 0) {
59
+ await new Promise((r) => setTimeout(r, 1000));
60
+ return this.request(method, path, body);
61
+ }
62
+ return result;
63
+ }
64
+ /** GET shorthand */
65
+ async get(path) {
66
+ return this.requestWithRetry("GET", path);
67
+ }
68
+ /** POST shorthand */
69
+ async post(path, body) {
70
+ return this.requestWithRetry("POST", path, body);
71
+ }
72
+ /** PATCH shorthand */
73
+ async patch(path, body) {
74
+ return this.requestWithRetry("PATCH", path, body);
75
+ }
76
+ /** DELETE shorthand */
77
+ async del(path) {
78
+ return this.requestWithRetry("DELETE", path);
79
+ }
80
+ /**
81
+ * Consume an SSE stream endpoint and return the final assembled result.
82
+ * Used for `/agents/generate` and `/agents/[id]/chat` which stream via SSE.
83
+ *
84
+ * Reads all SSE events, extracts text chunks from `data:` lines,
85
+ * and returns the complete response once the stream closes.
86
+ */
87
+ async consumeSSE(method, path, body) {
88
+ const url = `${this.baseUrl}${path}`;
89
+ const controller = new AbortController();
90
+ const timeout = setTimeout(() => controller.abort(), 60_000);
91
+ try {
92
+ const res = await fetch(url, {
93
+ method,
94
+ headers: {
95
+ ...this.headers(),
96
+ Accept: "text/event-stream",
97
+ },
98
+ body: body ? JSON.stringify(body) : undefined,
99
+ signal: controller.signal,
100
+ });
101
+ if (!res.ok) {
102
+ const contentType = res.headers.get("content-type") ?? "";
103
+ if (contentType.includes("application/json")) {
104
+ const json = await res.json();
105
+ return {
106
+ error: json.error || `HTTP ${res.status}`,
107
+ status: res.status,
108
+ };
109
+ }
110
+ const text = await res.text();
111
+ return {
112
+ error: text || `HTTP ${res.status}`,
113
+ status: res.status,
114
+ };
115
+ }
116
+ if (!res.body) {
117
+ return { error: "No response body for SSE stream", status: 500 };
118
+ }
119
+ const reader = res.body.getReader();
120
+ const decoder = new TextDecoder();
121
+ let buffer = "";
122
+ const rawEvents = [];
123
+ let fullText = "";
124
+ while (true) {
125
+ const { done, value } = await reader.read();
126
+ if (done)
127
+ break;
128
+ buffer += decoder.decode(value, { stream: true });
129
+ const lines = buffer.split("\n");
130
+ buffer = lines.pop() ?? "";
131
+ for (const line of lines) {
132
+ const trimmed = line.trim();
133
+ if (!trimmed || trimmed.startsWith(":"))
134
+ continue;
135
+ if (trimmed.startsWith("data: ")) {
136
+ const data = trimmed.slice(6);
137
+ if (data === "[DONE]")
138
+ continue;
139
+ rawEvents.push(data);
140
+ try {
141
+ const parsed = JSON.parse(data);
142
+ // Handle different SSE event formats from our API
143
+ if (typeof parsed === "string") {
144
+ fullText += parsed;
145
+ }
146
+ else if (parsed.text) {
147
+ fullText += parsed.text;
148
+ }
149
+ else if (parsed.content) {
150
+ fullText += parsed.content;
151
+ }
152
+ else if (parsed.delta?.content) {
153
+ fullText += parsed.delta.content;
154
+ }
155
+ else if (parsed.type === "result" && parsed.data) {
156
+ // Final result event from agent generation
157
+ clearTimeout(timeout);
158
+ return {
159
+ data: { text: JSON.stringify(parsed.data), raw_events: rawEvents },
160
+ status: 200,
161
+ };
162
+ }
163
+ }
164
+ catch {
165
+ // Non-JSON data line — treat as raw text chunk
166
+ fullText += data;
167
+ }
168
+ }
169
+ }
170
+ }
171
+ clearTimeout(timeout);
172
+ return {
173
+ data: { text: fullText, raw_events: rawEvents },
174
+ status: 200,
175
+ };
176
+ }
177
+ catch (err) {
178
+ clearTimeout(timeout);
179
+ if (err instanceof DOMException && err.name === "AbortError") {
180
+ return { error: "Request timed out after 60 seconds", status: 0 };
181
+ }
182
+ const message = err instanceof Error ? err.message : "Unknown network error";
183
+ return { error: `SSE error: ${message}`, status: 0 };
184
+ }
185
+ }
186
+ }
187
+ /** Format API errors into helpful MCP error text */
188
+ export function formatError(error, status, hint) {
189
+ const parts = [`Error: ${error}`];
190
+ if (status === 401) {
191
+ parts.push("Your API key may be invalid or expired. Check your LAUNCHPATH_API_KEY.");
192
+ }
193
+ else if (status === 402) {
194
+ parts.push("Payment required. Check your LaunchPath subscription status.");
195
+ }
196
+ else if (status === 403) {
197
+ parts.push("Access denied. You may not have permission for this resource.");
198
+ }
199
+ else if (status === 404) {
200
+ parts.push(hint || "Resource not found. Verify the ID is correct.");
201
+ }
202
+ else if (status === 429) {
203
+ parts.push("Rate limit exceeded. Wait a moment and try again.");
204
+ }
205
+ if (hint && status !== 404) {
206
+ parts.push(hint);
207
+ }
208
+ return parts.join(" ");
209
+ }
210
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * LaunchPath MCP Server
4
+ *
5
+ * Manage AI agents, knowledge bases, deployments, clients, and campaigns
6
+ * from Claude Code, Claude Desktop, or any MCP-compatible client.
7
+ *
8
+ * Usage:
9
+ * LAUNCHPATH_API_KEY=lp_key_xxx npx @launchpath/mcp-server
10
+ * LAUNCHPATH_API_KEY=lp_key_xxx LAUNCHPATH_BASE_URL=http://localhost:3000 npx @launchpath/mcp-server
11
+ */
12
+ export {};