11import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" ;
22import { z } from "zod" ;
33import { createKernelClient } from "@/lib/mcp/kernel-client" ;
4+ import { errorMessage , jsonResponse , textResponse } from "@/lib/mcp/responses" ;
45
56export function registerAPIKeyCapabilities ( server : McpServer ) {
67 // manage_api_keys -- Create, list, get, update, and delete Kernel API keys
@@ -44,11 +45,7 @@ export function registerAPIKeyCapabilities(server: McpServer) {
4445 switch ( params . action ) {
4546 case "create" : {
4647 if ( ! params . name ) {
47- return {
48- content : [
49- { type : "text" , text : "Error: name is required for create." } ,
50- ] ,
51- } ;
48+ return textResponse ( "Error: name is required for create." ) ;
5249 }
5350 const createParams : Parameters < typeof client . apiKeys . create > [ 0 ] = {
5451 name : params . name ,
@@ -60,106 +57,51 @@ export function registerAPIKeyCapabilities(server: McpServer) {
6057 createParams . days_to_expire = params . days_to_expire ;
6158 }
6259 const apiKey = await client . apiKeys . create ( createParams ) ;
63- return {
64- content : [
65- { type : "text" , text : JSON . stringify ( apiKey , null , 2 ) } ,
66- ] ,
67- } ;
60+ return jsonResponse ( apiKey ) ;
6861 }
6962 case "list" : {
7063 const page = await client . apiKeys . list ( {
7164 ...( params . limit !== undefined && { limit : params . limit } ) ,
7265 ...( params . offset !== undefined && { offset : params . offset } ) ,
7366 } ) ;
7467 const items = page . getPaginatedItems ( ) ;
75- return {
76- content : [
77- {
78- type : "text" ,
79- text : JSON . stringify (
80- {
81- items,
82- has_more : page . has_more ,
83- next_offset : page . next_offset ,
84- } ,
85- null ,
86- 2 ,
87- ) ,
88- } ,
89- ] ,
90- } ;
68+ return jsonResponse ( {
69+ items,
70+ has_more : page . has_more ,
71+ next_offset : page . next_offset ,
72+ } ) ;
9173 }
9274 case "get" : {
9375 if ( ! params . api_key_id ) {
94- return {
95- content : [
96- {
97- type : "text" ,
98- text : "Error: api_key_id is required for get." ,
99- } ,
100- ] ,
101- } ;
76+ return textResponse ( "Error: api_key_id is required for get." ) ;
10277 }
10378 const apiKey = await client . apiKeys . retrieve ( params . api_key_id ) ;
104- return {
105- content : [
106- { type : "text" , text : JSON . stringify ( apiKey , null , 2 ) } ,
107- ] ,
108- } ;
79+ return jsonResponse ( apiKey ) ;
10980 }
11081 case "update" : {
11182 if ( ! params . api_key_id ) {
112- return {
113- content : [
114- {
115- type : "text" ,
116- text : "Error: api_key_id is required for update." ,
117- } ,
118- ] ,
119- } ;
83+ return textResponse ( "Error: api_key_id is required for update." ) ;
12084 }
12185 if ( ! params . name ) {
122- return {
123- content : [
124- { type : "text" , text : "Error: name is required for update." } ,
125- ] ,
126- } ;
86+ return textResponse ( "Error: name is required for update." ) ;
12787 }
12888 const apiKey = await client . apiKeys . update ( params . api_key_id , {
12989 name : params . name ,
13090 } ) ;
131- return {
132- content : [
133- { type : "text" , text : JSON . stringify ( apiKey , null , 2 ) } ,
134- ] ,
135- } ;
91+ return jsonResponse ( apiKey ) ;
13692 }
13793 case "delete" : {
13894 if ( ! params . api_key_id ) {
139- return {
140- content : [
141- {
142- type : "text" ,
143- text : "Error: api_key_id is required for delete." ,
144- } ,
145- ] ,
146- } ;
95+ return textResponse ( "Error: api_key_id is required for delete." ) ;
14796 }
14897 await client . apiKeys . delete ( params . api_key_id ) ;
149- return {
150- content : [ { type : "text" , text : "API key deleted successfully" } ] ,
151- } ;
98+ return textResponse ( "API key deleted successfully" ) ;
15299 }
153100 }
154101 } catch ( error ) {
155- return {
156- content : [
157- {
158- type : "text" ,
159- text : `Error in manage_api_keys (${ params . action } ): ${ error instanceof Error ? error . message : String ( error ) } ` ,
160- } ,
161- ] ,
162- } ;
102+ return textResponse (
103+ `Error in manage_api_keys (${ params . action } ): ${ errorMessage ( error ) } ` ,
104+ ) ;
163105 }
164106 } ,
165107 ) ;
0 commit comments