Skip to content

Commit 0f219f4

Browse files
committed
feat(mcp): register Phase 2 tools in McpServer factory
1 parent 761f62c commit 0f219f4

1 file changed

Lines changed: 90 additions & 1 deletion

File tree

apps/dashboard/server/mcp/server.ts

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
22
import { listProjectsTool } from "./tools/projects"
3-
import { getTicketTool } from "./tools/tickets"
3+
import { getTicketTool, listTicketsTool } from "./tools/tickets"
4+
import { listTicketCommentsTool } from "./tools/comments"
5+
import { listProjectMembersTool } from "./tools/members"
6+
import {
7+
getScreenshotTool,
8+
getReplayTranscriptTool,
9+
getReplayRawTool,
10+
getTicketCookiesTool,
11+
} from "./tools/reports"
412
import type { McpRequestContext } from "./context"
513
import { McpToolError } from "./errors"
614

@@ -30,6 +38,87 @@ export function buildMcpServer(ctx: McpRequestContext): McpServer {
3038
}
3139
})
3240

41+
server.registerTool(listTicketsTool.name, listTicketsTool.config, async (input) => {
42+
try {
43+
return await listTicketsTool.handler(
44+
input as Parameters<typeof listTicketsTool.handler>[0],
45+
ctx,
46+
)
47+
} catch (err) {
48+
return toolErrorResult(err)
49+
}
50+
})
51+
52+
server.registerTool(listTicketCommentsTool.name, listTicketCommentsTool.config, async (input) => {
53+
try {
54+
return await listTicketCommentsTool.handler(
55+
input as Parameters<typeof listTicketCommentsTool.handler>[0],
56+
ctx,
57+
)
58+
} catch (err) {
59+
return toolErrorResult(err)
60+
}
61+
})
62+
63+
server.registerTool(listProjectMembersTool.name, listProjectMembersTool.config, async (input) => {
64+
try {
65+
return await listProjectMembersTool.handler(
66+
input as Parameters<typeof listProjectMembersTool.handler>[0],
67+
ctx,
68+
)
69+
} catch (err) {
70+
return toolErrorResult(err)
71+
}
72+
})
73+
74+
server.registerTool(getScreenshotTool.name, getScreenshotTool.config, async (input) => {
75+
try {
76+
return await getScreenshotTool.handler(
77+
input as Parameters<typeof getScreenshotTool.handler>[0],
78+
ctx,
79+
)
80+
} catch (err) {
81+
return toolErrorResult(err)
82+
}
83+
})
84+
85+
server.registerTool(
86+
getReplayTranscriptTool.name,
87+
getReplayTranscriptTool.config,
88+
async (input) => {
89+
try {
90+
return await getReplayTranscriptTool.handler(
91+
input as Parameters<typeof getReplayTranscriptTool.handler>[0],
92+
ctx,
93+
)
94+
} catch (err) {
95+
return toolErrorResult(err)
96+
}
97+
},
98+
)
99+
100+
server.registerTool(getReplayRawTool.name, getReplayRawTool.config, async (input) => {
101+
try {
102+
return await getReplayRawTool.handler(
103+
input as Parameters<typeof getReplayRawTool.handler>[0],
104+
ctx,
105+
)
106+
} catch (err) {
107+
return toolErrorResult(err)
108+
}
109+
})
110+
111+
server.registerTool(getTicketCookiesTool.name, getTicketCookiesTool.config, async (input) => {
112+
try {
113+
return await getTicketCookiesTool.handler(
114+
input as Parameters<typeof getTicketCookiesTool.handler>[0],
115+
ctx,
116+
)
117+
} catch (err) {
118+
return toolErrorResult(err)
119+
}
120+
})
121+
33122
return server
34123
}
35124

0 commit comments

Comments
 (0)