@@ -7,10 +7,10 @@ public protocol MCPServer: AnyObject {
77 var mcpTools : [ MCPTool ] { get }
88
99 /// Returns an array of all MCP resources defined in this type
10- var mcpResources : [ MCPResource ] { get }
10+ var mcpResources : [ MCPResource ] { get async }
1111
1212 /// Returns an array of all MCP resource templates defined in this type
13- var mcpResourceTemplates : [ MCPResourceTemplate ] { get }
13+ var mcpResourceTemplates : [ MCPResourceTemplate ] { get async }
1414
1515
1616 /// Calls a tool by name with the provided arguments
@@ -25,7 +25,7 @@ public protocol MCPServer: AnyObject {
2525 /// - Parameter uri: The URI of the resource to get
2626 /// - Returns: The resource content, or nil if the resource doesn't exist
2727 /// - Throws: MCPResourceError if there's an error getting the resource
28- func getResource( uri: URL ) throws -> MCPResourceContent ?
28+ func getResource( uri: URL ) async throws -> MCPResourceContent ?
2929
3030 /// Handles a JSON-RPC request
3131 /// - Parameter request: The JSON-RPC request to handle
@@ -62,13 +62,13 @@ public extension MCPServer {
6262 return createToolsResponse ( id: request. id ?? 0 )
6363
6464 case " resources/list " :
65- return createResourcesListResponse ( id: request. id ?? 0 )
65+ return await createResourcesListResponse ( id: request. id ?? 0 )
6666
6767 case " resources/templates/list " :
68- return createResourceTemplatesListResponse ( id: request. id ?? 0 )
68+ return await createResourceTemplatesListResponse ( id: request. id ?? 0 )
6969
7070 case " resources/read " :
71- return createResourcesReadResponse ( id: request. id ?? 0 , request: request)
71+ return await createResourcesReadResponse ( id: request. id ?? 0 , request: request)
7272
7373 case " tools/call " :
7474 return await handleToolCall ( request)
@@ -101,9 +101,9 @@ public extension MCPServer {
101101 /// Creates a resources list response
102102 /// - Parameter id: The request ID
103103 /// - Returns: The resources list response
104- func createResourcesListResponse( id: Int ) -> JSONRPC . Response {
104+ func createResourcesListResponse( id: Int ) async -> JSONRPC . Response {
105105 // Convert MCPResource objects to dictionaries
106- let resourceDicts = mcpResources. map { resource -> [ String : Any ] in
106+ let resourceDicts = await mcpResources. map { resource -> [ String : Any ] in
107107 return [
108108 " uri " : resource. uri. absoluteString,
109109 " name " : resource. name,
@@ -194,7 +194,7 @@ public extension MCPServer {
194194 /// - id: The request ID
195195 /// - request: The original JSON-RPC request
196196 /// - Returns: The resources read response
197- func createResourcesReadResponse( id: Int , request: JSONRPCRequest ) -> JSONRPC . Response {
197+ func createResourcesReadResponse( id: Int , request: JSONRPCRequest ) async -> JSONRPC . Response {
198198 // Extract the URI from the request params
199199 guard let uriString = request. params ? [ " uri " ] ? . value as? String ,
200200 let uri = URL ( string: uriString) else {
@@ -207,7 +207,7 @@ public extension MCPServer {
207207
208208 do {
209209 // Try to get the resource content
210- if let resourceContent = try getResource ( uri: uri) {
210+ if let resourceContent = try await getResource ( uri: uri) {
211211 // Convert MCPResourceContent to dictionary
212212 var contentDict : [ String : Any ] = [
213213 " uri " : resourceContent. uri. absoluteString
@@ -252,9 +252,9 @@ public extension MCPServer {
252252 /// Creates a resource templates list response
253253 /// - Parameter id: The request ID
254254 /// - Returns: The resource templates list response
255- func createResourceTemplatesListResponse( id: Int ) -> JSONRPC . Response {
255+ func createResourceTemplatesListResponse( id: Int ) async -> JSONRPC . Response {
256256 // Convert MCPResourceTemplate objects to dictionaries
257- let templateDicts = mcpResourceTemplates. map { template -> [ String : Any ] in
257+ let templateDicts = await mcpResourceTemplates. map { template -> [ String : Any ] in
258258 return [
259259 " uriTemplate " : template. uriTemplate. absoluteString,
260260 " name " : template. name,
@@ -296,7 +296,7 @@ public extension MCPServer {
296296 }
297297
298298 /// Default implementation
299- func getResource( uri: URL ) throws -> MCPResourceContent ? {
299+ func getResource( uri: URL ) async throws -> MCPResourceContent ? {
300300 return nil
301301 }
302302
0 commit comments