acuity-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.
- package/README.md +541 -0
- package/dist/auth/device-flow.d.ts +46 -0
- package/dist/auth/device-flow.d.ts.map +1 -0
- package/dist/auth/device-flow.js +141 -0
- package/dist/auth/device-flow.js.map +1 -0
- package/dist/auth/http-auth.d.ts +25 -0
- package/dist/auth/http-auth.d.ts.map +1 -0
- package/dist/auth/http-auth.js +101 -0
- package/dist/auth/http-auth.js.map +1 -0
- package/dist/auth/jwt-validator.d.ts +20 -0
- package/dist/auth/jwt-validator.d.ts.map +1 -0
- package/dist/auth/jwt-validator.js +83 -0
- package/dist/auth/jwt-validator.js.map +1 -0
- package/dist/auth/token-storage.d.ts +88 -0
- package/dist/auth/token-storage.d.ts.map +1 -0
- package/dist/auth/token-storage.js +273 -0
- package/dist/auth/token-storage.js.map +1 -0
- package/dist/clients/hasura-client.d.ts +33 -0
- package/dist/clients/hasura-client.d.ts.map +1 -0
- package/dist/clients/hasura-client.js +79 -0
- package/dist/clients/hasura-client.js.map +1 -0
- package/dist/config/environments.d.ts +51 -0
- package/dist/config/environments.d.ts.map +1 -0
- package/dist/config/environments.js +183 -0
- package/dist/config/environments.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +593 -0
- package/dist/index.js.map +1 -0
- package/dist/server/http-server.d.ts +14 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +167 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/mcp-core.d.ts +12 -0
- package/dist/server/mcp-core.d.ts.map +1 -0
- package/dist/server/mcp-core.js +200 -0
- package/dist/server/mcp-core.js.map +1 -0
- package/dist/tools/acuity-init.d.ts +84 -0
- package/dist/tools/acuity-init.d.ts.map +1 -0
- package/dist/tools/acuity-init.js +239 -0
- package/dist/tools/acuity-init.js.map +1 -0
- package/dist/tools/get-dashboard-summary.d.ts +96 -0
- package/dist/tools/get-dashboard-summary.d.ts.map +1 -0
- package/dist/tools/get-dashboard-summary.js +264 -0
- package/dist/tools/get-dashboard-summary.js.map +1 -0
- package/dist/tools/get-issue.d.ts +62 -0
- package/dist/tools/get-issue.d.ts.map +1 -0
- package/dist/tools/get-issue.js +150 -0
- package/dist/tools/get-issue.js.map +1 -0
- package/dist/tools/get-lesson-learned.d.ts +53 -0
- package/dist/tools/get-lesson-learned.d.ts.map +1 -0
- package/dist/tools/get-lesson-learned.js +117 -0
- package/dist/tools/get-lesson-learned.js.map +1 -0
- package/dist/tools/get-lookup-values.d.ts +41 -0
- package/dist/tools/get-lookup-values.d.ts.map +1 -0
- package/dist/tools/get-lookup-values.js +127 -0
- package/dist/tools/get-lookup-values.js.map +1 -0
- package/dist/tools/get-project.d.ts +131 -0
- package/dist/tools/get-project.d.ts.map +1 -0
- package/dist/tools/get-project.js +340 -0
- package/dist/tools/get-project.js.map +1 -0
- package/dist/tools/get-risk.d.ts +65 -0
- package/dist/tools/get-risk.d.ts.map +1 -0
- package/dist/tools/get-risk.js +173 -0
- package/dist/tools/get-risk.js.map +1 -0
- package/dist/tools/get-status-reports.d.ts +46 -0
- package/dist/tools/get-status-reports.d.ts.map +1 -0
- package/dist/tools/get-status-reports.js +151 -0
- package/dist/tools/get-status-reports.js.map +1 -0
- package/dist/tools/init-auth.d.ts +47 -0
- package/dist/tools/init-auth.d.ts.map +1 -0
- package/dist/tools/init-auth.js +213 -0
- package/dist/tools/init-auth.js.map +1 -0
- package/dist/tools/list-issues.d.ts +134 -0
- package/dist/tools/list-issues.d.ts.map +1 -0
- package/dist/tools/list-issues.js +285 -0
- package/dist/tools/list-issues.js.map +1 -0
- package/dist/tools/list-lessons-learned.d.ts +79 -0
- package/dist/tools/list-lessons-learned.d.ts.map +1 -0
- package/dist/tools/list-lessons-learned.js +155 -0
- package/dist/tools/list-lessons-learned.js.map +1 -0
- package/dist/tools/list-projects.d.ts +200 -0
- package/dist/tools/list-projects.d.ts.map +1 -0
- package/dist/tools/list-projects.js +396 -0
- package/dist/tools/list-projects.js.map +1 -0
- package/dist/tools/list-risks.d.ts +166 -0
- package/dist/tools/list-risks.d.ts.map +1 -0
- package/dist/tools/list-risks.js +356 -0
- package/dist/tools/list-risks.js.map +1 -0
- package/dist/tools/search-projects.d.ts +90 -0
- package/dist/tools/search-projects.d.ts.map +1 -0
- package/dist/tools/search-projects.js +191 -0
- package/dist/tools/search-projects.js.map +1 -0
- package/dist/utils/formatters.d.ts +12 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +28 -0
- package/dist/utils/formatters.js.map +1 -0
- package/openapi.yaml +194 -0
- package/package.json +68 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_issue
|
|
3
|
+
* Returns full details for a single issue by ID
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Enum conversion: DB integers → human-readable strings
|
|
7
|
+
* - Hasura relationships: returns resolved names instead of IDs
|
|
8
|
+
*/
|
|
9
|
+
import type { HasuraClient } from '../clients/hasura-client.js';
|
|
10
|
+
export type IssueStatus = 'open' | 'closed' | 'resolved';
|
|
11
|
+
export type IssuePriority = 'very_low' | 'low' | 'medium' | 'high' | 'critical';
|
|
12
|
+
export interface GetIssueInput {
|
|
13
|
+
issue_id?: number;
|
|
14
|
+
issue_number?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface IssueDetails {
|
|
17
|
+
id: number;
|
|
18
|
+
issue_id: number;
|
|
19
|
+
name: string;
|
|
20
|
+
description: string | null;
|
|
21
|
+
notes: string | null;
|
|
22
|
+
hyperlinks: string | null;
|
|
23
|
+
status: IssueStatus;
|
|
24
|
+
priority: IssuePriority;
|
|
25
|
+
severity: number;
|
|
26
|
+
areas_of_impact: string | null;
|
|
27
|
+
action_plan: string | null;
|
|
28
|
+
resolution: string | null;
|
|
29
|
+
resolution_date: string | null;
|
|
30
|
+
created_at: string;
|
|
31
|
+
updated_at: string;
|
|
32
|
+
project: {
|
|
33
|
+
id: number;
|
|
34
|
+
name: string;
|
|
35
|
+
} | null;
|
|
36
|
+
owner: {
|
|
37
|
+
id: number;
|
|
38
|
+
name: string;
|
|
39
|
+
} | null;
|
|
40
|
+
}
|
|
41
|
+
export interface GetIssueResult {
|
|
42
|
+
issue: IssueDetails | null;
|
|
43
|
+
}
|
|
44
|
+
export declare function getIssue(input: GetIssueInput, hasuraClient: HasuraClient): Promise<GetIssueResult>;
|
|
45
|
+
export declare const getIssueTool: {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
inputSchema: {
|
|
49
|
+
type: string;
|
|
50
|
+
properties: {
|
|
51
|
+
issue_id: {
|
|
52
|
+
type: string;
|
|
53
|
+
description: string;
|
|
54
|
+
};
|
|
55
|
+
issue_number: {
|
|
56
|
+
type: string;
|
|
57
|
+
description: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=get-issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-issue.d.ts","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAoHD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,cAAc,CAAC,CA2BzB;AAMD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAwCxB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_issue
|
|
3
|
+
* Returns full details for a single issue by ID
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Enum conversion: DB integers → human-readable strings
|
|
7
|
+
* - Hasura relationships: returns resolved names instead of IDs
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Enum Mappings
|
|
11
|
+
// ============================================================================
|
|
12
|
+
const DB_TO_STATUS = {
|
|
13
|
+
0: 'open',
|
|
14
|
+
1: 'closed',
|
|
15
|
+
2: 'resolved'
|
|
16
|
+
};
|
|
17
|
+
const DB_TO_PRIORITY = {
|
|
18
|
+
0: 'very_low',
|
|
19
|
+
1: 'low',
|
|
20
|
+
2: 'medium',
|
|
21
|
+
3: 'high',
|
|
22
|
+
4: 'critical'
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Helper Functions
|
|
26
|
+
// ============================================================================
|
|
27
|
+
function fromDbValue(value, mapping) {
|
|
28
|
+
if (value === null || value === undefined)
|
|
29
|
+
return null;
|
|
30
|
+
return mapping[value] ?? null;
|
|
31
|
+
}
|
|
32
|
+
function transformIssue(raw) {
|
|
33
|
+
return {
|
|
34
|
+
id: raw.id,
|
|
35
|
+
issue_id: raw.issue_id,
|
|
36
|
+
name: raw.name,
|
|
37
|
+
description: raw.description,
|
|
38
|
+
notes: raw.notes,
|
|
39
|
+
hyperlinks: raw.hyperlinks,
|
|
40
|
+
status: fromDbValue(raw.status, DB_TO_STATUS) ?? 'open',
|
|
41
|
+
priority: fromDbValue(raw.priority, DB_TO_PRIORITY) ?? 'low',
|
|
42
|
+
severity: raw.severity ?? 1,
|
|
43
|
+
areas_of_impact: raw.areas_of_impact,
|
|
44
|
+
action_plan: raw.action_plan,
|
|
45
|
+
resolution: raw.resolution,
|
|
46
|
+
resolution_date: raw.resolution_date,
|
|
47
|
+
created_at: raw.created_at,
|
|
48
|
+
updated_at: raw.updated_at,
|
|
49
|
+
project: raw.project,
|
|
50
|
+
owner: raw.company_project_resource
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// GraphQL Query
|
|
55
|
+
// ============================================================================
|
|
56
|
+
const GET_ISSUE_QUERY = `
|
|
57
|
+
query GetIssue($where: issues_bool_exp!) {
|
|
58
|
+
issues(where: $where, limit: 1) {
|
|
59
|
+
id
|
|
60
|
+
issue_id
|
|
61
|
+
name
|
|
62
|
+
description
|
|
63
|
+
notes
|
|
64
|
+
hyperlinks
|
|
65
|
+
status
|
|
66
|
+
priority
|
|
67
|
+
severity
|
|
68
|
+
areas_of_impact
|
|
69
|
+
action_plan
|
|
70
|
+
resolution
|
|
71
|
+
resolution_date
|
|
72
|
+
created_at
|
|
73
|
+
updated_at
|
|
74
|
+
|
|
75
|
+
project { id name }
|
|
76
|
+
company_project_resource { id name }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Main Handler
|
|
82
|
+
// ============================================================================
|
|
83
|
+
export async function getIssue(input, hasuraClient) {
|
|
84
|
+
const { issue_id, issue_number } = input;
|
|
85
|
+
// Validate input
|
|
86
|
+
if (issue_id === undefined && issue_number === undefined) {
|
|
87
|
+
return { issue: null };
|
|
88
|
+
}
|
|
89
|
+
// Build where clause
|
|
90
|
+
let whereClause;
|
|
91
|
+
if (issue_id !== undefined) {
|
|
92
|
+
whereClause = { id: { _eq: issue_id } };
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
whereClause = { issue_id: { _eq: issue_number } };
|
|
96
|
+
}
|
|
97
|
+
const result = await hasuraClient.query(GET_ISSUE_QUERY, {
|
|
98
|
+
where: whereClause
|
|
99
|
+
});
|
|
100
|
+
if (!result.issues || result.issues.length === 0) {
|
|
101
|
+
return { issue: null };
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
issue: transformIssue(result.issues[0])
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Tool Definition
|
|
109
|
+
// ============================================================================
|
|
110
|
+
export const getIssueTool = {
|
|
111
|
+
name: 'get_issue',
|
|
112
|
+
description: `
|
|
113
|
+
Get full details for a single issue by ID.
|
|
114
|
+
|
|
115
|
+
Returns all issue information including:
|
|
116
|
+
- Identifiers: id (database), issue_id (human-readable number within company)
|
|
117
|
+
- Content: name, description, notes, hyperlinks
|
|
118
|
+
- Classification: status, priority, severity (1-5 integer)
|
|
119
|
+
- Action content: areas_of_impact, action_plan, resolution
|
|
120
|
+
- Dates: created_at, updated_at, resolution_date
|
|
121
|
+
- Relationships: project { id, name }, owner { id, name }
|
|
122
|
+
|
|
123
|
+
SEARCH OPTIONS (provide one):
|
|
124
|
+
- issue_id: Database primary key (integer)
|
|
125
|
+
- issue_number: Human-readable issue number within company (e.g., 42)
|
|
126
|
+
|
|
127
|
+
ENUM VALUES:
|
|
128
|
+
- status: "open", "closed", "resolved"
|
|
129
|
+
- priority: "very_low", "low", "medium", "high", "critical"
|
|
130
|
+
- severity: 1-5 (integer, not enum)
|
|
131
|
+
|
|
132
|
+
EXAMPLES:
|
|
133
|
+
- Get by database ID: issue_id: 123
|
|
134
|
+
- Get by issue number: issue_number: 42
|
|
135
|
+
`.trim(),
|
|
136
|
+
inputSchema: {
|
|
137
|
+
type: 'object',
|
|
138
|
+
properties: {
|
|
139
|
+
issue_id: {
|
|
140
|
+
type: 'number',
|
|
141
|
+
description: 'Issue database ID (primary key)'
|
|
142
|
+
},
|
|
143
|
+
issue_number: {
|
|
144
|
+
type: 'number',
|
|
145
|
+
description: 'Human-readable issue number within company'
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=get-issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-issue.js","sourceRoot":"","sources":["../../src/tools/get-issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_lesson_learned
|
|
3
|
+
* Returns full details for a single lesson learned by ID
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Hasura relationships: returns resolved names instead of IDs
|
|
7
|
+
*/
|
|
8
|
+
import type { HasuraClient } from '../clients/hasura-client.js';
|
|
9
|
+
export interface GetLessonLearnedInput {
|
|
10
|
+
lesson_id?: number;
|
|
11
|
+
lesson_number?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface LessonLearnedDetails {
|
|
14
|
+
id: number;
|
|
15
|
+
lesson_id: number;
|
|
16
|
+
description: string | null;
|
|
17
|
+
lesson_learned: string | null;
|
|
18
|
+
impact: string | null;
|
|
19
|
+
recommendation: string | null;
|
|
20
|
+
identified_by: string | null;
|
|
21
|
+
created_at: string;
|
|
22
|
+
updated_at: string;
|
|
23
|
+
project: {
|
|
24
|
+
id: number;
|
|
25
|
+
name: string;
|
|
26
|
+
} | null;
|
|
27
|
+
lifecycle: {
|
|
28
|
+
id: number;
|
|
29
|
+
name: string;
|
|
30
|
+
} | null;
|
|
31
|
+
}
|
|
32
|
+
export interface GetLessonLearnedResult {
|
|
33
|
+
lesson: LessonLearnedDetails | null;
|
|
34
|
+
}
|
|
35
|
+
export declare function getLessonLearned(input: GetLessonLearnedInput, hasuraClient: HasuraClient): Promise<GetLessonLearnedResult>;
|
|
36
|
+
export declare const getLessonLearnedTool: {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: string;
|
|
41
|
+
properties: {
|
|
42
|
+
lesson_id: {
|
|
43
|
+
type: string;
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
lesson_number: {
|
|
47
|
+
type: string;
|
|
48
|
+
description: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=get-lesson-learned.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lesson-learned.d.ts","sourceRoot":"","sources":["../../src/tools/get-lesson-learned.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAG7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAyED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA2BjC;AAMD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAwChC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_lesson_learned
|
|
3
|
+
* Returns full details for a single lesson learned by ID
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Hasura relationships: returns resolved names instead of IDs
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Helper Functions
|
|
10
|
+
// ============================================================================
|
|
11
|
+
function transformLesson(raw) {
|
|
12
|
+
return {
|
|
13
|
+
id: raw.id,
|
|
14
|
+
lesson_id: raw.lesson_id,
|
|
15
|
+
description: raw.description,
|
|
16
|
+
lesson_learned: raw.lesson_learned,
|
|
17
|
+
impact: raw.impact,
|
|
18
|
+
recommendation: raw.recommendation,
|
|
19
|
+
identified_by: raw.identified_by,
|
|
20
|
+
created_at: raw.created_at,
|
|
21
|
+
updated_at: raw.updated_at,
|
|
22
|
+
project: raw.project,
|
|
23
|
+
lifecycle: raw.lifecycle
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// GraphQL Query
|
|
28
|
+
// ============================================================================
|
|
29
|
+
const GET_LESSON_QUERY = `
|
|
30
|
+
query GetLessonLearned($where: project_learned_lessons_bool_exp!) {
|
|
31
|
+
project_learned_lessons(where: $where, limit: 1) {
|
|
32
|
+
id
|
|
33
|
+
lesson_id
|
|
34
|
+
description
|
|
35
|
+
lesson_learned
|
|
36
|
+
impact
|
|
37
|
+
recommendation
|
|
38
|
+
identified_by
|
|
39
|
+
created_at
|
|
40
|
+
updated_at
|
|
41
|
+
|
|
42
|
+
project { id name }
|
|
43
|
+
lifecycle { id name }
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Main Handler
|
|
49
|
+
// ============================================================================
|
|
50
|
+
export async function getLessonLearned(input, hasuraClient) {
|
|
51
|
+
const { lesson_id, lesson_number } = input;
|
|
52
|
+
// Validate input
|
|
53
|
+
if (lesson_id === undefined && lesson_number === undefined) {
|
|
54
|
+
return { lesson: null };
|
|
55
|
+
}
|
|
56
|
+
// Build where clause
|
|
57
|
+
let whereClause;
|
|
58
|
+
if (lesson_id !== undefined) {
|
|
59
|
+
whereClause = { id: { _eq: lesson_id } };
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
whereClause = { lesson_id: { _eq: lesson_number } };
|
|
63
|
+
}
|
|
64
|
+
const result = await hasuraClient.query(GET_LESSON_QUERY, {
|
|
65
|
+
where: whereClause
|
|
66
|
+
});
|
|
67
|
+
if (!result.project_learned_lessons || result.project_learned_lessons.length === 0) {
|
|
68
|
+
return { lesson: null };
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
lesson: transformLesson(result.project_learned_lessons[0])
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Tool Definition
|
|
76
|
+
// ============================================================================
|
|
77
|
+
export const getLessonLearnedTool = {
|
|
78
|
+
name: 'get_lesson_learned',
|
|
79
|
+
description: `
|
|
80
|
+
Get full details for a single lesson learned by ID.
|
|
81
|
+
|
|
82
|
+
Returns all lesson learned information including:
|
|
83
|
+
- Identifiers: id (database), lesson_id (human-readable number within company)
|
|
84
|
+
- Content: description, lesson_learned (main content), impact, recommendation
|
|
85
|
+
- Who identified: identified_by (text field with person's name)
|
|
86
|
+
- Dates: created_at, updated_at
|
|
87
|
+
- Relationships: project { id, name }, lifecycle { id, name } (project phase)
|
|
88
|
+
|
|
89
|
+
SEARCH OPTIONS (provide one):
|
|
90
|
+
- lesson_id: Database primary key (integer)
|
|
91
|
+
- lesson_number: Human-readable lesson number within company (e.g., 15)
|
|
92
|
+
|
|
93
|
+
CONTENT FIELDS:
|
|
94
|
+
- description: Brief summary of the situation
|
|
95
|
+
- lesson_learned: The main lesson/insight gained
|
|
96
|
+
- impact: What impact this had on the project
|
|
97
|
+
- recommendation: Suggested actions for future projects
|
|
98
|
+
|
|
99
|
+
EXAMPLES:
|
|
100
|
+
- Get by database ID: lesson_id: 123
|
|
101
|
+
- Get by lesson number: lesson_number: 15
|
|
102
|
+
`.trim(),
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
lesson_id: {
|
|
107
|
+
type: 'number',
|
|
108
|
+
description: 'Lesson database ID (primary key)'
|
|
109
|
+
},
|
|
110
|
+
lesson_number: {
|
|
111
|
+
type: 'number',
|
|
112
|
+
description: 'Human-readable lesson number within company'
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=get-lesson-learned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lesson-learned.js","sourceRoot":"","sources":["../../src/tools/get-lesson-learned.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmCH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,eAAe,CAAC,GAAc;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,aAAa,EAAE,GAAG,CAAC,aAAa;QAEhC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAE1B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAwBD,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;CAiBxB,CAAC;AAEF,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA4B,EAC5B,YAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAE3C,iBAAiB;IACjB,IAAI,SAAS,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,qBAAqB;IACrB,IAAI,WAAoC,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,WAAW,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAc,gBAAgB,EAAE;QACrE,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;GAuBZ,CAAC,IAAI,EAAE;IAER,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;aAChD;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_lookup_values
|
|
3
|
+
* Returns all values for a lookup table (departments, categories, etc.)
|
|
4
|
+
*
|
|
5
|
+
* Use this when:
|
|
6
|
+
* - User asks "what departments exist?"
|
|
7
|
+
* - User wants to filter by department name but needs the ID
|
|
8
|
+
* - User wants to compare projects across departments/categories
|
|
9
|
+
*/
|
|
10
|
+
import type { HasuraClient } from '../clients/hasura-client.js';
|
|
11
|
+
export type LookupTableName = 'departments' | 'categories' | 'strategic_objectives' | 'lifecycles' | 'project_priorities' | 'portfolios';
|
|
12
|
+
export interface GetLookupValuesInput {
|
|
13
|
+
table: LookupTableName;
|
|
14
|
+
}
|
|
15
|
+
export interface LookupValue {
|
|
16
|
+
id: number;
|
|
17
|
+
name: string;
|
|
18
|
+
description?: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface GetLookupValuesResult {
|
|
21
|
+
table: LookupTableName;
|
|
22
|
+
values: LookupValue[];
|
|
23
|
+
count: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function getLookupValues(input: GetLookupValuesInput, hasuraClient: HasuraClient): Promise<GetLookupValuesResult>;
|
|
26
|
+
export declare const getLookupValuesTool: {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: string;
|
|
31
|
+
properties: {
|
|
32
|
+
table: {
|
|
33
|
+
type: string;
|
|
34
|
+
enum: string[];
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
required: string[];
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=get-lookup-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lookup-values.d.ts","sourceRoot":"","sources":["../../src/tools/get-lookup-values.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,YAAY,GACZ,sBAAsB,GACtB,YAAY,GACZ,oBAAoB,GACpB,YAAY,CAAC;AAEjB,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AA8DD,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAuBhC;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CAqC/B,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_lookup_values
|
|
3
|
+
* Returns all values for a lookup table (departments, categories, etc.)
|
|
4
|
+
*
|
|
5
|
+
* Use this when:
|
|
6
|
+
* - User asks "what departments exist?"
|
|
7
|
+
* - User wants to filter by department name but needs the ID
|
|
8
|
+
* - User wants to compare projects across departments/categories
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// GraphQL Queries
|
|
12
|
+
// ============================================================================
|
|
13
|
+
const QUERIES = {
|
|
14
|
+
departments: `
|
|
15
|
+
query GetDepartments {
|
|
16
|
+
departments(order_by: { name: asc }) {
|
|
17
|
+
id
|
|
18
|
+
name
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
`,
|
|
22
|
+
categories: `
|
|
23
|
+
query GetCategories {
|
|
24
|
+
categories(order_by: { name: asc }) {
|
|
25
|
+
id
|
|
26
|
+
name
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
`,
|
|
30
|
+
strategic_objectives: `
|
|
31
|
+
query GetStrategicObjectives {
|
|
32
|
+
strategic_objectives(order_by: { name: asc }) {
|
|
33
|
+
id
|
|
34
|
+
name
|
|
35
|
+
description
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`,
|
|
39
|
+
lifecycles: `
|
|
40
|
+
query GetLifecycles {
|
|
41
|
+
lifecycles(order_by: { order: asc }) {
|
|
42
|
+
id
|
|
43
|
+
name
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
`,
|
|
47
|
+
project_priorities: `
|
|
48
|
+
query GetProjectPriorities {
|
|
49
|
+
project_priorities(order_by: { order: asc }) {
|
|
50
|
+
id
|
|
51
|
+
name
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
`,
|
|
55
|
+
portfolios: `
|
|
56
|
+
query GetPortfolios {
|
|
57
|
+
portfolios(order_by: { name: asc }) {
|
|
58
|
+
id
|
|
59
|
+
name
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
`
|
|
63
|
+
};
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Main Handler
|
|
66
|
+
// ============================================================================
|
|
67
|
+
export async function getLookupValues(input, hasuraClient) {
|
|
68
|
+
const { table } = input;
|
|
69
|
+
// Validate table name
|
|
70
|
+
if (!QUERIES[table]) {
|
|
71
|
+
return {
|
|
72
|
+
table,
|
|
73
|
+
values: [],
|
|
74
|
+
count: 0
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const query = QUERIES[table];
|
|
78
|
+
const result = await hasuraClient.query(query, {});
|
|
79
|
+
// Extract values from result (key is the table name)
|
|
80
|
+
const values = result[table] || [];
|
|
81
|
+
return {
|
|
82
|
+
table,
|
|
83
|
+
values,
|
|
84
|
+
count: values.length
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// Tool Definition
|
|
89
|
+
// ============================================================================
|
|
90
|
+
export const getLookupValuesTool = {
|
|
91
|
+
name: 'get_lookup_values',
|
|
92
|
+
description: `
|
|
93
|
+
Get all values for a lookup table. Use this when you need to:
|
|
94
|
+
- See what options exist (e.g., "what departments are there?")
|
|
95
|
+
- Find an ID for filtering (e.g., user says "Engineering department" → get ID to filter)
|
|
96
|
+
- Compare or analyze data across categories
|
|
97
|
+
|
|
98
|
+
AVAILABLE TABLES:
|
|
99
|
+
- "departments" - Organizational departments (e.g., Engineering, Marketing)
|
|
100
|
+
- "categories" - Project categories (e.g., Infrastructure, Innovation)
|
|
101
|
+
- "strategic_objectives" - Company strategic goals (includes description)
|
|
102
|
+
- "lifecycles" - Project phases/stages (e.g., Planning, Execution, Closure)
|
|
103
|
+
- "project_priorities" - Priority levels for projects (e.g., High, Medium, Low)
|
|
104
|
+
- "portfolios" - Project portfolios for grouping projects
|
|
105
|
+
|
|
106
|
+
RETURNS:
|
|
107
|
+
Array of { id, name } objects (strategic_objectives also has description)
|
|
108
|
+
|
|
109
|
+
EXAMPLES:
|
|
110
|
+
- "What departments exist?" → table: "departments"
|
|
111
|
+
- "Show me all project categories" → table: "categories"
|
|
112
|
+
- "What are the strategic objectives?" → table: "strategic_objectives"
|
|
113
|
+
- "List project lifecycle phases" → table: "lifecycles"
|
|
114
|
+
`.trim(),
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {
|
|
118
|
+
table: {
|
|
119
|
+
type: 'string',
|
|
120
|
+
enum: ['departments', 'categories', 'strategic_objectives', 'lifecycles', 'project_priorities', 'portfolios'],
|
|
121
|
+
description: 'The lookup table to get values from'
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
required: ['table']
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=get-lookup-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lookup-values.js","sourceRoot":"","sources":["../../src/tools/get-lookup-values.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,OAAO,GAAoC;IAC/C,WAAW,EAAE;;;;;;;GAOZ;IACD,UAAU,EAAE;;;;;;;GAOX;IACD,oBAAoB,EAAE;;;;;;;;GAQrB;IACD,UAAU,EAAE;;;;;;;GAOX;IACD,kBAAkB,EAAE;;;;;;;GAOnB;IACD,UAAU,EAAE;;;;;;;GAOX;CACF,CAAC;AAEF,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA2B,EAC3B,YAA0B;IAE1B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,sBAAsB;IACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,KAAK;YACL,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC;SACT,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAgC,KAAK,EAAE,EAAE,CAAC,CAAC;IAElF,qDAAqD;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAEnC,OAAO;QACL,KAAK;QACL,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;GAsBZ,CAAC,IAAI,EAAE;IAER,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,CAAC;gBAC7G,WAAW,EAAE,qCAAqC;aACnD;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAC"}
|