zion-mcp 1.0.2 → 1.0.5
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 +89 -0
- package/dist/auth/credential-store.d.ts +2 -1
- package/dist/auth/credential-store.d.ts.map +1 -1
- package/dist/auth/credential-store.js +11 -1
- package/dist/auth/credential-store.js.map +1 -1
- package/dist/auth/token-manager.d.ts +1 -2
- package/dist/auth/token-manager.d.ts.map +1 -1
- package/dist/auth/token-manager.js +22 -3
- package/dist/auth/token-manager.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -36
- package/dist/server.js.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +102 -6
- package/dist/tools/index.js.map +1 -1
- package/package.json +2 -1
package/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Zion MCP Server
|
|
2
|
+
|
|
3
|
+
Zion MCP Server 是 [FunctorZ (Zion)](https://functorz.com) 提供的官方 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 服务端。它允许 Cursor、Claude Desktop 等 AI 助手直接连接到您的 Zion 项目,读取项目结构、数据模型和业务逻辑,从而提供更精准的 AI 辅助开发体验。
|
|
4
|
+
|
|
5
|
+
## ✨ 功能特性
|
|
6
|
+
|
|
7
|
+
- **项目深度集成**: 获取 Zion 项目的完整 Schema,包括数据模型 (Data Model)、行为流 (Action Flows)、API 定义等。
|
|
8
|
+
- **智能项目管理**: 支持模糊搜索项目,快速切换当前上下文。
|
|
9
|
+
- **安全认证**: 基于 OAuth 的安全认证机制,确保您的数据安全。
|
|
10
|
+
- **上下文感知**: 自动维护项目上下文,无需在每次请求时重复指定项目 ID。
|
|
11
|
+
|
|
12
|
+
## 🚀 快速开始
|
|
13
|
+
|
|
14
|
+
### 在 Cursor 中使用
|
|
15
|
+
|
|
16
|
+
1. 打开 Cursor 设置面板 (`Cmd + ,` 或 `Ctrl + ,`)。
|
|
17
|
+
2. 进入 **Features** -> **MCP**。
|
|
18
|
+
3. 点击 **Add New MCP Server**。
|
|
19
|
+
4. 填写以下信息:
|
|
20
|
+
- **Name**: Zion MCP
|
|
21
|
+
- **Type**: command
|
|
22
|
+
- **Command**: `npx -y zion-mcp`
|
|
23
|
+
5. 保存并重启 Cursor (如果需要)。
|
|
24
|
+
|
|
25
|
+
### 在 Claude Desktop 中使用
|
|
26
|
+
|
|
27
|
+
在您的 Claude Desktop 配置文件(通常位于 `~/Library/Application Support/Claude/claude_desktop_config.json`)中添加:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"zion": {
|
|
33
|
+
"command": "npx",
|
|
34
|
+
"args": ["-y", "zion-mcp"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 🛠️ 可用工具 (Tools)
|
|
41
|
+
|
|
42
|
+
连接成功后,AI 助手将获得以下能力:
|
|
43
|
+
|
|
44
|
+
- **`set_current_working_directory`**: 设置当前工作目录(通常自动处理)。
|
|
45
|
+
- **`get_projects`**: 搜索您的 Zion 项目列表。支持模糊搜索和分页。
|
|
46
|
+
- **`set_current_project`**: 设置当前操作的项目上下文。
|
|
47
|
+
- **`get_project_schema`**: 获取指定项目的详细 Schema 信息,帮助 AI 理解项目结构。
|
|
48
|
+
- **`reauth`**: 当 Token 过期时触发重新认证。
|
|
49
|
+
|
|
50
|
+
## 🔒 安全说明
|
|
51
|
+
|
|
52
|
+
首次使用时,MCP Server 会启动浏览器进行 OAuth 认证。认证 Token 会安全地存储在您的本地系统中。
|
|
53
|
+
|
|
54
|
+
## 🏗️ 什么是 Zion?
|
|
55
|
+
|
|
56
|
+
[Zion](https://functorz.com) 是新一代的**全栈无代码平台**,拥有专为 Headless 使用场景设计的强大后端。Zion 不仅提供可视化的全栈应用构建能力,其后端也可作为独立的 **Backend-as-a-Service (BaaS)** 使用,完美适配自定义前端开发。
|
|
57
|
+
|
|
58
|
+
### 为什么选择 Zion 作为 BaaS?
|
|
59
|
+
|
|
60
|
+
✅ **企业级 PostgreSQL** - 强大且符合 ACID 标准的关系型数据库
|
|
61
|
+
✅ **自动生成 GraphQL API** - 数据模型自动转化为类型安全的 GraphQL Schema
|
|
62
|
+
✅ **内置后端逻辑** - 通过行为流 (Actionflows) 可视化编排复杂业务逻辑,无需编写代码
|
|
63
|
+
✅ **原生 AI 集成** - 内置 AI Agent 支持,包含 RAG、工具调用及结构化输出能力
|
|
64
|
+
✅ **第三方 API 转发** - 支持导入 OpenAPI 规范,作为带认证的后端中继使用
|
|
65
|
+
✅ **微信/支付宝支付集成** - 原生支持主流支付渠道,轻松处理订阅与一次性支付
|
|
66
|
+
✅ **文件存储** - 图片及二进制文件管理,自带 CDN 加速
|
|
67
|
+
✅ **身份认证** - 内置基于 JWT 的用户管理体系
|
|
68
|
+
✅ **实时订阅** - 通过 GraphQL Subscriptions 支持 WebSocket 实时推送
|
|
69
|
+
✅ **可预测的定价** - 基于项目的定价模式,无单次请求计费烦恼
|
|
70
|
+
|
|
71
|
+
## 🔗 相关链接
|
|
72
|
+
|
|
73
|
+
- [Zion 官网](https://functorz.com)
|
|
74
|
+
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
75
|
+
|
|
76
|
+
## 📖 更多资源
|
|
77
|
+
|
|
78
|
+
### Zion 文档
|
|
79
|
+
|
|
80
|
+
- [Zion 官方文档](https://docs.functorz.com/)
|
|
81
|
+
- [快速开始](https://docs.functorz.com/starts/)
|
|
82
|
+
- [数据库配置](https://docs.functorz.com/data/database/configuration/)
|
|
83
|
+
- [行为流 (Actionflow) 指南](https://docs.functorz.com/actions/actionflow/)
|
|
84
|
+
- [AI Agent 教程](https://docs.functorz.com/actions/zai/)
|
|
85
|
+
- [支付集成](https://docs.functorz.com/actions/payment/)
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
_注意:本工具仅供 Zion 用户辅助开发使用。_
|
|
@@ -6,7 +6,8 @@ export declare class CredentialStore {
|
|
|
6
6
|
private configPath;
|
|
7
7
|
private projectContextPath;
|
|
8
8
|
constructor(workspaceRoot: string);
|
|
9
|
-
|
|
9
|
+
setWorkspaceRoot(workspaceRoot: string): void;
|
|
10
|
+
private ensureInitialized;
|
|
10
11
|
saveCredentials(credentials: OAuthTokens): Promise<void>;
|
|
11
12
|
loadCredentials(): Promise<StoredCredentials | null>;
|
|
12
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/auth/credential-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,aAAa,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/auth/credential-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,aAAa,EAAE,MAAM;IAWjC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;YAW/B,iBAAiB;IAezB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxD,eAAe,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAsB1D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmErB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxC;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKvC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAYvC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD,kBAAkB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAYpD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3C,gBAAgB,IAAI,MAAM;IAI1B,eAAe,IAAI,MAAM;CAG1B"}
|
|
@@ -16,7 +16,14 @@ export class CredentialStore {
|
|
|
16
16
|
this.configPath = path.join(this.mcpConfigDir, "config.json");
|
|
17
17
|
this.projectContextPath = path.join(this.mcpConfigDir, "project-context.json");
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
setWorkspaceRoot(workspaceRoot) {
|
|
20
|
+
this.workspaceRoot = workspaceRoot;
|
|
21
|
+
this.mcpConfigDir = path.join(workspaceRoot, `.${SERVER_NAME}`);
|
|
22
|
+
this.credentialsPath = path.join(this.mcpConfigDir, "credentials.json");
|
|
23
|
+
this.configPath = path.join(this.mcpConfigDir, "config.json");
|
|
24
|
+
this.projectContextPath = path.join(this.mcpConfigDir, "project-context.json");
|
|
25
|
+
}
|
|
26
|
+
async ensureInitialized() {
|
|
20
27
|
await fs.mkdir(this.mcpConfigDir, { recursive: true });
|
|
21
28
|
const gitignorePath = path.join(this.mcpConfigDir, ".gitignore");
|
|
22
29
|
const gitignoreContent = "*";
|
|
@@ -31,6 +38,7 @@ export class CredentialStore {
|
|
|
31
38
|
}
|
|
32
39
|
}
|
|
33
40
|
async saveCredentials(credentials) {
|
|
41
|
+
await this.ensureInitialized();
|
|
34
42
|
// Validate credentials before saving
|
|
35
43
|
if (!credentials.access_token || credentials.access_token.trim() === "") {
|
|
36
44
|
throw new Error("Invalid credentials: access_token is required");
|
|
@@ -139,6 +147,7 @@ export class CredentialStore {
|
|
|
139
147
|
return credentials !== null;
|
|
140
148
|
}
|
|
141
149
|
async saveConfig(config) {
|
|
150
|
+
await this.ensureInitialized();
|
|
142
151
|
await fs.writeFile(this.configPath, JSON.stringify(config, null, 2));
|
|
143
152
|
}
|
|
144
153
|
async loadConfig() {
|
|
@@ -154,6 +163,7 @@ export class CredentialStore {
|
|
|
154
163
|
}
|
|
155
164
|
}
|
|
156
165
|
async saveProjectContext(projectExId) {
|
|
166
|
+
await this.ensureInitialized();
|
|
157
167
|
const context = {
|
|
158
168
|
projectExId,
|
|
159
169
|
lastUsed: new Date().toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/auth/credential-store.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,cAAc,CAAC;AAO/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,eAAe;IAClB,aAAa,CAAS;IACtB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,UAAU,CAAS;IACnB,kBAAkB,CAAS;IAEnC,YAAY,aAAqB;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CACjC,IAAI,CAAC,YAAY,EACjB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/auth/credential-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { CredentialStore } from "./credential-store.js";
|
|
2
|
-
import type { MCPConfig } from "../types.js";
|
|
3
2
|
export declare class TokenManager {
|
|
4
3
|
private store;
|
|
5
|
-
constructor(credentialStore: CredentialStore
|
|
4
|
+
constructor(credentialStore: CredentialStore);
|
|
6
5
|
getValidToken(): Promise<string>;
|
|
7
6
|
}
|
|
8
7
|
//# sourceMappingURL=token-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAkB;gBAEnB,eAAe,EAAE,eAAe;IAItC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CA6BvC"}
|
|
@@ -1,12 +1,31 @@
|
|
|
1
|
+
import { JwtAuth } from "./jwt-auth.js";
|
|
2
|
+
import { getConfig } from "../config.js";
|
|
3
|
+
import { SERVER_NAME } from "../const.js";
|
|
1
4
|
export class TokenManager {
|
|
2
5
|
store;
|
|
3
|
-
constructor(credentialStore
|
|
6
|
+
constructor(credentialStore) {
|
|
4
7
|
this.store = credentialStore;
|
|
5
8
|
}
|
|
6
9
|
async getValidToken() {
|
|
7
|
-
|
|
10
|
+
let credentials = await this.store.loadCredentials();
|
|
8
11
|
if (!credentials) {
|
|
9
|
-
|
|
12
|
+
console.error(`[${SERVER_NAME}] No valid credentials found - starting authentication flow...`);
|
|
13
|
+
console.error(`[${SERVER_NAME}] ⚠️ Your browser will open for authentication`);
|
|
14
|
+
const config = await getConfig(this.store);
|
|
15
|
+
const jwtAuth = new JwtAuth(config);
|
|
16
|
+
try {
|
|
17
|
+
const tokens = await jwtAuth.authenticate();
|
|
18
|
+
await this.store.saveCredentials(tokens);
|
|
19
|
+
console.error(`[${SERVER_NAME}] ✓ Authentication successful!`);
|
|
20
|
+
credentials = await this.store.loadCredentials();
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(`[${SERVER_NAME}] ✗ Authentication failed:`, error.message);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!credentials) {
|
|
28
|
+
throw new Error("Failed to load saved credentials");
|
|
10
29
|
}
|
|
11
30
|
// Return the JWT token directly (no refresh needed)
|
|
12
31
|
return credentials.access_token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/auth/token-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,YAAY;IACf,KAAK,CAAkB;IAE/B,YAAY,eAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAErD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,gEAAgE,CAAC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,iDAAiD,CAAC,CAAC;YAEhF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,gCAAgC,CAAC,CAAC;gBAE/D,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,4BAA4B,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBACrF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,oDAAoD;QACpD,OAAO,WAAW,CAAC,YAAY,CAAC;IAClC,CAAC;CACF"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C,wBAAsB,SAAS,CAC7B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C,wBAAsB,SAAS,CAC7B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,SAAS,CAAC,CAiBpB"}
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,iBAAiB;AACjB,YAAY,EAAE,CAAC;AAEf,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,eAAgC;IAEhC,wCAAwC;IACxC,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sDAAsD;QACtD,MAAM,GAAG;YACP,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,6BAA6B;YACpE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,wBAAwB;YACpE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBAC3C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC/C,CAAC,CAAC,IAAI;SACT,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,iBAAiB;AACjB,YAAY,EAAE,CAAC;AAEf,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,eAAgC;IAEhC,wCAAwC;IACxC,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sDAAsD;QACtD,MAAM,GAAG;YACP,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,6BAA6B;YACpE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,wBAAwB;YACpE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBAC3C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC/C,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkD1C"}
|
package/dist/server.js
CHANGED
|
@@ -2,55 +2,22 @@
|
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CredentialStore } from "./auth/credential-store.js";
|
|
5
|
-
import { JwtAuth } from "./auth/jwt-auth.js";
|
|
6
5
|
import { TokenManager } from "./auth/token-manager.js";
|
|
7
6
|
import { registerTools } from "./tools/index.js";
|
|
8
|
-
import { getConfig } from "./config.js";
|
|
9
7
|
import { SERVER_NAME } from "./const.js";
|
|
10
8
|
// Log to stderr (stdout is reserved for MCP protocol)
|
|
11
9
|
const log = (...args) => {
|
|
12
10
|
console.error(`[${SERVER_NAME}]`, ...args);
|
|
13
11
|
};
|
|
14
|
-
async function ensureAuthentication(credentialStore, config) {
|
|
15
|
-
const credentials = await credentialStore.loadCredentials();
|
|
16
|
-
if (credentials) {
|
|
17
|
-
log("Using existing JWT token");
|
|
18
|
-
return credentials;
|
|
19
|
-
}
|
|
20
|
-
// Need to authenticate
|
|
21
|
-
log("No valid credentials found - starting authentication flow...");
|
|
22
|
-
log("⚠️ Your browser will open for authentication");
|
|
23
|
-
const jwtAuth = new JwtAuth(config);
|
|
24
|
-
try {
|
|
25
|
-
const tokens = await jwtAuth.authenticate();
|
|
26
|
-
await credentialStore.saveCredentials(tokens);
|
|
27
|
-
log("✓ Authentication successful!");
|
|
28
|
-
// Return as StoredCredentials
|
|
29
|
-
const savedCredentials = await credentialStore.loadCredentials();
|
|
30
|
-
if (!savedCredentials) {
|
|
31
|
-
throw new Error("Failed to load saved credentials");
|
|
32
|
-
}
|
|
33
|
-
return savedCredentials;
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
log("✗ Authentication failed:", error.message);
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
12
|
export async function main() {
|
|
41
13
|
try {
|
|
42
14
|
// Get workspace root from environment or CWD
|
|
43
15
|
const workspaceRoot = process.env.WORKSPACE_ROOT || process.cwd();
|
|
44
16
|
log(`Starting in workspace: ${workspaceRoot}`);
|
|
45
|
-
// Initialize credential store
|
|
17
|
+
// Initialize credential store (lazy)
|
|
46
18
|
const credentialStore = new CredentialStore(workspaceRoot);
|
|
47
|
-
await credentialStore.initialize();
|
|
48
|
-
// Load configuration
|
|
49
|
-
const config = await getConfig(credentialStore);
|
|
50
|
-
// Ensure authentication before starting MCP server
|
|
51
|
-
await ensureAuthentication(credentialStore, config);
|
|
52
19
|
// Initialize token manager
|
|
53
|
-
const tokenManager = new TokenManager(credentialStore
|
|
20
|
+
const tokenManager = new TokenManager(credentialStore);
|
|
54
21
|
// Create MCP server
|
|
55
22
|
const server = new McpServer({
|
|
56
23
|
name: SERVER_NAME,
|
|
@@ -61,7 +28,7 @@ export async function main() {
|
|
|
61
28
|
},
|
|
62
29
|
});
|
|
63
30
|
// Register all tools with token manager
|
|
64
|
-
await registerTools(server, tokenManager, credentialStore
|
|
31
|
+
await registerTools(server, tokenManager, credentialStore);
|
|
65
32
|
// Start MCP server with stdio transport
|
|
66
33
|
const transport = new StdioServerTransport();
|
|
67
34
|
await server.connect(transport);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,sDAAsD;AACtD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClE,GAAG,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;QAE/C,qCAAqC;QACrC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAE3D,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;QAEvD,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,wCAAwC;QACxC,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAE3D,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAExB,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,cAAc,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,iCAAiC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC;AACT,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { TokenManager } from "../auth/token-manager.js";
|
|
3
3
|
import type { CredentialStore } from "../auth/credential-store.js";
|
|
4
|
-
|
|
5
|
-
export declare function registerTools(server: McpServer, tokenManager: TokenManager, credentialStore: CredentialStore, mcpConfig: MCPConfig): Promise<void>;
|
|
4
|
+
export declare function registerTools(server: McpServer, tokenManager: TokenManager, credentialStore: CredentialStore): Promise<void>;
|
|
6
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA+InE,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsYf"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { GraphQLClient, gql } from "graphql-request";
|
|
3
3
|
import { SERVER_NAME } from "../const.js";
|
|
4
|
+
import { getConfig } from "../config.js";
|
|
5
|
+
import { promises as fs } from "fs";
|
|
6
|
+
import path from "path";
|
|
4
7
|
// GraphQL queries
|
|
5
8
|
const SIMPLIFIED_CAUGHT_UP_SERVER_SCHEMA = gql `
|
|
6
9
|
query SimplifiedCaughtUpServerSchema($projectExId: String!) {
|
|
7
10
|
project(projectExId: $projectExId) {
|
|
8
11
|
simplifiedCaughtUpServerSchema {
|
|
9
12
|
dataModel
|
|
10
|
-
|
|
11
|
-
pendingActionFlows
|
|
13
|
+
actionFlows
|
|
12
14
|
apis
|
|
13
15
|
zAiConfigs
|
|
14
16
|
}
|
|
@@ -74,11 +76,85 @@ const FUZZY_SEARCH_PROJECT_NAME = gql `
|
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
`;
|
|
77
|
-
export async function registerTools(server, tokenManager, credentialStore
|
|
78
|
-
|
|
79
|
+
export async function registerTools(server, tokenManager, credentialStore) {
|
|
80
|
+
let sessionCwd = null;
|
|
81
|
+
// Helper to check CWD
|
|
82
|
+
const checkCwd = () => {
|
|
83
|
+
if (!sessionCwd) {
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: "text",
|
|
88
|
+
text: "Please set the current working directory first using set_current_working_directory.",
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
isError: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
};
|
|
96
|
+
// Register set current working directory tool
|
|
97
|
+
server.registerTool("set_current_working_directory", {
|
|
98
|
+
description: "Set the current working directory for the session. This tool must be called before any other tools in the session.",
|
|
99
|
+
inputSchema: z.object({
|
|
100
|
+
cwd: z
|
|
101
|
+
.string()
|
|
102
|
+
.describe("The absolute path to the working directory"),
|
|
103
|
+
}),
|
|
104
|
+
}, async (args) => {
|
|
105
|
+
try {
|
|
106
|
+
const resolvedPath = path.resolve(args.cwd);
|
|
107
|
+
try {
|
|
108
|
+
const stats = await fs.stat(resolvedPath);
|
|
109
|
+
if (!stats.isDirectory()) {
|
|
110
|
+
return {
|
|
111
|
+
content: [
|
|
112
|
+
{
|
|
113
|
+
type: "text",
|
|
114
|
+
text: `Path is not a directory: ${resolvedPath}`,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
isError: true,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: "text",
|
|
126
|
+
text: `Path does not exist: ${resolvedPath}`,
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
isError: true,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
sessionCwd = resolvedPath;
|
|
133
|
+
credentialStore.setWorkspaceRoot(sessionCwd);
|
|
134
|
+
return {
|
|
135
|
+
content: [
|
|
136
|
+
{
|
|
137
|
+
type: "text",
|
|
138
|
+
text: `✓ Current working directory set to: ${sessionCwd}`,
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
return {
|
|
145
|
+
content: [
|
|
146
|
+
{
|
|
147
|
+
type: "text",
|
|
148
|
+
text: `Error setting CWD: ${error.message}`,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
isError: true,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
});
|
|
79
155
|
// Register get schema tool
|
|
80
156
|
server.registerTool("get_project_schema", {
|
|
81
|
-
description: "Get the simplified caught up server schema
|
|
157
|
+
description: "Get the simplified caught up server schema. If projectExId is not provided, uses the last used project.",
|
|
82
158
|
inputSchema: z.object({
|
|
83
159
|
projectExId: z
|
|
84
160
|
.string()
|
|
@@ -86,6 +162,9 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
86
162
|
.describe("Project external ID (optional if project context is set)"),
|
|
87
163
|
}),
|
|
88
164
|
}, async (args) => {
|
|
165
|
+
const cwdError = checkCwd();
|
|
166
|
+
if (cwdError)
|
|
167
|
+
return cwdError;
|
|
89
168
|
try {
|
|
90
169
|
// Get projectExId from arguments or stored context
|
|
91
170
|
let projectExId = args.projectExId;
|
|
@@ -109,6 +188,9 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
109
188
|
await credentialStore.saveProjectContext(projectExId);
|
|
110
189
|
}
|
|
111
190
|
const token = await tokenManager.getValidToken();
|
|
191
|
+
// Get fresh config and endpoint
|
|
192
|
+
const config = await getConfig(credentialStore);
|
|
193
|
+
const backendEndpoint = `${config.apiBaseUrl}/api/graphql`;
|
|
112
194
|
// Create GraphQL client with authentication
|
|
113
195
|
const client = new GraphQLClient(backendEndpoint, {
|
|
114
196
|
headers: {
|
|
@@ -156,8 +238,14 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
156
238
|
.describe("Number of projects to fetch (default: 20)"),
|
|
157
239
|
}),
|
|
158
240
|
}, async (args) => {
|
|
241
|
+
const cwdError = checkCwd();
|
|
242
|
+
if (cwdError)
|
|
243
|
+
return cwdError;
|
|
159
244
|
try {
|
|
160
245
|
const token = await tokenManager.getValidToken();
|
|
246
|
+
// Get fresh config and endpoint
|
|
247
|
+
const config = await getConfig(credentialStore);
|
|
248
|
+
const backendEndpoint = `${config.apiBaseUrl}/api/graphql`;
|
|
161
249
|
// Create GraphQL client with authentication
|
|
162
250
|
const client = new GraphQLClient(backendEndpoint, {
|
|
163
251
|
headers: {
|
|
@@ -215,6 +303,9 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
215
303
|
.describe("Project external ID to set as current"),
|
|
216
304
|
}),
|
|
217
305
|
}, async (args) => {
|
|
306
|
+
const cwdError = checkCwd();
|
|
307
|
+
if (cwdError)
|
|
308
|
+
return cwdError;
|
|
218
309
|
try {
|
|
219
310
|
await credentialStore.saveProjectContext(args.projectExId);
|
|
220
311
|
return {
|
|
@@ -243,6 +334,9 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
243
334
|
description: "Get the current project context",
|
|
244
335
|
inputSchema: z.object({}),
|
|
245
336
|
}, async () => {
|
|
337
|
+
const cwdError = checkCwd();
|
|
338
|
+
if (cwdError)
|
|
339
|
+
return cwdError;
|
|
246
340
|
try {
|
|
247
341
|
const context = await credentialStore.loadProjectContext();
|
|
248
342
|
if (!context) {
|
|
@@ -281,11 +375,13 @@ export async function registerTools(server, tokenManager, credentialStore, mcpCo
|
|
|
281
375
|
description: "Trigger OAuth re-authentication flow",
|
|
282
376
|
inputSchema: z.object({}),
|
|
283
377
|
}, async () => {
|
|
378
|
+
const cwdError = checkCwd();
|
|
379
|
+
if (cwdError)
|
|
380
|
+
return cwdError;
|
|
284
381
|
try {
|
|
285
382
|
console.error(`[${SERVER_NAME}] Re-authentication requested...`);
|
|
286
383
|
await credentialStore.deleteCredentials();
|
|
287
384
|
// Need to import these for re-auth
|
|
288
|
-
const { getConfig } = await import("../config.js");
|
|
289
385
|
const { JwtAuth } = await import("../auth/jwt-auth.js");
|
|
290
386
|
const newConfig = await getConfig(credentialStore);
|
|
291
387
|
const jwtAuth = new JwtAuth(newConfig);
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED