@bragduck/mcp 1.1.0 → 1.3.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/dist/api-client.js +13 -2
- package/dist/api-client.js.map +1 -1
- package/dist/tools/list-brags.d.ts +16 -0
- package/dist/tools/list-brags.js +36 -4
- package/dist/tools/list-brags.js.map +1 -1
- package/dist/tools/list-objectives.js.map +1 -1
- package/dist/tools/log-brag.d.ts +16 -3
- package/dist/tools/log-brag.js +16 -6
- package/dist/tools/log-brag.js.map +1 -1
- package/package.json +3 -2
package/dist/api-client.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { getAccessToken, getRefreshToken, storeCredentials } from './credentials.js';
|
|
2
2
|
const API_BASE_URL = process.env.BRAGDUCK_API_URL || 'https://api.bragduck.com';
|
|
3
|
+
const DEBUG = !!process.env.BRAGDUCK_DEBUG;
|
|
3
4
|
const OAUTH_CLIENT_ID = 'bragduck-cli';
|
|
4
5
|
const TOKEN_ENDPOINT = '/v1/auth/cli/token';
|
|
6
|
+
function debug(...args) {
|
|
7
|
+
if (DEBUG)
|
|
8
|
+
console.error('[bragduck-mcp]', ...args);
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
11
|
* Attempt to refresh the access token using the stored refresh token
|
|
7
12
|
*/
|
|
@@ -66,11 +71,16 @@ export async function apiRequest(endpoint, options = {}) {
|
|
|
66
71
|
if (body) {
|
|
67
72
|
headers['Content-Type'] = 'application/json';
|
|
68
73
|
}
|
|
74
|
+
const bodyString = body ? JSON.stringify(body) : undefined;
|
|
75
|
+
debug(`${method} ${url}`);
|
|
76
|
+
if (bodyString)
|
|
77
|
+
debug('Request body:', bodyString);
|
|
69
78
|
let response = await fetch(url, {
|
|
70
79
|
method,
|
|
71
80
|
headers,
|
|
72
|
-
body:
|
|
81
|
+
body: bodyString,
|
|
73
82
|
});
|
|
83
|
+
debug(`Response: ${response.status} ${response.statusText}`);
|
|
74
84
|
// On 401, try refreshing the token once
|
|
75
85
|
if (response.status === 401) {
|
|
76
86
|
const newToken = await refreshAccessToken();
|
|
@@ -81,11 +91,12 @@ export async function apiRequest(endpoint, options = {}) {
|
|
|
81
91
|
response = await fetch(url, {
|
|
82
92
|
method,
|
|
83
93
|
headers,
|
|
84
|
-
body:
|
|
94
|
+
body: bodyString,
|
|
85
95
|
});
|
|
86
96
|
}
|
|
87
97
|
if (!response.ok) {
|
|
88
98
|
const text = await response.text().catch(() => '');
|
|
99
|
+
debug('Error response body:', text);
|
|
89
100
|
let msg = `API error: ${response.status} ${response.statusText}`;
|
|
90
101
|
try {
|
|
91
102
|
const errorData = JSON.parse(text);
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,19 @@ export declare const listBragsTool: {
|
|
|
19
19
|
};
|
|
20
20
|
description: string;
|
|
21
21
|
};
|
|
22
|
+
date_from: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
date_to: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
sort: {
|
|
31
|
+
type: string;
|
|
32
|
+
enum: string[];
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
22
35
|
};
|
|
23
36
|
};
|
|
24
37
|
};
|
|
@@ -26,6 +39,9 @@ interface ListBragsInput {
|
|
|
26
39
|
limit?: number;
|
|
27
40
|
search?: string;
|
|
28
41
|
tags?: string[];
|
|
42
|
+
date_from?: string;
|
|
43
|
+
date_to?: string;
|
|
44
|
+
sort?: string;
|
|
29
45
|
}
|
|
30
46
|
export declare function handleListBrags(input: ListBragsInput): Promise<{
|
|
31
47
|
content: Array<{
|
package/dist/tools/list-brags.js
CHANGED
|
@@ -19,9 +19,28 @@ export const listBragsTool = {
|
|
|
19
19
|
items: { type: 'string' },
|
|
20
20
|
description: 'Filter brags by tags',
|
|
21
21
|
},
|
|
22
|
+
date_from: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Filter brags from this date (YYYY-MM-DD)',
|
|
25
|
+
},
|
|
26
|
+
date_to: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Filter brags up to this date (YYYY-MM-DD)',
|
|
29
|
+
},
|
|
30
|
+
sort: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
enum: ['date_asc', 'date_desc', 'title_asc', 'title_desc', 'created_asc', 'created_desc'],
|
|
33
|
+
description: 'Sort order (default: date_desc)',
|
|
34
|
+
},
|
|
22
35
|
},
|
|
23
36
|
},
|
|
24
37
|
};
|
|
38
|
+
const IMPACT_LABELS = {
|
|
39
|
+
0: 'None',
|
|
40
|
+
1: 'Low',
|
|
41
|
+
2: 'Medium',
|
|
42
|
+
3: 'High',
|
|
43
|
+
};
|
|
25
44
|
export async function handleListBrags(input) {
|
|
26
45
|
try {
|
|
27
46
|
const params = {
|
|
@@ -31,7 +50,13 @@ export async function handleListBrags(input) {
|
|
|
31
50
|
if (input.search)
|
|
32
51
|
params.search = input.search;
|
|
33
52
|
if (input.tags && input.tags.length > 0)
|
|
34
|
-
params
|
|
53
|
+
params['tags[]'] = input.tags;
|
|
54
|
+
if (input.date_from)
|
|
55
|
+
params.date_from = input.date_from;
|
|
56
|
+
if (input.date_to)
|
|
57
|
+
params.date_to = input.date_to;
|
|
58
|
+
if (input.sort)
|
|
59
|
+
params.sort = input.sort;
|
|
35
60
|
const response = await apiRequest('/v1/brags', { params });
|
|
36
61
|
if (response.brags.length === 0) {
|
|
37
62
|
return {
|
|
@@ -41,10 +66,17 @@ export async function handleListBrags(input) {
|
|
|
41
66
|
const lines = response.brags.map((brag) => {
|
|
42
67
|
const tags = brag.tags.length > 0 ? ` [${brag.tags.join(', ')}]` : '';
|
|
43
68
|
const date = new Date(brag.date).toLocaleDateString();
|
|
44
|
-
const
|
|
45
|
-
|
|
69
|
+
const impact = `Impact: ${IMPACT_LABELS[brag.impactLevel] ?? brag.impactLevel}`;
|
|
70
|
+
const type = brag.type ? ` | Type: ${brag.type}` : '';
|
|
71
|
+
const goal = brag.goalId ? ` | Goal: ${brag.goalId}` : '';
|
|
72
|
+
const impactDesc = brag.impactDescription ? `\n Impact: ${brag.impactDescription}` : '';
|
|
73
|
+
return (`- **${brag.title}** (ID: ${brag.id}, ${date})${tags}\n` +
|
|
74
|
+
` ${impact}${type}${goal}\n` +
|
|
75
|
+
` ${brag.description.slice(0, 150)}${brag.description.length > 150 ? '...' : ''}` +
|
|
76
|
+
impactDesc);
|
|
46
77
|
});
|
|
47
|
-
const
|
|
78
|
+
const { total, has_more } = response.pagination;
|
|
79
|
+
const summary = `Found ${total} brags (showing ${response.brags.length}${has_more ? ', more available' : ''}):`;
|
|
48
80
|
return {
|
|
49
81
|
content: [{ type: 'text', text: `${summary}\n\n${lines.join('\n\n')}` }],
|
|
50
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-brags.js","sourceRoot":"","sources":["../../src/tools/list-brags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-brags.js","sourceRoot":"","sources":["../../src/tools/list-brags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-objectives.js","sourceRoot":"","sources":["../../src/tools/list-objectives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-objectives.js","sourceRoot":"","sources":["../../src/tools/list-objectives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,wDAAwD;QACxD,iGAAiG;IACnG,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;KACf;CACF,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,oBAAoB;IAIxC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,sEAAsE;qBAC7E,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAC/B,aAAa,QAAQ,CAAC,EAAE,aAAa,CACtC,CAAC;QAEF,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC;iBACtE,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,OAAO,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,MAAM,IAAI,QAAQ,KAAK,KAAK,IAAI,gBAAgB,EAAE,CAAC;QAC9G,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,QAAQ,CAAC,KAAK,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;iBACrE,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,mBAAmB,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,EAAE,CAAC;YAC3G,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,sEAAsE;qBAC7E,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC7F,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/tools/log-brag.d.ts
CHANGED
|
@@ -20,7 +20,10 @@ export declare const logBragTool: {
|
|
|
20
20
|
type: string;
|
|
21
21
|
items: {
|
|
22
22
|
type: string;
|
|
23
|
+
minLength: number;
|
|
24
|
+
maxLength: number;
|
|
23
25
|
};
|
|
26
|
+
maxItems: number;
|
|
24
27
|
description: string;
|
|
25
28
|
};
|
|
26
29
|
date: {
|
|
@@ -41,6 +44,15 @@ export declare const logBragTool: {
|
|
|
41
44
|
enum: string[];
|
|
42
45
|
description: string;
|
|
43
46
|
};
|
|
47
|
+
references: {
|
|
48
|
+
type: string;
|
|
49
|
+
items: {
|
|
50
|
+
type: string;
|
|
51
|
+
format: string;
|
|
52
|
+
};
|
|
53
|
+
maxItems: number;
|
|
54
|
+
description: string;
|
|
55
|
+
};
|
|
44
56
|
orgId: {
|
|
45
57
|
type: string;
|
|
46
58
|
description: string;
|
|
@@ -52,11 +64,12 @@ export declare const logBragTool: {
|
|
|
52
64
|
interface LogBragInput {
|
|
53
65
|
title: string;
|
|
54
66
|
description: string;
|
|
67
|
+
type: string;
|
|
68
|
+
impact_level: number;
|
|
69
|
+
impact_description: string;
|
|
55
70
|
tags?: string[];
|
|
56
71
|
date?: string;
|
|
57
|
-
|
|
58
|
-
impact_description?: string;
|
|
59
|
-
type?: string;
|
|
72
|
+
references?: string[];
|
|
60
73
|
orgId?: string;
|
|
61
74
|
}
|
|
62
75
|
export declare function handleLogBrag(input: LogBragInput): Promise<{
|
package/dist/tools/log-brag.js
CHANGED
|
@@ -20,8 +20,9 @@ export const logBragTool = {
|
|
|
20
20
|
},
|
|
21
21
|
tags: {
|
|
22
22
|
type: 'array',
|
|
23
|
-
items: { type: 'string' },
|
|
24
|
-
|
|
23
|
+
items: { type: 'string', minLength: 2, maxLength: 30 },
|
|
24
|
+
maxItems: 10,
|
|
25
|
+
description: 'Tags to categorize the brag (e.g., "performance", "leadership", "backend"). Each tag must be 2-30 characters. Maximum 10 tags.',
|
|
25
26
|
},
|
|
26
27
|
date: {
|
|
27
28
|
type: 'string',
|
|
@@ -62,6 +63,15 @@ export const logBragTool = {
|
|
|
62
63
|
],
|
|
63
64
|
description: 'Type of achievement. Choose the most appropriate category for this brag.',
|
|
64
65
|
},
|
|
66
|
+
references: {
|
|
67
|
+
type: 'array',
|
|
68
|
+
items: { type: 'string', format: 'uri' },
|
|
69
|
+
maxItems: 10,
|
|
70
|
+
description: 'URLs to reference materials for this achievement. ' +
|
|
71
|
+
'Include any relevant links that provide context or proof: ' +
|
|
72
|
+
'pull request URLs, Jira/Linear tickets, commit URLs, design docs, Notion pages, etc. ' +
|
|
73
|
+
'Example: ["https://github.com/org/repo/pull/123", "https://jira.company.com/browse/PROJ-456"]',
|
|
74
|
+
},
|
|
65
75
|
orgId: {
|
|
66
76
|
type: 'string',
|
|
67
77
|
description: 'Organisation ID to associate the brag with',
|
|
@@ -85,19 +95,19 @@ export async function handleLogBrag(input) {
|
|
|
85
95
|
brag.impact_description = input.impact_description;
|
|
86
96
|
if (input.type)
|
|
87
97
|
brag.typeKey = input.type;
|
|
98
|
+
if (input.references && input.references.length > 0)
|
|
99
|
+
brag.attachments = input.references;
|
|
88
100
|
if (input.orgId)
|
|
89
101
|
brag.orgId = input.orgId;
|
|
90
102
|
const response = await apiRequest('/v1/brags', {
|
|
91
103
|
method: 'POST',
|
|
92
104
|
body: { brags: [brag], source: 'mcp' },
|
|
93
105
|
});
|
|
94
|
-
|
|
95
|
-
const brags = response.brags;
|
|
96
|
-
if (brags && brags.length > 0) {
|
|
106
|
+
if (response.brags && response.brags.length > 0) {
|
|
97
107
|
return {
|
|
98
108
|
content: [{
|
|
99
109
|
type: 'text',
|
|
100
|
-
text: `Brag created: "${brags[0].title}" (ID: ${brags[0].id})`,
|
|
110
|
+
text: `Brag created: "${response.brags[0].title}" (ID: ${response.brags[0].id})`,
|
|
101
111
|
}],
|
|
102
112
|
};
|
|
103
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-brag.js","sourceRoot":"","sources":["../../src/tools/log-brag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-brag.js","sourceRoot":"","sources":["../../src/tools/log-brag.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bragduck/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "BragDuck MCP server for logging career achievements from AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
39
|
-
"conf": "^13.0.0"
|
|
39
|
+
"conf": "^13.0.0",
|
|
40
|
+
"@bragduck/types": "0.1.36"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@types/node": "^20.11.24",
|