geronimo-pericoli commited on
Commit
2b15de9
verified
1 Parent(s): 08b169e

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +40 -52
server.py CHANGED
@@ -14,6 +14,7 @@ import json
14
  import os
15
  import aiohttp # Necesario para las peticiones HTTP as铆ncronas
16
 
 
17
 
18
 
19
 
@@ -92,38 +93,37 @@ mcp = FastMCP("OnBase", port=port)
92
  @mcp.resource(
93
  uri="info://available_retrievers",
94
  name="AvailableRetrievers",
95
- description="Lista de retrievers con metadatos (para uso interno)",
96
  mime_type="application/json"
97
  )
98
- def _get_available_retrievers_internal() -> dict:
99
- print("\n[DEBUG] Generando recursos disponibles...")
100
- available = []
101
-
102
- # Verificaci贸n de datos de entrada
103
- print(f"Metadata cargada: {retrievers_metadata.keys()}")
104
-
105
- for source, indexes in retrievers_metadata.items():
106
- print(f"\nProcesando fuente: {source}")
107
- for index_name, metadata in indexes.items():
108
- print(f" Procesando 铆ndice: {index_name}")
109
- available.append({
110
- "name": index_name,
111
- "source": source,
112
- "title": metadata.get("title", "Sin t铆tulo"),
113
- "description": metadata.get("description", "Sin descripci贸n"),
114
- "last_updated": metadata.get("last_updated", "Desconocido")
115
- })
116
-
117
- print("\n[DEBUG] Resultado final:", available)
118
- return {
119
- "retrievers": available,
120
- "count": len(available),
121
- "status": "success",
122
- "timestamp": datetime.datetime.now().isoformat()
123
- }
124
-
125
-
126
-
127
 
128
  @mcp.tool()
129
  async def list_retrievers(ctx: Context) -> dict:
@@ -144,41 +144,29 @@ async def list_retrievers(ctx: Context) -> dict:
144
  }
145
  """
146
  try:
147
- print("\n[DEBUG] Iniciando list_retrievers...")
148
-
149
- # Verificar si el resource est谩 registrado
150
- resources = mcp.list_resources()
151
- print("Resources registrados:", resources)
152
 
153
  if "info://available_retrievers" not in resources:
154
  return {
155
  "retrievers": [],
156
  "count": 0,
157
  "status": "error",
158
- "error": "Resource no registrado"
159
- }
160
-
161
- # Leer el resource
162
- print("Leyendo resource...")
163
- resource = await ctx.read_resource("info://available_retrievers")
164
- print("Resource obtenido:", resource)
165
-
166
- if not resource or "retrievers" not in resource:
167
- return {
168
- "retrievers": [],
169
- "count": 0,
170
- "status": "error",
171
- "error": "Formato de resource inv谩lido"
172
  }
 
 
 
 
173
 
174
  return {
175
- "retrievers": resource["retrievers"],
176
- "count": resource["count"],
177
  "status": "success"
178
  }
179
 
180
  except Exception as e:
181
- print(f"[ERROR] en list_retrievers: {str(e)}")
182
  return {
183
  "retrievers": [],
184
  "count": 0,
 
14
  import os
15
  import aiohttp # Necesario para las peticiones HTTP as铆ncronas
16
 
17
+ import asyncio
18
 
19
 
20
 
 
93
  @mcp.resource(
94
  uri="info://available_retrievers",
95
  name="AvailableRetrievers",
96
+ description="Lista de retrievers con metadatos",
97
  mime_type="application/json"
98
  )
99
+ async def get_available_retrievers() -> dict: # Ahora es async
100
+ try:
101
+ available = []
102
+ print("Metadata keys:", retrievers_metadata.keys())
103
+
104
+ for source, indexes in retrievers_metadata.items():
105
+ for index_name, metadata in indexes.items():
106
+ available.append({
107
+ "name": index_name,
108
+ "source": source,
109
+ "title": metadata.get("title", ""),
110
+ "description": metadata.get("description", "")
111
+ })
112
+
113
+ print("Retrievers disponibles:", available)
114
+ return {
115
+ "retrievers": available,
116
+ "count": len(available),
117
+ "status": "success"
118
+ }
119
+ except Exception as e:
120
+ print(f"Error generating retrievers: {str(e)}")
121
+ return {
122
+ "retrievers": [],
123
+ "count": 0,
124
+ "status": "error",
125
+ "error": str(e)
126
+ }
 
127
 
128
  @mcp.tool()
129
  async def list_retrievers(ctx: Context) -> dict:
 
144
  }
145
  """
146
  try:
147
+ # Verificaci贸n de recursos registrados
148
+ resources = await mcp.list_resources() # Ahora con await
 
 
 
149
 
150
  if "info://available_retrievers" not in resources:
151
  return {
152
  "retrievers": [],
153
  "count": 0,
154
  "status": "error",
155
+ "error": "Resource no encontrado"
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  }
157
+
158
+ # Lectura del resource
159
+ resource_contents = await ctx.read_resource("info://available_retrievers")
160
+ resource = resource_contents[0].content # Acceder al contenido real
161
 
162
  return {
163
+ "retrievers": resource.get("retrievers", []),
164
+ "count": resource.get("count", 0),
165
  "status": "success"
166
  }
167
 
168
  except Exception as e:
169
+ print(f"Error en list_retrievers: {str(e)}")
170
  return {
171
  "retrievers": [],
172
  "count": 0,