@itm-platform/mcp-server 1.0.6 → 1.0.10

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 CHANGED
@@ -90,7 +90,7 @@ The MCP server authenticates as you, calls ITM Platform APIs, and returns only t
90
90
 
91
91
  ## Capabilities
92
92
 
93
- The server exposes 23 MCP tools, 6 resources, and 4 prompt templates.
93
+ The server exposes 27 MCP tools, 6 resources, and 4 prompt templates.
94
94
 
95
95
  ### Read Tools
96
96
 
@@ -106,6 +106,8 @@ The server exposes 23 MCP tools, 6 resources, and 4 prompt templates.
106
106
  | `get_project_revenues` | List revenue items for a project with pagination |
107
107
  | `get_project_risks` | List project risks with pagination |
108
108
  | `get_project_issues` | List project issues with pagination |
109
+ | `list_task_progress` | List the progress (follow-up) history for a task |
110
+ | `get_project_progress` | Get project progress report: expected, baseline, and actual curves |
109
111
  | `list_service_activities` | List activities for a service with pagination |
110
112
  | `get_service_purchases` | List purchase orders for a service with pagination |
111
113
  | `get_service_revenues` | List revenue items for a service with pagination |
@@ -119,13 +121,16 @@ The server exposes 23 MCP tools, 6 resources, and 4 prompt templates.
119
121
 
120
122
  | Tool | What it does |
121
123
  |------|--------------|
122
- | `create_task` | Add a task to a project |
123
- | `update_task` | Update task fields such as status, dates, assignee, and progress |
124
+ | `create_task` | Add a task; Waterfall projects require status, start date, and end date, while Kanban uses board defaults |
125
+ | `update_task` | Update task fields such as status, dates, and assignee |
126
+ | `create_task_progress` | Report progress on a task (percentage, assessment, notes) with full side effects |
127
+ | `update_task_progress` | Update an existing task progress entry |
124
128
  | `create_risk` | Log a project risk |
125
- | `create_issue` | Log a project issue |
129
+ | `create_issue` | Log a project issue with a required issue type and status |
126
130
  | `update_project` | Update project fields such as name, status, dates, and priority |
127
131
 
128
132
  Write operations confirm the saved state from the ITM Platform REST API. DataMart-backed search results may take up to 60 seconds to reflect recent writes.
133
+ Validation failures include the actionable message returned by REST instead of only the HTTP status.
129
134
 
130
135
  ### Resources and Prompts
131
136
 
@@ -233,6 +238,8 @@ If tools do not appear in your AI client, confirm that the server configuration
233
238
 
234
239
  If authentication fails, regenerate your API key or reconnect the OAuth server so your client receives a fresh token.
235
240
 
241
+ OAuth sessions automatically retry once on a downstream 401 by re-exchanging the OAuth bearer token for a fresh session token. This handles cases where the session token is invalidated externally (e.g. by a concurrent browser login). If 401 errors persist, the OAuth bearer token itself has likely expired and the AI client needs to re-authenticate.
242
+
236
243
  If a write succeeds but a later search shows old data, wait up to 60 seconds. Writes are confirmed from the REST API immediately, while DataMart search indexes update asynchronously.
237
244
 
238
245
  ## More Help
