geronimo-pericoli commited on
Commit
9fc2b4c
verified
1 Parent(s): 7e25ccc

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +28 -11
server.py CHANGED
@@ -95,20 +95,33 @@ mcp = FastMCP("OnBase", port=port)
95
 
96
 
97
 
98
-
99
-
100
-
101
- @mcp.resource("data://retrievers/list")
102
- async def retrievers_list_resource(ctx: Context) -> dict:
103
  """
104
- Resource que devuelve todos los retrievers disponibles.
105
- El filtrado por source se manejar谩 en el tool.
 
 
 
 
 
 
 
 
 
 
 
 
106
  """
107
  try:
108
- retrievers_metadata = ctx.get("retrievers_metadata", {})
109
  available = []
 
110
 
111
  for current_source, indexes in retrievers_metadata.items():
 
 
 
 
112
  for index_name, metadata in indexes.items():
113
  available.append({
114
  "name": index_name,
@@ -120,17 +133,21 @@ async def retrievers_list_resource(ctx: Context) -> dict:
120
  return {
121
  "retrievers": available,
122
  "count": len(available),
123
- "status": "success"
 
 
124
  }
125
-
126
  except Exception as e:
127
  return {
128
  "retrievers": [],
129
  "count": 0,
130
  "status": "error",
131
- "error": str(e)
 
 
132
  }
133
 
 
134
  @mcp.tool()
135
  async def list_retrievers(ctx: Context, source: str = None) -> dict:
136
  """
 
95
 
96
 
97
 
98
+ @mcp.tool()
99
+ async def list_retrievers(source: str = None) -> dict:
 
 
 
100
  """
101
+ Devuelve la lista de retrievers disponibles.
102
+ Si se especifica una source y existe, filtra por ella; si no existe, devuelve todas.
103
+
104
+ Args:
105
+ source (str, optional): Fuente para filtrar. Si no existe, se ignorar谩. Defaults to None.
106
+
107
+ Returns:
108
+ dict: {
109
+ "retrievers": Lista de retrievers (filtrados o completos),
110
+ "count": N煤mero total,
111
+ "status": "success"|"error",
112
+ "source_requested": source, # Muestra lo que se solicit贸
113
+ "source_used": "all"|source # Muestra lo que realmente se us贸
114
+ }
115
  """
116
  try:
 
117
  available = []
118
+ source_exists = source in retrievers_metadata if source else False
119
 
120
  for current_source, indexes in retrievers_metadata.items():
121
+ # Solo filtrar si el source existe, sino mostrar todo
122
+ if source_exists and current_source != source:
123
+ continue
124
+
125
  for index_name, metadata in indexes.items():
126
  available.append({
127
  "name": index_name,
 
133
  return {
134
  "retrievers": available,
135
  "count": len(available),
136
+ "status": "success",
137
+ "source_requested": source,
138
+ "source_used": source if source_exists else "all"
139
  }
 
140
  except Exception as e:
141
  return {
142
  "retrievers": [],
143
  "count": 0,
144
  "status": "error",
145
+ "error": str(e),
146
+ "source_requested": source,
147
+ "source_used": "none"
148
  }
149
 
150
+
151
  @mcp.tool()
152
  async def list_retrievers(ctx: Context, source: str = None) -> dict:
153
  """