@freelancercom/phabricator-mcp 2.0.5 → 2.0.6
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 +2 -1
- package/dist/tools/conpherence.js +3 -3
- package/dist/tools/feed.js +2 -2
- package/dist/tools/harbormaster.js +1 -10
- package/dist/tools/phame.js +4 -2
- package/dist/tools/phriction.js +17 -35
- package/dist/tools/transaction.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -281,7 +281,8 @@ To allowlist all tools including write operations, use `"mcp__phabricator__*"` i
|
|
|
281
281
|
| Tool | Description |
|
|
282
282
|
|------|-------------|
|
|
283
283
|
| `phabricator_document_search` | Search wiki documents |
|
|
284
|
-
| `
|
|
284
|
+
| `phabricator_document_create` | Create a new wiki document |
|
|
285
|
+
| `phabricator_document_edit` | Edit a wiki document title or content |
|
|
285
286
|
| `phabricator_document_add_comment` | Add a comment to a wiki document |
|
|
286
287
|
|
|
287
288
|
### Blogs (Phame)
|
|
@@ -22,13 +22,13 @@ export function registerConpherenceTools(server, client) {
|
|
|
22
22
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
23
23
|
});
|
|
24
24
|
// Read messages in a thread
|
|
25
|
-
server.tool('phabricator_conpherence_read', 'Read messages from a Conpherence chat room/thread (returned in reverse chronological order). Uses conpherence.
|
|
25
|
+
server.tool('phabricator_conpherence_read', 'Read messages from a Conpherence chat room/thread (returned in reverse chronological order). Uses conpherence.querytransaction (the only Conduit method that returns message content).', {
|
|
26
26
|
roomID: z.coerce.number().describe('Numeric room ID (use phabricator_conpherence_search to find it)'),
|
|
27
27
|
limit: z.coerce.number().max(100).optional().describe('Maximum messages to return'),
|
|
28
28
|
offset: z.coerce.number().optional().describe('Result offset for pagination'),
|
|
29
29
|
}, async (params) => {
|
|
30
|
-
const result = await client.call('conpherence.
|
|
31
|
-
|
|
30
|
+
const result = await client.call('conpherence.querytransaction', {
|
|
31
|
+
roomID: params.roomID,
|
|
32
32
|
limit: params.limit,
|
|
33
33
|
offset: params.offset,
|
|
34
34
|
});
|
package/dist/tools/feed.js
CHANGED
|
@@ -5,8 +5,8 @@ export function registerFeedTools(server, client) {
|
|
|
5
5
|
filterPHIDs: z.array(z.string()).optional().describe('Only show activity involving these PHIDs (user, project, task, etc.)'),
|
|
6
6
|
view: z.enum(['data', 'text', 'html', 'html-summary']).optional().describe('Output format: "data" (structured, default), "text" (human-readable), "html" (rendered HTML), "html-summary" (title only)'),
|
|
7
7
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
8
|
-
after: z.
|
|
9
|
-
before: z.
|
|
8
|
+
after: z.coerce.number().optional().describe('Cursor for pagination (chronological key from previous results)'),
|
|
9
|
+
before: z.coerce.number().optional().describe('Cursor for reverse pagination'),
|
|
10
10
|
}, async (params) => {
|
|
11
11
|
const result = await client.call('feed.query', params);
|
|
12
12
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
@@ -11,9 +11,6 @@ export function registerHarbormasterTools(server, client) {
|
|
|
11
11
|
containerPHIDs: z.array(z.string()).optional().describe('Container PHIDs'),
|
|
12
12
|
statuses: z.array(z.string()).optional().describe('Buildable statuses'),
|
|
13
13
|
})).optional().describe('Search constraints'),
|
|
14
|
-
attachments: jsonCoerce(z.object({
|
|
15
|
-
builds: z.boolean().optional().describe('Include builds for each buildable'),
|
|
16
|
-
})).optional().describe('Data attachments'),
|
|
17
14
|
order: z.string().optional().describe('Result order'),
|
|
18
15
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
19
16
|
after: z.string().optional().describe('Cursor for next-page pagination'),
|
|
@@ -33,9 +30,6 @@ export function registerHarbormasterTools(server, client) {
|
|
|
33
30
|
statuses: z.array(z.string()).optional().describe('Build statuses: building, passed, failed, aborted, error, paused'),
|
|
34
31
|
initiatorPHIDs: z.array(z.string()).optional().describe('PHIDs of users/objects that initiated the build'),
|
|
35
32
|
})).optional().describe('Search constraints'),
|
|
36
|
-
attachments: jsonCoerce(z.object({
|
|
37
|
-
targets: z.boolean().optional().describe('Include build targets for each build'),
|
|
38
|
-
})).optional().describe('Data attachments'),
|
|
39
33
|
order: z.string().optional().describe('Result order'),
|
|
40
34
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
41
35
|
after: z.string().optional().describe('Cursor for next-page pagination'),
|
|
@@ -68,9 +62,6 @@ export function registerHarbormasterTools(server, client) {
|
|
|
68
62
|
phids: z.array(z.string()).optional().describe('Log PHIDs'),
|
|
69
63
|
buildTargetPHIDs: z.array(z.string()).optional().describe('Build target PHIDs'),
|
|
70
64
|
})).optional().describe('Search constraints'),
|
|
71
|
-
attachments: jsonCoerce(z.object({
|
|
72
|
-
content: z.boolean().optional().describe('Include actual log text content'),
|
|
73
|
-
})).optional().describe('Data attachments'),
|
|
74
65
|
order: z.string().optional().describe('Result order'),
|
|
75
66
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
76
67
|
after: z.string().optional().describe('Cursor for next-page pagination'),
|
|
@@ -122,7 +113,7 @@ export function registerHarbormasterTools(server, client) {
|
|
|
122
113
|
constraints: jsonCoerce(z.object({
|
|
123
114
|
ids: z.array(z.coerce.number()).optional().describe('Build plan IDs'),
|
|
124
115
|
phids: z.array(z.string()).optional().describe('Build plan PHIDs'),
|
|
125
|
-
|
|
116
|
+
status: z.array(z.string()).optional().describe('Plan statuses: "active", "disabled"'),
|
|
126
117
|
match: z.string().optional().describe('Search for build plans by name substring'),
|
|
127
118
|
})).optional().describe('Search constraints'),
|
|
128
119
|
order: z.string().optional().describe('Result order'),
|
package/dist/tools/phame.js
CHANGED
|
@@ -12,6 +12,7 @@ export function registerPhameTools(server, client) {
|
|
|
12
12
|
})).optional().describe('Search constraints'),
|
|
13
13
|
attachments: jsonCoerce(z.object({
|
|
14
14
|
subscribers: z.boolean().optional().describe('Include subscriber details'),
|
|
15
|
+
projects: z.boolean().optional().describe('Include tagged projects'),
|
|
15
16
|
})).optional().describe('Data attachments'),
|
|
16
17
|
order: z.string().optional().describe('Result order'),
|
|
17
18
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
@@ -29,11 +30,12 @@ export function registerPhameTools(server, client) {
|
|
|
29
30
|
phids: z.array(z.string()).optional().describe('Post PHIDs'),
|
|
30
31
|
blogPHIDs: z.array(z.string()).optional().describe('Filter by blog PHIDs'),
|
|
31
32
|
authorPHIDs: z.array(z.string()).optional().describe('Filter by author PHIDs'),
|
|
32
|
-
visibility: z.array(z.
|
|
33
|
+
visibility: z.array(z.string()).optional().describe('Visibility: "published", "draft", "archived" (or numeric: "1", "0", "2")'),
|
|
33
34
|
query: z.string().optional().describe('Full-text search query'),
|
|
34
35
|
})).optional().describe('Search constraints'),
|
|
35
36
|
attachments: jsonCoerce(z.object({
|
|
36
|
-
|
|
37
|
+
subscribers: z.boolean().optional().describe('Include subscriber details'),
|
|
38
|
+
projects: z.boolean().optional().describe('Include tagged projects'),
|
|
37
39
|
})).optional().describe('Data attachments'),
|
|
38
40
|
order: z.string().optional().describe('Result order'),
|
|
39
41
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
package/dist/tools/phriction.js
CHANGED
|
@@ -26,42 +26,24 @@ export function registerPhrictionTools(server, client) {
|
|
|
26
26
|
const result = await client.call('phriction.document.search', params);
|
|
27
27
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
28
28
|
});
|
|
29
|
-
//
|
|
30
|
-
server.tool('
|
|
31
|
-
|
|
32
|
-
title: z.string().
|
|
33
|
-
content: z.string().
|
|
34
|
-
|
|
35
|
-
move: z.string().optional().describe('New slug to move/rename the document to'),
|
|
36
|
-
addSubscriberPHIDs: z.array(z.string()).optional().describe('Subscriber PHIDs to add'),
|
|
37
|
-
removeSubscriberPHIDs: z.array(z.string()).optional().describe('Subscriber PHIDs to remove'),
|
|
29
|
+
// Create wiki document
|
|
30
|
+
server.tool('phabricator_document_create', 'Create a new Phriction wiki document. Uses phriction.create (the only method that can create documents).', {
|
|
31
|
+
slug: z.string().describe('Document slug/path (e.g., "projects/myproject/")'),
|
|
32
|
+
title: z.string().describe('Document title'),
|
|
33
|
+
content: z.string().describe('Document content (Remarkup)'),
|
|
34
|
+
description: z.string().optional().describe('Edit description/summary'),
|
|
38
35
|
}, async (params) => {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
transactions.push({ type: 'move', value: params.move });
|
|
51
|
-
}
|
|
52
|
-
if (params.addSubscriberPHIDs !== undefined) {
|
|
53
|
-
transactions.push({ type: 'subscribers.add', value: params.addSubscriberPHIDs });
|
|
54
|
-
}
|
|
55
|
-
if (params.removeSubscriberPHIDs !== undefined) {
|
|
56
|
-
transactions.push({ type: 'subscribers.remove', value: params.removeSubscriberPHIDs });
|
|
57
|
-
}
|
|
58
|
-
if (transactions.length === 0) {
|
|
59
|
-
return { content: [{ type: 'text', text: 'No changes specified' }] };
|
|
60
|
-
}
|
|
61
|
-
const result = await client.call('phriction.document.edit', {
|
|
62
|
-
objectIdentifier: params.objectIdentifier,
|
|
63
|
-
transactions,
|
|
64
|
-
});
|
|
36
|
+
const result = await client.call('phriction.create', params);
|
|
37
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
38
|
+
});
|
|
39
|
+
// Edit wiki document content
|
|
40
|
+
server.tool('phabricator_document_edit', 'Edit an existing Phriction wiki document title or content. Uses phriction.edit (the only method that can update document content).', {
|
|
41
|
+
slug: z.string().describe('Document slug/path (e.g., "projects/myproject/")'),
|
|
42
|
+
title: z.string().optional().describe('New document title'),
|
|
43
|
+
content: z.string().optional().describe('New document content (Remarkup)'),
|
|
44
|
+
description: z.string().optional().describe('Edit description/summary'),
|
|
45
|
+
}, async (params) => {
|
|
46
|
+
const result = await client.call('phriction.edit', params);
|
|
65
47
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
66
48
|
});
|
|
67
49
|
// Add comment to document
|
|
@@ -8,7 +8,8 @@ export function registerTransactionTools(server, client) {
|
|
|
8
8
|
authorPHIDs: z.array(z.string()).optional().describe('Author PHIDs'),
|
|
9
9
|
})).optional().describe('Search constraints'),
|
|
10
10
|
limit: z.coerce.number().max(100).optional().describe('Maximum results (max 100)'),
|
|
11
|
-
after: z.string().optional().describe('
|
|
11
|
+
after: z.string().optional().describe('Cursor for next-page pagination'),
|
|
12
|
+
before: z.string().optional().describe('Cursor for previous-page pagination'),
|
|
12
13
|
}, async (params) => {
|
|
13
14
|
const { objectIdentifier, ...searchParams } = params;
|
|
14
15
|
const result = await client.call('transaction.search', {
|
package/package.json
CHANGED