@@ -1 +1 @@
1
- {"version":3,"file":"effective-user-context.d.ts","sourceRoot":"","sources":["../../src/auth/effective-user-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,aAE3B,CAAC;AAEH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG1E"}
1
+ {"version":3,"file":"effective-user-context.d.ts","sourceRoot":"","sources":["../../src/auth/effective-user-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,aAG3B,CAAC;AAEH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG1E"}
@@ -1,5 +1,6 @@
1
1
  export const WRITE_TOOL_NAMES = new Set([
2
2
  'create_task', 'update_task', 'create_risk', 'create_issue', 'update_project',
3
+ 'create_task_progress', 'update_task_progress',
3
4
  ]);
4
5
  export function hasScope(ctx, scope) {
5
6
  if (!ctx.grantedScopes)
@@ -1 +1 @@
1
- {"version":3,"file":"effective-user-context.js","sourceRoot":"","sources":["../../src/auth/effective-user-context.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB;CAC9E,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,GAAyB,EAAE,KAAa;IAC/D,IAAI,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"effective-user-context.js","sourceRoot":"","sources":["../../src/auth/effective-user-context.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB;IAC7E,sBAAsB,EAAE,sBAAsB;CAC/C,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,GAAyB,EAAE,KAAa;IAC/D,IAAI,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Logger } from 'pino';
2
+ import type { OAuthConfig } from './oauth-auth.js';
3
+ export declare function createTokenRefreshCallback(getOAuthToken: () => string | undefined, exchangeConfig: OAuthConfig, authHeaders: Record<string, string>, setExpiresAt: (ms: number) => void, log?: Logger): () => Promise<void>;
4
+ //# sourceMappingURL=token-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-refresh.d.ts","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,EACvC,cAAc,EAAE,WAAW,EAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAClC,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,OAAO,CAAC,IAAI,CAAC,CA2BrB"}
@@ -0,0 +1,28 @@
1
+ import { exchangeToken } from './oauth-auth.js';
2
+ export function createTokenRefreshCallback(getOAuthToken, exchangeConfig, authHeaders, setExpiresAt, log) {
3
+ let inflight = null;
4
+ return () => {
5
+ if (inflight)
6
+ return inflight;
7
+ inflight = (async () => {
8
+ const oauthToken = getOAuthToken();
9
+ if (!oauthToken) {
10
+ throw new Error('No OAuth token available for re-exchange');
11
+ }
12
+ try {
13
+ const result = await exchangeToken(oauthToken, exchangeConfig, log);
14
+ authHeaders['Token'] = result.sessionToken;
15
+ setExpiresAt(new Date(result.expiresAt).getTime());
16
+ log?.info('Session token re-exchanged after 401');
17
+ }
18
+ catch (err) {
19
+ log?.warn({ err }, 'Token re-exchange failed');
20
+ throw err;
21
+ }
22
+ })().finally(() => {
23
+ inflight = null;
24
+ });
25
+ return inflight;
26
+ };
27
+ }
28
+ //# sourceMappingURL=token-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-refresh.js","sourceRoot":"","sources":["../../src/auth/token-refresh.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,0BAA0B,CACxC,aAAuC,EACvC,cAA2B,EAC3B,WAAmC,EACnC,YAAkC,EAClC,GAAY;IAEZ,IAAI,QAAQ,GAAyB,IAAI,CAAC;IAE1C,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;gBACpE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;gBAC3C,YAAY,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,GAAG,EAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBAC/C,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -4,6 +4,7 @@ export interface DataMartClientConfig {
4
4
  company: string;
5
5
  authHeaders: Record<string, string>;
6
6
  log?: Logger;
7
+ onUnauthorized?: () => Promise<void>;
7
8
  }
8
9
  export interface DataMartQuery {
9
10
  query: string;
@@ -1 +1 @@
1
- {"version":3,"file":"datamart-client.d.ts","sourceRoot":"","sources":["../../src/clients/datamart-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAmCjF"}
1
+ {"version":3,"file":"datamart-client.d.ts","sourceRoot":"","sources":["../../src/clients/datamart-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAiDjF"}
@@ -6,15 +6,29 @@ export function createDataMartClient(config) {
6
6
  async query(body) {
7
7
  const requestId = randomUUID();
8
8
  const start = Date.now();
9
- const response = await fetch(baseUrl, {
9
+ const buildHeaders = () => ({
10
+ ...config.authHeaders,
11
+ 'Content-Type': 'application/json',
12
+ 'X-Request-Id': requestId,
13
+ });
14
+ let response = await fetch(baseUrl, {
10
15
  method: 'POST',
11
- headers: {
12
- ...config.authHeaders,
13
- 'Content-Type': 'application/json',
14
- 'X-Request-Id': requestId,
15
- },
16
+ headers: buildHeaders(),
16
17
  body: JSON.stringify(body),
17
18
  });
19
+ if (response.status === 401 && config.onUnauthorized) {
20
+ try {
21
+ await config.onUnauthorized();
22
+ response = await fetch(baseUrl, {
23
+ method: 'POST',
24
+ headers: buildHeaders(),
25
+ body: JSON.stringify(body),
26
+ });
27
+ }
28
+ catch {
29
+ // re-exchange failed; fall through to the error below
30
+ }
31
+ }
18
32
  if (!response.ok) {
19
33
  log?.error({ requestId, status: response.status, ms: Date.now() - start }, 'DataMart request failed');
20
34
  throw new Error(`DataMart request failed: ${response.status} ${response.statusText}`);
@@ -1 +1 @@
1
- {"version":3,"file":"datamart-client.js","sourceRoot":"","sources":["../../src/clients/datamart-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmBzC,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,OAAO,mBAAmB,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAEvB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAmB;YAC7B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;gBACpC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,GAAG,MAAM,CAAC,WAAW;oBACrB,cAAc,EAAE,kBAAkB;oBAClC,cAAc,EAAE,SAAS;iBAC1B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACtG,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6E,CAAC;YAE9G,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxB,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;gBAClH,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"datamart-client.js","sourceRoot":"","sources":["../../src/clients/datamart-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBzC,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,OAAO,mBAAmB,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAEvB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAmB;YAC7B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC;gBAC1B,GAAG,MAAM,CAAC,WAAW;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,cAAc,EAAE,SAAS;aAC1B,CAAC,CAAC;YAEH,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;oBAC9B,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;wBAC9B,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,YAAY,EAAE;wBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,sDAAsD;gBACxD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACtG,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6E,CAAC;YAE9G,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxB,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;gBAClH,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,6 +7,7 @@ export interface ClientConfig {
7
7
  company: string;
8
8
  authHeaders: Record<string, string>;
9
9
  log?: Logger;
10
+ onUnauthorized?: () => Promise<void>;
10
11
  }
11
12
  export interface Clients {
12
13
  datamart: DataMartClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAMhF;AAED,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAMhF;AAED,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAoB,MAAM,mBAAmB,CAAC;AAe5E,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,KAAmB;IACrE,OAAO;QACL,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAC9B,KAAK,EAAE,KAAK,IAAI,qBAAqB,EAAE;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAoB,MAAM,mBAAmB,CAAC;AAgB5E,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,KAAmB;IACrE,OAAO;QACL,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAC9B,KAAK,EAAE,KAAK,IAAI,qBAAqB,EAAE;KACxC,CAAC;AACJ,CAAC"}
@@ -4,6 +4,7 @@ export interface RestClientConfig {
4
4
  company: string;
5
5
  authHeaders: Record<string, string>;
6
6
  log?: Logger;
7
+ onUnauthorized?: () => Promise<void>;
7
8
  }
8
9
  export interface RestClient {
9
10
  get(path: string): Promise<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../src/clients/rest-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAgCrE"}
1
+ {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../src/clients/rest-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AA2CD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA4CrE"}
@@ -1,20 +1,71 @@
1
+ const MAX_ERROR_DETAIL_LENGTH = 2000;
2
+ function normalizeErrorDetail(value) {
3
+ if (typeof value !== 'string')
4
+ return undefined;
5
+ const normalized = value
6
+ .replace(/<br\s*\/?>/gi, ' ')
7
+ .replace(/<[^>]+>/g, ' ')
8
+ .replace(/\s+/g, ' ')
9
+ .trim();
10
+ if (!normalized)
11
+ return undefined;
12
+ return normalized.slice(0, MAX_ERROR_DETAIL_LENGTH);
13
+ }
14
+ function detailFromJson(value) {
15
+ if (typeof value === 'string')
16
+ return normalizeErrorDetail(value);
17
+ if (value === null || typeof value !== 'object')
18
+ return undefined;
19
+ const record = value;
20
+ for (const key of ['StatusMessage', 'statusMessage', 'Message', 'message', 'error', 'title']) {
21
+ const detail = normalizeErrorDetail(record[key]);
22
+ if (detail)
23
+ return detail;
24
+ }
25
+ return undefined;
26
+ }
27
+ async function readErrorDetail(response) {
28
+ if (typeof response.text !== 'function')
29
+ return undefined;
30
+ const text = await response.text().catch(() => '');
31
+ if (!text)
32
+ return undefined;
33
+ try {
34
+ return detailFromJson(JSON.parse(text)) ?? normalizeErrorDetail(text);
35
+ }
36
+ catch {
37
+ return normalizeErrorDetail(text);
38
+ }
39
+ }
1
40
  export function createRestClient(config) {
2
41
  const baseUrl = `${config.apiUrl}/v2/${config.company}`;
3
42
  const log = config.log;
4
43
  async function request(method, path, body) {
5
44
  const start = Date.now();
6
- const headers = {
45
+ const buildHeaders = () => ({
7
46
  ...config.authHeaders,
8
47
  'Content-Type': 'application/json',
9
- };
10
- const response = await fetch(`${baseUrl}/${path}`, {
48
+ });
49
+ const buildFetchOpts = () => ({
11
50
  method,
12
- headers,
51
+ headers: buildHeaders(),
13
52
  ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
14
53
  });
54
+ let response = await fetch(`${baseUrl}/${path}`, buildFetchOpts());
55
+ if (response.status === 401 && config.onUnauthorized) {
56
+ try {
57
+ await config.onUnauthorized();
58
+ response = await fetch(`${baseUrl}/${path}`, buildFetchOpts());
59
+ }
60
+ catch {
61
+ // re-exchange failed; fall through to the error below
62
+ }
63
+ }
15
64
  if (!response.ok) {
16
- log?.error({ method, path, status: response.status, ms: Date.now() - start }, 'REST request failed');
17
- throw new Error(`REST request failed: ${response.status} ${response.statusText}`);
65
+ const detail = await readErrorDetail(response);
66
+ log?.error({ method, path, status: response.status, detail, ms: Date.now() - start }, 'REST request failed');
67
+ const detailSuffix = detail ? ` -- ${detail}` : '';
68
+ throw new Error(`REST request failed: ${response.status} ${response.statusText}${detailSuffix}`);
18
69
  }
19
70
  const result = await response.json();
20
71
  log?.debug({ method, path, ms: Date.now() - start }, 'REST request OK');
@@ -1 +1 @@
1
- {"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../src/clients/rest-client.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAEvB,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,OAAO,GAA2B;YACtC,GAAG,MAAM,CAAC,WAAW;YACrB,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,EAAE;YACjD,MAAM;YACN,OAAO;YACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QAC3C,IAAI,EAAE,CAAC,IAAY,EAAE,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAClE,KAAK,EAAE,CAAC,IAAY,EAAE,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../src/clients/rest-client.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -11,6 +11,7 @@ import { registerServiceTools } from './tools/services.js';
11
11
  import { registerTaskTools } from './tools/tasks.js';
12
12
  import { registerFinancialTools } from './tools/financials.js';
13
13
  import { registerRisksIssuesTools } from './tools/risks-issues.js';
14
+ import { registerProgressTools } from './tools/progress.js';
14
15
  import { registerPortfolioTools } from './tools/portfolio.js';
15
16
  import { registerDataMartTool } from './tools/datamart.js';
16
17
  import { registerUserTools } from './tools/users.js';
@@ -26,6 +27,7 @@ import { buildProtectedResourceMetadata, buildResourceMetadataUrl } from './auth
26
27
  import { resolveRoute } from './gateway.js';
27
28
  import { extractBearerToken } from './auth/token-extraction.js';
28
29
  import { exchangeToken, buildEffectiveUserContextFromExchange } from './auth/oauth-auth.js';
30
+ import { createTokenRefreshCallback } from './auth/token-refresh.js';
29
31
  import { createAuditClient } from './clients/audit-client.js';
30
32
  import { hasScope } from './auth/effective-user-context.js';
31
33
  import { isAuditEnabled } from './audit-config.js';
@@ -40,6 +42,7 @@ function createMcpServer(clients, writeCtx, userContext) {
40
42
  registerTaskTools(server, clients);
41
43
  registerFinancialTools(server, clients);
42
44
  registerRisksIssuesTools(server, clients);
45
+ registerProgressTools(server, clients, userContext);
43
46
  registerPortfolioTools(server, clients);
44
47
  registerDataMartTool(server, clients);
45
48
  registerUserTools(server, clients);
@@ -55,7 +58,7 @@ function createMcpServer(clients, writeCtx, userContext) {
55
58
  registerRiskAnalysisPrompt(server);
56
59
  return server;
57
60
  }
58
- function buildClientsForUser(userContext) {
61
+ function buildClientsForUser(userContext, onUnauthorized) {
59
62
  const auditEnabled = isAuditEnabled();
60
63
  const audit = auditEnabled
61
64
  ? createAuditClient({
@@ -70,6 +73,7 @@ function buildClientsForUser(userContext) {
70
73
  company: userContext.company,
71
74
  authHeaders: userContext.authHeaders,
72
75
  log,
76
+ onUnauthorized,
73
77
  }, audit);
74
78
  }
75
79
  async function main() {
@@ -147,14 +151,17 @@ async function main() {
147
151
  if (sessionId && sessions.has(sessionId)) {
148
152
  const session = sessions.get(sessionId);
149
153
  transport = session.transport;
150
- if (oauthConfig && session.authHeaders && session.tokenExpiresAt
151
- && Date.now() >= session.tokenExpiresAt - 30_000) {
152
- const freshOAuthToken = extractBearerToken(req.headers);
154
+ const freshOAuthToken = extractBearerToken(req.headers);
155
+ if (freshOAuthToken && session.tokenState) {
156
+ session.tokenState.oauthToken = freshOAuthToken;
157
+ }
158
+ if (oauthConfig && session.authHeaders && session.tokenState
159
+ && Date.now() >= session.tokenState.tokenExpiresAt - 30_000) {
153
160
  if (freshOAuthToken) {
154
161
  try {
155
162
  const refreshed = await exchangeToken(freshOAuthToken, oauthConfig, log);
156
163
  session.authHeaders['Token'] = refreshed.sessionToken;
157
- session.tokenExpiresAt = new Date(refreshed.expiresAt).getTime();
164
+ session.tokenState.tokenExpiresAt = new Date(refreshed.expiresAt).getTime();
158
165
  log.info({ sessionId }, 'Session token refreshed');
159
166
  }
160
167
  catch (err) {
@@ -166,7 +173,7 @@ async function main() {
166
173
  else if (!sessionId && parsed.method === 'initialize') {
167
174
  let sessionUserContext;
168
175
  let sessionClients;
169
- let tokenExpiresAt;
176
+ let tokenState;
170
177
  const aiClientId = parsed.params?.clientInfo?.name ?? 'unknown';
171
178
  if (oauthConfig) {
172
179
  const oauthToken = extractBearerToken(req.headers);
@@ -182,8 +189,12 @@ async function main() {
182
189
  try {
183
190
  const exchangeResult = await exchangeToken(oauthToken, oauthConfig, log);
184
191
  sessionUserContext = buildEffectiveUserContextFromExchange(exchangeResult);
185
- sessionClients = buildClientsForUser(sessionUserContext);
186
- tokenExpiresAt = new Date(exchangeResult.expiresAt).getTime();
192
+ tokenState = {
193
+ oauthToken,
194
+ tokenExpiresAt: new Date(exchangeResult.expiresAt).getTime(),
195
+ };
196
+ const onUnauthorized = createTokenRefreshCallback(() => tokenState.oauthToken, oauthConfig, sessionUserContext.authHeaders, (ms) => { tokenState.tokenExpiresAt = ms; }, log);
197
+ sessionClients = buildClientsForUser(sessionUserContext, onUnauthorized);
187
198
  log.info({ userId: sessionUserContext.userId, email: sessionUserContext.email }, 'Per-session auth resolved');
188
199
  }
189
200
  catch (err) {
@@ -221,7 +232,7 @@ async function main() {
221
232
  sessions.set(transport.sessionId, {
222
233
  server, transport,
223
234
  authHeaders: oauthConfig ? sessionUserContext.authHeaders : undefined,
224
- tokenExpiresAt,
235
+ tokenState,
225
236
  });
226
237
  log.debug({ sessionId: transport.sessionId, aiClientId }, 'Session created');
227
238
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Clients } from '../clients/index.js';
3
+ import { type EffectiveUserContext } from '../auth/effective-user-context.js';
4
+ import { type VerificationField } from './write-tools.js';
5
+ type JsonRecord = Record<string, unknown>;
6
+ export declare const TASK_PROGRESS_VERIFICATION_FIELDS: VerificationField[];
7
+ export declare function splitCreateTaskProgressArgs(args: {
8
+ projectId: number;
9
+ taskId: number;
10
+ [key: string]: unknown;
11
+ }): {
12
+ path: string;
13
+ body: JsonRecord;
14
+ };
15
+ export declare function splitUpdateTaskProgressArgs(args: {
16
+ projectId: number;
17
+ taskId: number;
18
+ progressId: number;
19
+ [key: string]: unknown;
20
+ }): {
21
+ path: string;
22
+ body: JsonRecord;
23
+ };
24
+ export declare function registerProgressTools(server: McpServer, clients: Clients, effectiveUserContext?: EffectiveUserContext): void;
25
+ export {};
26
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/tools/progress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAY,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,EAMhE,CAAC;AAoBF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;EAO9G;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;EAQlI;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,IAAI,CAoFN"}
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ import { hasScope } from '../auth/effective-user-context.js';
3
+ import { buildInsufficientScopeResponse, buildWriteResponse, extractResponseId, verifyRequestedFields, } from './write-tools.js';
4
+ export const TASK_PROGRESS_VERIFICATION_FIELDS = [
5
+ { requestField: 'Percentage', readPaths: ['Percentage'] },
6
+ { requestField: 'AssessmentId', readPaths: ['AssessmentId'] },
7
+ { requestField: 'ShortDescription', readPaths: ['ShortDescription'] },
8
+ { requestField: 'Description', readPaths: ['Description'] },
9
+ { requestField: 'ReportDate', readPaths: ['ReportDate'] },
10
+ ];
11
+ const PROGRESS_FIELD_MAP = [
12
+ ['reportDate', 'ReportDate'],
13
+ ['percentage', 'Percentage'],
14
+ ['assessmentId', 'AssessmentId'],
15
+ ['shortDescription', 'ShortDescription'],
16
+ ['description', 'Description'],
17
+ ];
18
+ function mapProgressFields(source) {
19
+ const body = {};
20
+ for (const [input, restField] of PROGRESS_FIELD_MAP) {
21
+ if (Object.prototype.hasOwnProperty.call(source, input) && source[input] !== undefined) {
22
+ body[restField] = source[input];
23
+ }
24
+ }
25
+ return body;
26
+ }
27
+ export function splitCreateTaskProgressArgs(args) {
28
+ const { projectId, taskId, ...rest } = args;
29
+ const body = mapProgressFields(rest);
30
+ // The web UI always sends AutoProjectFollowUp; without it a task progress
31
+ // entry would not cascade to project-level progress.
32
+ body.AutoProjectFollowUp = true;
33
+ return { path: `projects/${projectId}/tasks/${taskId}/progress`, body };
34
+ }
35
+ export function splitUpdateTaskProgressArgs(args) {
36
+ const { projectId, taskId, progressId, ...rest } = args;
37
+ const body = mapProgressFields(rest);
38
+ if (!Object.keys(body).length) {
39
+ throw new Error('update_task_progress requires at least one field to change (reportDate, percentage, assessmentId, shortDescription, or description)');
40
+ }
41
+ body.AutoProjectFollowUp = true;
42
+ return { path: `projects/${projectId}/tasks/${taskId}/progress/${progressId}`, body };
43
+ }
44
+ export function registerProgressTools(server, clients, effectiveUserContext) {
45
+ server.registerTool('list_task_progress', {
46
+ description: 'List the progress (seguimiento/follow-up) history for a task, newest first. Each entry contains TaskFollowUpId, Percentage, AssessmentId, ShortDescription, Description, ReportDate, CreatedBy, IsCompleted. Task progress is a time-series of entries, not a single field on the task; this is why update_task rejects PercentComplete.',
47
+ inputSchema: {
48
+ projectId: z.number().describe('The project ID containing the task'),
49
+ taskId: z.number().describe('The task ID to list progress entries for'),
50
+ },
51
+ }, async (args) => {
52
+ const data = await clients.rest.get(`projects/${args.projectId}/tasks/${args.taskId}/progress`);
53
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
54
+ });
55
+ server.registerTool('get_project_progress', {
56
+ description: 'Get the project progress report: the expected progress curve (from task dates and working days), the baseline expected curve, and the historical follow-up entries (date + percentage). Useful to compare planned vs actual progress.',
57
+ inputSchema: {
58
+ projectId: z.number().describe('The project ID to get the progress report for'),
59
+ },
60
+ }, async (args) => {
61
+ const data = await clients.rest.get(`projects/${args.projectId}/progressreports`);
62
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
63
+ });
64
+ if (effectiveUserContext && !hasScope(effectiveUserContext, 'mcp:write')) {
65
+ return;
66
+ }
67
+ server.registerTool('create_task_progress', {
68
+ description: 'Report progress on a task by creating a new progress (seguimiento/follow-up) entry. This is the correct way to set a task\'s completion percentage: it triggers task status transitions (100% completes the task, dropping below 100% reopens it), parent task rollups, automatic project progress, events, and notifications. Use get_reference_data with entity "assessments" to discover valid assessmentId values. Returns the created entry read back from v2 REST.',
69
+ inputSchema: {
70
+ projectId: z.number().describe('The project ID containing the task'),
71
+ taskId: z.number().describe('The task ID to report progress on'),
72
+ reportDate: z.string().describe('Report date (ISO 8601, e.g. 2026-07-13)'),
73
+ percentage: z.number().int().min(0).max(100).describe('Progress percentage completed, 0-100'),
74
+ assessmentId: z.number().describe('Assessment rating ID (required). Discover valid values with get_reference_data entity "assessments"'),
75
+ shortDescription: z.string().describe('Brief progress summary (required)'),
76
+ description: z.string().optional().describe('Detailed progress notes'),
77
+ },
78
+ }, async (args) => {
79
+ if (effectiveUserContext && !hasScope(effectiveUserContext, 'mcp:write'))
80
+ return buildInsufficientScopeResponse();
81
+ const { path, body } = splitCreateTaskProgressArgs(args);
82
+ const data = await clients.rest.post(path, body);
83
+ const progressId = extractResponseId(data, 'created task progress');
84
+ const readback = await clients.rest.get(`${path}/${progressId}`);
85
+ verifyRequestedFields(body, readback, TASK_PROGRESS_VERIFICATION_FIELDS, 'create_task_progress');
86
+ return buildWriteResponse(readback);
87
+ });
88
+ server.registerTool('update_task_progress', {
89
+ description: 'Update an existing task progress (seguimiento/follow-up) entry via PATCH. Only send the fields you want to change. Use list_task_progress to find the progressId. Returns the updated entry read back from v2 REST.',
90
+ inputSchema: {
91
+ projectId: z.number().describe('The project ID containing the task'),
92
+ taskId: z.number().describe('The task ID the progress entry belongs to'),
93
+ progressId: z.number().describe('The progress entry ID to update (TaskFollowUpId from list_task_progress)'),
94
+ reportDate: z.string().optional().describe('New report date (ISO 8601)'),
95
+ percentage: z.number().int().min(0).max(100).optional().describe('New progress percentage, 0-100'),
96
+ assessmentId: z.number().optional().describe('New assessment rating ID'),
97
+ shortDescription: z.string().optional().describe('New brief progress summary'),
98
+ description: z.string().optional().describe('New detailed progress notes'),
99
+ },
100
+ }, async (args) => {
101
+ if (effectiveUserContext && !hasScope(effectiveUserContext, 'mcp:write'))
102
+ return buildInsufficientScopeResponse();
103
+ const { path, body } = splitUpdateTaskProgressArgs(args);
104
+ await clients.rest.patch(path, body);
105
+ const readback = await clients.rest.get(path);
106
+ verifyRequestedFields(body, readback, TASK_PROGRESS_VERIFICATION_FIELDS, 'update_task_progress');
107
+ return buildWriteResponse(readback);
108
+ });
109
+ }
110
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/tools/progress.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Clients } from '../clients/index.js';
3
+ export declare const ALLOWED_ENTITIES: readonly ["projectstatuses", "gettaskstatuses", "gettasktypes", "gettaskpriorities", "getprojecttypes", "projectpriorities", "riskstatuses", "risktypes", "riskimpacts", "riskprobabilities", "issuestatuses", "issuetypes", "purchasestatuses", "purchasetypes", "revenuestatuses", "assessments"];
3
4
  export declare function registerReferenceDataTools(server: McpServer, clients: Clients): void;
4
5
  //# sourceMappingURL=reference-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAUnD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,QAc7E"}
1
+ {"version":3,"file":"reference-data.d.ts","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,qSAMnB,CAAC;AAEX,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,QAc7E"}
@@ -1,14 +1,14 @@
1
1
  import { z } from 'zod';
2
- const ALLOWED_ENTITIES = [
2
+ export const ALLOWED_ENTITIES = [
3
3
  'projectstatuses', 'gettaskstatuses', 'gettasktypes', 'gettaskpriorities',
4
4
  'getprojecttypes', 'projectpriorities', 'riskstatuses', 'risktypes',
5
5
  'riskimpacts', 'riskprobabilities',
6
6
  'issuestatuses', 'issuetypes', 'purchasestatuses', 'purchasetypes',
7
- 'revenuestatuses',
7
+ 'revenuestatuses', 'assessments',
8
8
  ];
9
9
  export function registerReferenceDataTools(server, clients) {
10
10
  server.registerTool('get_reference_data', {
11
- description: 'Get reference data lists (statuses, types, priorities, risk impact/probability) for any entity. Useful for understanding valid values when filtering or interpreting data. Available entities: projectstatuses, gettaskstatuses, gettasktypes, gettaskpriorities, getprojecttypes, projectpriorities, riskstatuses, risktypes, riskimpacts, riskprobabilities, issuestatuses, issuetypes, purchasestatuses, purchasetypes, revenuestatuses. Some risk/issue reference data includes BaseId; write tools accept either Id or BaseId and normalize when v2 REST requires BaseId.',
11
+ description: 'Get reference data lists (statuses, types, priorities, risk impact/probability, assessments) for any entity. Useful for understanding valid values when filtering or interpreting data. Available entities: projectstatuses, gettaskstatuses, gettasktypes, gettaskpriorities, getprojecttypes, projectpriorities, riskstatuses, risktypes, riskimpacts, riskprobabilities, issuestatuses, issuetypes, purchasestatuses, purchasetypes, revenuestatuses, assessments. Use "assessments" to discover valid assessmentId values for create_task_progress. Some risk/issue reference data includes BaseId; write tools accept either Id or BaseId and normalize when v2 REST requires BaseId.',
12
12
  inputSchema: {
13
13
  entity: z.enum(ALLOWED_ENTITIES).describe('The reference data entity to retrieve'),
14
14
  },
@@ -1 +1 @@
1
- {"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,gBAAgB,GAAG;IACvB,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB;IACzE,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW;IACnE,aAAa,EAAE,mBAAmB;IAClC,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe;IAClE,iBAAiB;CACT,CAAC;AAEX,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,OAAgB;IAC5E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,gjBAAgjB;QAC7jB,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SACnF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../src/tools/reference-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB;IACzE,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW;IACnE,aAAa,EAAE,mBAAmB;IAClC,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe;IAClE,iBAAiB,EAAE,aAAa;CACxB,CAAC;AAEX,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,OAAgB;IAC5E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE,4pBAA4pB;QACzqB,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SACnF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -25,6 +25,7 @@ export declare function splitCreateTaskArgs(args: {
25
25
  [key: string]: unknown;
26
26
  };
27
27
  };
28
+ export declare function getCreateTaskValidationError(body: JsonRecord, project: unknown): string | undefined;
28
29
  export declare function splitUpdateTaskArgs(args: {
29
30
  projectId: number;
30
31
  taskId: number;
@@ -69,6 +70,7 @@ export interface VerificationField {
69
70
  }
70
71
  export declare function verifyRequestedFields(requested: JsonRecord, readback: unknown, fields: VerificationField[], entityLabel: string): void;
71
72
  export declare function mapReferenceIdToBaseId(value: unknown, referenceData: unknown): unknown;
73
+ export declare function extractResponseId(data: unknown, label: string): number | string;
72
74
  export declare function registerWriteTools(server: McpServer, clients: Clients, effectiveUserContext?: EffectiveUserContext): void;
73
75
  export {};
74
76
  //# sourceMappingURL=write-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-tools.d.ts","sourceRoot":"","sources":["../../src/tools/write-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAY,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAExF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,eAAO,MAAM,wBAAwB,QAGmC,CAAC;AAEzE,wBAAgB,8BAA8B,IAAI;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAKlH;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAOpG;AAoED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAQtF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAQtG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAWtF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EASvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAIzF;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,iBAAiB,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CActF;AA8DD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,IAAI,CA6IN"}
1
+ {"version":3,"file":"write-tools.d.ts","sourceRoot":"","sources":["../../src/tools/write-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAY,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAExF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,eAAO,MAAM,wBAAwB,QAGmC,CAAC;AAEzE,wBAAgB,8BAA8B,IAAI;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAKlH;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAOpG;AA2ED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAQtF;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA+BnG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAQtG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAWtF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAWvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;EAIzF;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,iBAAiB,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CActF;AAcD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQ/E;AAwCD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,IAAI,CAgJN"}
@@ -17,6 +17,12 @@ export function buildWriteResponse(data) {
17
17
  ],
18
18
  };
19
19
  }
20
+ function buildValidationErrorResponse(message) {
21
+ return {
22
+ content: [{ type: 'text', text: `Validation error: ${message}` }],
23
+ isError: true,
24
+ };
25
+ }
20
26
  function hasSuppliedField(body, field) {
21
27
  return Object.prototype.hasOwnProperty.call(body, field) && body[field] !== undefined;
22
28
  }
@@ -85,6 +91,35 @@ export function splitCreateTaskArgs(args) {
85
91
  });
86
92
  return { path: `projects/${projectId}/tasks`, body };
87
93
  }
94
+ export function getCreateTaskValidationError(body, project) {
95
+ if (project === null || typeof project !== 'object') {
96
+ return 'Could not determine project methodology before creating the task.';
97
+ }
98
+ const projectRecord = project;
99
+ const methodTypeId = numericValue(projectRecord.MethodTypeId
100
+ ?? projectRecord.ProjectMethodTypeId
101
+ ?? projectRecord.MethodType?.Id);
102
+ if (methodTypeId === undefined) {
103
+ return 'Could not determine project methodology before creating the task.';
104
+ }
105
+ if (methodTypeId === 2)
106
+ return undefined;
107
+ if (methodTypeId !== 1) {
108
+ return `Unsupported project methodology (${methodTypeId}) for task creation.`;
109
+ }
110
+ const requiredFields = ['StatusId', 'StartDate', 'EndDate'];
111
+ const missingFields = requiredFields.filter(field => {
112
+ const value = body[field];
113
+ if (!hasSuppliedField(body, field))
114
+ return true;
115
+ if (field === 'StatusId')
116
+ return numericValue(value) === undefined || Number(value) <= 0;
117
+ return typeof value !== 'string' || value.trim() === '';
118
+ });
119
+ if (!missingFields.length)
120
+ return undefined;
121
+ return `Waterfall task creation requires StatusId, StartDate, and EndDate. Missing: ${missingFields.join(', ')}.`;
122
+ }
88
123
  export function splitUpdateTaskArgs(args) {
89
124
  const { projectId, taskId, ...body } = args;
90
125
  normalizeAlias(body, 'Description', 'Details');
@@ -103,6 +138,8 @@ export function splitCreateRiskArgs(args) {
103
138
  }
104
139
  export function splitCreateIssueArgs(args) {
105
140
  const { projectId, ...body } = args;
141
+ requireSuppliedField('create_issue', body, 'TypeId', 'the v2 issue create route requires a valid issue type');
142
+ requireSuppliedField('create_issue', body, 'StatusId', 'the v2 issue create route requires a valid issue status');
106
143
  normalizeAlias(body, 'TypeId', 'Type');
107
144
  normalizeAlias(body, 'StatusId', 'Status');
108
145
  normalizeAlias(body, 'Resolution', 'FinalResolution');
@@ -174,7 +211,7 @@ async function normalizeReferenceIds(clients, body, mappings) {
174
211
  body[field] = mapReferenceIdToBaseId(body[field], referenceData);
175
212
  }
176
213
  }
177
- function extractResponseId(data, label) {
214
+ export function extractResponseId(data, label) {
178
215
  if (data && typeof data === 'object') {
179
216
  const record = data;
180
217
  const id = record.Id ?? record.id ?? record.ProjectId ?? record.projectId ?? record.TaskId ?? record.taskId;
@@ -219,22 +256,26 @@ const ISSUE_VERIFICATION_FIELDS = [
219
256
  ];
220
257
  export function registerWriteTools(server, clients, effectiveUserContext) {
221
258
  server.registerTool('create_task', {
222
- description: 'Create a new task in a project. Returns the created task read back from v2 REST (source of truth). Use get_reference_data with entity "gettaskstatuses", "gettasktypes", or "gettaskpriorities" to discover valid IDs.',
259
+ description: 'Create a new task in a project. Waterfall projects require StatusId, StartDate, and EndDate; Kanban projects use board defaults and do not require dates. Returns the created task read back from v2 REST (source of truth). Use get_reference_data with entity "gettaskstatuses", "gettasktypes", or "gettaskpriorities" to discover valid Waterfall IDs.',
223
260
  inputSchema: {
224
261
  projectId: z.number().describe('The project ID to create the task in'),
225
262
  Name: z.string().describe('Task name (required)'),
226
263
  Description: z.string().optional().describe('Task description. Compatibility alias for the v2 REST Details field.'),
227
264
  Details: z.string().optional().describe('Task details/description field used by v2 REST'),
228
- StatusId: z.number().optional().describe('Task status ID'),
265
+ StatusId: z.number().optional().describe('Task status ID. Required for Waterfall projects; Kanban uses board-specific status defaults.'),
229
266
  TypeId: z.number().optional().describe('Task type ID'),
230
267
  PriorityId: z.number().optional().describe('Task priority ID'),
231
- StartDate: z.string().optional().describe('Start date (ISO 8601)'),
232
- EndDate: z.string().optional().describe('End date (ISO 8601)'),
268
+ StartDate: z.string().optional().describe('Start date (ISO 8601). Required for Waterfall projects.'),
269
+ EndDate: z.string().optional().describe('End date (ISO 8601). Required for Waterfall projects.'),
233
270
  },
234
271
  }, async (args) => {
235
272
  if (effectiveUserContext && !hasScope(effectiveUserContext, 'mcp:write'))
236
273
  return buildInsufficientScopeResponse();
237
274
  const { path, body } = splitCreateTaskArgs(args);
275
+ const project = await clients.rest.get(`projects/${args.projectId}`);
276
+ const validationError = getCreateTaskValidationError(body, project);
277
+ if (validationError)
278
+ return buildValidationErrorResponse(validationError);
238
279
  const data = await clients.rest.post(path, body);
239
280
  const taskId = extractResponseId(data, 'created task');
240
281
  const readback = await clients.rest.get(`${path}/${taskId}`);
@@ -299,8 +340,8 @@ export function registerWriteTools(server, clients, effectiveUserContext) {
299
340
  projectId: z.number().describe('The project ID to create the issue in'),
300
341
  Name: z.string().describe('Issue name (required)'),
301
342
  Description: z.string().optional().describe('Issue description'),
302
- StatusId: z.number().optional().describe('Issue status ID. Mapped to the v2 REST Status field.'),
303
- TypeId: z.number().optional().describe('Issue type ID. Mapped to the v2 REST Type field.'),
343
+ StatusId: z.number().describe('Issue status ID (required). Mapped to the v2 REST Status field.'),
344
+ TypeId: z.number().describe('Issue type ID (required). Mapped to the v2 REST Type field.'),
304
345
  Resolution: z.string().optional().describe('Resolution description. Mapped to the v2 REST FinalResolution field.'),
305
346
  },
306
347
  }, async (args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"write-tools.js","sourceRoot":"","sources":["../../src/tools/write-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-tools.js","sourceRoot":"","sources":["../../src/tools/write-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itm-platform/mcp-server",
3
- "version": "1.0.6",
3
+ "version": "1.0.10",
4
4
  "description": "MCP server for ITM Platform",
5
5
  "license": "MIT",
6
6
  "mcpName": "io.github.itmplatform/mcp-server",