@@ -55,6 +55,9 @@ type McpExecutorExtension = {
5555 updateSource : (
5656 input : McpUpdateSourceInput ,
5757 ) => Effect . Effect < Source , Error > ;
58+ refreshSource : (
59+ sourceId : Source [ "id" ] ,
60+ ) => Effect . Effect < Source , Error > ;
5861 removeSource : (
5962 sourceId : Source [ "id" ] ,
6063 ) => Effect . Effect < boolean , Error > ;
@@ -117,6 +120,14 @@ export const McpHttpGroup = HttpApiGroup.make("mcp")
117120 . addError ( ControlPlaneNotFoundError )
118121 . addError ( ControlPlaneStorageError ) ,
119122 )
123+ . add (
124+ HttpApiEndpoint . post ( "refreshSource" ) `/workspaces/${ workspaceIdParam } /plugins/mcp/sources/${ sourceIdParam } /refresh`
125+ . addSuccess ( SourceSchema )
126+ . addError ( ControlPlaneBadRequestError )
127+ . addError ( ControlPlaneForbiddenError )
128+ . addError ( ControlPlaneNotFoundError )
129+ . addError ( ControlPlaneStorageError ) ,
130+ )
120131 . add (
121132 HttpApiEndpoint . del ( "removeSource" ) `/workspaces/${ workspaceIdParam } /plugins/mcp/sources/${ sourceIdParam } `
122133 . addSuccess ( Schema . Struct ( { removed : Schema . Boolean } ) )
@@ -284,6 +295,17 @@ export const mcpHttpPlugin = (): ExecutorHttpPlugin<
284295 ) ,
285296 )
286297 )
298+ . handle ( "refreshSource" , ( { path } ) =>
299+ resolveRequestedLocalWorkspace (
300+ "mcp.refreshSource" ,
301+ path . workspaceId ,
302+ ) . pipe (
303+ Effect . flatMap ( ( ) => executor . mcp . refreshSource ( path . sourceId ) ) ,
304+ Effect . mapError ( ( cause ) =>
305+ mapPluginStorageError ( "mcp.refreshSource" , cause )
306+ ) ,
307+ )
308+ )
287309 . handle ( "removeSource" , ( { path } ) =>
288310 resolveRequestedLocalWorkspace (
289311 "mcp.removeSource" ,
0 commit comments