@stackable-labs/mcp-app-extension 1.0.0 → 1.2.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 +5 -5
- package/dist/index.js +7 -4
- package/dist/server.js +7 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ MCP server exposing Stackable Labs extension-platform tools to AI agents (Claude
|
|
|
6
6
|
|
|
7
7
|
| Transport | Home | Auth flow | Best for |
|
|
8
8
|
|-----------|------|-----------|----------|
|
|
9
|
-
| **HTTP** (streamable) | Deployed at `
|
|
9
|
+
| **HTTP** (streamable) | Deployed at `mcp{-stage,}.stackablelabs.io/app-extension` | Claude Code native OAuth — SDK discovers `.well-known/oauth-authorization-server` via `WWW-Authenticate` header, stores token in keychain | Most users. Simplest to configure. |
|
|
10
10
|
| **stdio** | Local process via `pnpm dlx @stackable-labs/mcp-app-extension@latest` | Package-level OAuth flow — spins up localhost callback listener, caches token to `~/.stackable/mcp-auth.json` | Local dev, agent orchestration outside a Claude Code keychain |
|
|
11
11
|
|
|
12
12
|
Both transports expose the same tool surface: `list_apps`, `list_extensions`, `get_extension`, `list_instances`, plus SDK-only tools (`list_skills`, `lookup_skill`, `validate_manifest`, `validate_permissions`).
|
|
@@ -22,7 +22,7 @@ Drop into your project root (or `~/.claude.json` for user-scoped setup). Both en
|
|
|
22
22
|
"mcpServers": {
|
|
23
23
|
"stackable-dev-http": {
|
|
24
24
|
"type": "http",
|
|
25
|
-
"url": "https://
|
|
25
|
+
"url": "https://mcp-dev.stackablelabs.io/app-extension"
|
|
26
26
|
},
|
|
27
27
|
"stackable-dev-stdio": {
|
|
28
28
|
"type": "stdio",
|
|
@@ -33,7 +33,7 @@ Drop into your project root (or `~/.claude.json` for user-scoped setup). Both en
|
|
|
33
33
|
"@stackable-labs/mcp-app-extension@latest"
|
|
34
34
|
],
|
|
35
35
|
"env": {
|
|
36
|
-
"MCP_API_BASE_URL": "https://
|
|
36
|
+
"MCP_API_BASE_URL": "https://mcp-dev.stackablelabs.io",
|
|
37
37
|
"ADMIN_API_BASE_URL": "https://api-dev-use1.stackablelabs.io/admin"
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -48,7 +48,7 @@ Drop into your project root (or `~/.claude.json` for user-scoped setup). Both en
|
|
|
48
48
|
"mcpServers": {
|
|
49
49
|
"stackable-http": {
|
|
50
50
|
"type": "http",
|
|
51
|
-
"url": "https://
|
|
51
|
+
"url": "https://mcp.stackablelabs.io/app-extension"
|
|
52
52
|
},
|
|
53
53
|
"stackable-stdio": {
|
|
54
54
|
"type": "stdio",
|
|
@@ -65,7 +65,7 @@ Both optional — defaults point at prod. Override per-stage as needed.
|
|
|
65
65
|
|
|
66
66
|
| Env var | Default | Purpose |
|
|
67
67
|
|---------|---------|---------|
|
|
68
|
-
| `MCP_API_BASE_URL` | `https://
|
|
68
|
+
| `MCP_API_BASE_URL` | `https://mcp.stackablelabs.io` | MCP host root. OAuth discovery URL is derived as `${mcpBase}/.well-known/oauth-authorization-server`. |
|
|
69
69
|
| `ADMIN_API_BASE_URL` | `https://api-use1.stackablelabs.io/admin` | Admin API endpoint for platform tool calls (`list_apps`, etc.). |
|
|
70
70
|
|
|
71
71
|
HTTP transport reads URLs from the deployed Lambda's env (set via CDK + `packages/infra/cdk/.env.{stage}` — not client-controlled).
|
package/dist/index.js
CHANGED
|
@@ -2453,6 +2453,7 @@ Both workflows produce the same output \u2014 a Stackable extension that runs in
|
|
|
2453
2453
|
};
|
|
2454
2454
|
|
|
2455
2455
|
// ../../sdk/extension/ai-docs/src/generators/ai-accelerated-development.ts
|
|
2456
|
+
var DEFAULT_MCP_API_BASE_URL = "https://mcp.stackablelabs.io";
|
|
2456
2457
|
var generateAIAcceleratedDevelopment = () => {
|
|
2457
2458
|
const fm = frontmatter({
|
|
2458
2459
|
root: false,
|
|
@@ -2460,6 +2461,8 @@ var generateAIAcceleratedDevelopment = () => {
|
|
|
2460
2461
|
description: "AI-Accelerated Development: AI Extension Studio, Agent Skills, the live MCP server, and the Claude Code plugin \u2014 and how to choose between them.",
|
|
2461
2462
|
globs: ["*"]
|
|
2462
2463
|
});
|
|
2464
|
+
const mcpApiBaseUrl = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL;
|
|
2465
|
+
const mcpEndpointUrl = `${mcpApiBaseUrl}/app-extension`;
|
|
2463
2466
|
return `${fm}
|
|
2464
2467
|
|
|
2465
2468
|
# AI-Accelerated Development
|
|
@@ -2508,7 +2511,7 @@ Agent Skills work with any tool that supports the format \u2014 Claude Code, Cur
|
|
|
2508
2511
|
|
|
2509
2512
|
The Stackable platform exposes a hosted MCP (Model Context Protocol) server that any compatible AI client can connect to for live access to your account's apps, extensions, and platform metadata.
|
|
2510
2513
|
|
|
2511
|
-
**Endpoint:** \`
|
|
2514
|
+
**Endpoint:** \`${mcpEndpointUrl}\`
|
|
2512
2515
|
|
|
2513
2516
|
### Available tools (snapshot)
|
|
2514
2517
|
|
|
@@ -4551,7 +4554,7 @@ var package_default = {
|
|
|
4551
4554
|
// src/server.ts
|
|
4552
4555
|
var MCP_CLIENT_NAME = STANDALONE_CLIENT.MCP;
|
|
4553
4556
|
var DEFAULT_ADMIN_API_URL = "https://api-use1.stackablelabs.io/admin";
|
|
4554
|
-
var
|
|
4557
|
+
var DEFAULT_MCP_API_BASE_URL2 = "https://mcp.stackablelabs.io";
|
|
4555
4558
|
var textContent = (text) => ({ content: [{ type: "text", text }] });
|
|
4556
4559
|
var errorContent = (text) => ({ content: [{ type: "text", text }], isError: true });
|
|
4557
4560
|
var createMcpServer = (options = {}) => {
|
|
@@ -4572,7 +4575,7 @@ var createMcpServer = (options = {}) => {
|
|
|
4572
4575
|
"No auth token available. Provide authContext (server) or performOAuthFlow (CLI)."
|
|
4573
4576
|
);
|
|
4574
4577
|
}
|
|
4575
|
-
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ??
|
|
4578
|
+
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL2;
|
|
4576
4579
|
return options.performOAuthFlow(`${MCP_API_BASE_URL}/.well-known/oauth-authorization-server`);
|
|
4577
4580
|
};
|
|
4578
4581
|
const authHeaders = (token) => ({
|
|
@@ -4604,7 +4607,7 @@ var createMcpServer = (options = {}) => {
|
|
|
4604
4607
|
} catch (err) {
|
|
4605
4608
|
const e = err;
|
|
4606
4609
|
if (e.message.includes("fetch")) {
|
|
4607
|
-
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ??
|
|
4610
|
+
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL2;
|
|
4608
4611
|
return errorContent(
|
|
4609
4612
|
`MCP auth flow failed: ${e.message}. Check MCP_API_BASE_URL env var (currently "${MCP_API_BASE_URL}"). To re-auth from scratch: rm ${MCP_AUTH_FILE}`
|
|
4610
4613
|
);
|
package/dist/server.js
CHANGED
|
@@ -2446,6 +2446,7 @@ Both workflows produce the same output \u2014 a Stackable extension that runs in
|
|
|
2446
2446
|
};
|
|
2447
2447
|
|
|
2448
2448
|
// ../../sdk/extension/ai-docs/src/generators/ai-accelerated-development.ts
|
|
2449
|
+
var DEFAULT_MCP_API_BASE_URL = "https://mcp.stackablelabs.io";
|
|
2449
2450
|
var generateAIAcceleratedDevelopment = () => {
|
|
2450
2451
|
const fm = frontmatter({
|
|
2451
2452
|
root: false,
|
|
@@ -2453,6 +2454,8 @@ var generateAIAcceleratedDevelopment = () => {
|
|
|
2453
2454
|
description: "AI-Accelerated Development: AI Extension Studio, Agent Skills, the live MCP server, and the Claude Code plugin \u2014 and how to choose between them.",
|
|
2454
2455
|
globs: ["*"]
|
|
2455
2456
|
});
|
|
2457
|
+
const mcpApiBaseUrl = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL;
|
|
2458
|
+
const mcpEndpointUrl = `${mcpApiBaseUrl}/app-extension`;
|
|
2456
2459
|
return `${fm}
|
|
2457
2460
|
|
|
2458
2461
|
# AI-Accelerated Development
|
|
@@ -2501,7 +2504,7 @@ Agent Skills work with any tool that supports the format \u2014 Claude Code, Cur
|
|
|
2501
2504
|
|
|
2502
2505
|
The Stackable platform exposes a hosted MCP (Model Context Protocol) server that any compatible AI client can connect to for live access to your account's apps, extensions, and platform metadata.
|
|
2503
2506
|
|
|
2504
|
-
**Endpoint:** \`
|
|
2507
|
+
**Endpoint:** \`${mcpEndpointUrl}\`
|
|
2505
2508
|
|
|
2506
2509
|
### Available tools (snapshot)
|
|
2507
2510
|
|
|
@@ -4500,7 +4503,7 @@ var package_default = {
|
|
|
4500
4503
|
// src/server.ts
|
|
4501
4504
|
var MCP_CLIENT_NAME = STANDALONE_CLIENT.MCP;
|
|
4502
4505
|
var DEFAULT_ADMIN_API_URL = "https://api-use1.stackablelabs.io/admin";
|
|
4503
|
-
var
|
|
4506
|
+
var DEFAULT_MCP_API_BASE_URL2 = "https://mcp.stackablelabs.io";
|
|
4504
4507
|
var textContent = (text) => ({ content: [{ type: "text", text }] });
|
|
4505
4508
|
var errorContent = (text) => ({ content: [{ type: "text", text }], isError: true });
|
|
4506
4509
|
var createMcpServer = (options = {}) => {
|
|
@@ -4521,7 +4524,7 @@ var createMcpServer = (options = {}) => {
|
|
|
4521
4524
|
"No auth token available. Provide authContext (server) or performOAuthFlow (CLI)."
|
|
4522
4525
|
);
|
|
4523
4526
|
}
|
|
4524
|
-
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ??
|
|
4527
|
+
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL2;
|
|
4525
4528
|
return options.performOAuthFlow(`${MCP_API_BASE_URL}/.well-known/oauth-authorization-server`);
|
|
4526
4529
|
};
|
|
4527
4530
|
const authHeaders = (token) => ({
|
|
@@ -4553,7 +4556,7 @@ var createMcpServer = (options = {}) => {
|
|
|
4553
4556
|
} catch (err) {
|
|
4554
4557
|
const e = err;
|
|
4555
4558
|
if (e.message.includes("fetch")) {
|
|
4556
|
-
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ??
|
|
4559
|
+
const MCP_API_BASE_URL = process.env.MCP_API_BASE_URL ?? DEFAULT_MCP_API_BASE_URL2;
|
|
4557
4560
|
return errorContent(
|
|
4558
4561
|
`MCP auth flow failed: ${e.message}. Check MCP_API_BASE_URL env var (currently "${MCP_API_BASE_URL}"). To re-auth from scratch: rm ${MCP_AUTH_FILE}`
|
|
4559
4562
|
);
|