11import { trackMCP } from "../index.js" ;
22import { BrowserStackConfig } from "../lib/types.js" ;
3- import { fetchPercyChanges } from "./percy-change .js" ;
3+ import { fetchPercyChanges } from "./review-agent .js" ;
44import { addListTestFiles } from "./list-test-files.js" ;
55import { runPercyScan } from "./run-percy-scan.js" ;
66import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" ;
@@ -25,14 +25,14 @@ import {
2525 FetchPercyChangesParamsShape ,
2626 ManagePercyBuildApprovalParamsShape ,
2727} from "./sdk-utils/common/schema.js" ;
28+ import { handleMCPError } from "../lib/utils.js" ;
2829
2930export function registerPercyTools (
3031 server : McpServer ,
3132 config : BrowserStackConfig ,
3233) {
3334 const tools : Record < string , any > = { } ;
3435
35- // Register setupPercyVisualTesting
3636 tools . setupPercyVisualTesting = server . tool (
3737 "setupPercyVisualTesting" ,
3838 SETUP_PERCY_DESCRIPTION ,
@@ -46,26 +46,11 @@ export function registerPercyTools(
4646 ) ;
4747 return setUpPercyHandler ( args , config ) ;
4848 } catch ( error ) {
49- trackMCP (
50- "setupPercyVisualTesting" ,
51- server . server . getClientVersion ( ) ! ,
52- error ,
53- config ,
54- ) ;
55- return {
56- content : [
57- {
58- type : "text" ,
59- text : error instanceof Error ? error . message : String ( error ) ,
60- } ,
61- ] ,
62- isError : true ,
63- } ;
49+ return handleMCPError ( "setupPercyVisualTesting" , server , config , error ) ;
6450 }
6551 } ,
6652 ) ;
6753
68- // Register addPercySnapshotCommands
6954 tools . addPercySnapshotCommands = server . tool (
7055 "addPercySnapshotCommands" ,
7156 PERCY_SNAPSHOT_COMMANDS_DESCRIPTION ,
@@ -79,26 +64,16 @@ export function registerPercyTools(
7964 ) ;
8065 return await updateTestsWithPercyCommands ( args ) ;
8166 } catch ( error ) {
82- trackMCP (
67+ return handleMCPError (
8368 "addPercySnapshotCommands" ,
84- server . server . getClientVersion ( ) ! ,
85- error ,
69+ server ,
8670 config ,
71+ error ,
8772 ) ;
88- return {
89- content : [
90- {
91- type : "text" ,
92- text : error instanceof Error ? error . message : String ( error ) ,
93- } ,
94- ] ,
95- isError : true ,
96- } ;
9773 }
9874 } ,
9975 ) ;
10076
101- // Register listTestFiles
10277 tools . listTestFiles = server . tool (
10378 "listTestFiles" ,
10479 LIST_TEST_FILES_DESCRIPTION ,
@@ -108,21 +83,7 @@ export function registerPercyTools(
10883 trackMCP ( "listTestFiles" , server . server . getClientVersion ( ) ! , config ) ;
10984 return addListTestFiles ( args ) ;
11085 } catch ( error ) {
111- trackMCP (
112- "listTestFiles" ,
113- server . server . getClientVersion ( ) ! ,
114- error ,
115- config ,
116- ) ;
117- return {
118- content : [
119- {
120- type : "text" ,
121- text : error instanceof Error ? error . message : String ( error ) ,
122- } ,
123- ] ,
124- isError : true ,
125- } ;
86+ return handleMCPError ( "listTestFiles" , server , config , error ) ;
12687 }
12788 } ,
12889 ) ;
@@ -132,16 +93,30 @@ export function registerPercyTools(
13293 "Run a Percy visual test scan. Example prompts : Run this Percy build/scan. Never run percy scan/build without this tool" ,
13394 RunPercyScanParamsShape ,
13495 async ( args ) => {
135- return runPercyScan ( args , config ) ;
96+ try {
97+ trackMCP ( "runPercyScan" , server . server . getClientVersion ( ) ! , config ) ;
98+ return runPercyScan ( args , config ) ;
99+ } catch ( error ) {
100+ return handleMCPError ( "runPercyScan" , server , config , error ) ;
101+ }
136102 } ,
137103 ) ;
138104
139105 tools . fetchPercyChanges = server . tool (
140106 "fetchPercyChanges" ,
141- "Retrieves and summarizes all visual changes detected by Percy between the latest and previous builds, helping quickly review what has changed in your project." ,
107+ "Retrieves and summarizes all visual changes detected by Percy AI between the latest and previous builds, helping quickly review what has changed in your project." ,
142108 FetchPercyChangesParamsShape ,
143109 async ( args ) => {
144- return await fetchPercyChanges ( args , config ) ;
110+ try {
111+ trackMCP (
112+ "fetchPercyChanges" ,
113+ server . server . getClientVersion ( ) ! ,
114+ config ,
115+ ) ;
116+ return await fetchPercyChanges ( args , config ) ;
117+ } catch ( error ) {
118+ return handleMCPError ( "fetchPercyChanges" , server , config , error ) ;
119+ }
145120 } ,
146121 ) ;
147122
@@ -150,7 +125,21 @@ export function registerPercyTools(
150125 "Approve or reject a Percy build" ,
151126 ManagePercyBuildApprovalParamsShape ,
152127 async ( args ) => {
153- return await approveOrDeclinePercyBuild ( args , config ) ;
128+ try {
129+ trackMCP (
130+ "managePercyBuildApproval" ,
131+ server . server . getClientVersion ( ) ! ,
132+ config ,
133+ ) ;
134+ return await approveOrDeclinePercyBuild ( args , config ) ;
135+ } catch ( error ) {
136+ return handleMCPError (
137+ "managePercyBuildApproval" ,
138+ server ,
139+ config ,
140+ error ,
141+ ) ;
142+ }
154143 } ,
155144 ) ;
156145
0 commit comments