geronimo-pericoli commited on
Commit
4765456
verified
1 Parent(s): 2afe028

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +21 -59
server.py CHANGED
@@ -90,15 +90,28 @@ mcp = FastMCP("OnBase", port=port)
90
 
91
 
92
 
93
- @mcp.resource(uri="info://available_retrievers")
94
- async def _get_available_retrievers() -> dict:
 
 
 
 
 
 
 
 
 
95
  try:
96
  available = []
97
- for source, indexes in retrievers_metadata.items():
 
 
 
 
98
  for index_name, metadata in indexes.items():
99
  available.append({
100
  "name": index_name,
101
- "source": source,
102
  "title": metadata.get("title", ""),
103
  "description": metadata.get("description", "")
104
  })
@@ -106,67 +119,16 @@ async def _get_available_retrievers() -> dict:
106
  return {
107
  "retrievers": available,
108
  "count": len(available),
109
- "status": "success"
110
- }
111
- except Exception as e:
112
- return {
113
- "retrievers": [],
114
- "count": 0,
115
- "status": "error",
116
- "error": str(e)
117
- }
118
-
119
-
120
-
121
-
122
- @mcp.tool()
123
- async def list_retrievers(ctx: Context) -> dict:
124
- """
125
- Devuelve la lista de retrievers disponibles
126
-
127
- Returns:
128
- dict: {
129
- "retrievers": [{
130
- "name": str,
131
- "title": str,
132
- "description": str,
133
- "source": str
134
- }],
135
- "count": int,
136
- "status": str,
137
- "error": str (opcional)
138
  }
139
- """
140
- try:
141
- # Lectura del resource
142
- resource_contents = await ctx.read_resource("info://available_retrievers")
143
-
144
- if not resource_contents:
145
- await ctx.warning("No resource contents found for info://available_retrievers")
146
- return {
147
- "retrievers": [],
148
- "count": 0,
149
- "status": "error",
150
- "error": "Resource not found"
151
- }
152
-
153
- resource = resource_contents[0].content # Acceder al contenido real
154
-
155
- await ctx.debug(f"Retrieved {len(resource.get('retrievers', []))} retrievers")
156
-
157
- return {
158
- "retrievers": resource.get("retrievers", []),
159
- "count": resource.get("count", 0),
160
- "status": "success"
161
- }
162
-
163
  except Exception as e:
164
- await ctx.error(f"Error en list_retrievers: {str(e)}")
165
  return {
166
  "retrievers": [],
167
  "count": 0,
168
  "status": "error",
169
- "error": str(e)
 
170
  }
171
 
172
 
 
90
 
91
 
92
 
93
+ @mcp.tool()
94
+ async def list_retrievers(source: str = None) -> dict:
95
+ """
96
+ Devuelve la lista de retrievers disponibles, opcionalmente filtrados por source
97
+
98
+ Args:
99
+ source (str, optional): Si se especifica, solo devuelve los retrievers de esta fuente. Defaults to None.
100
+
101
+ Returns:
102
+ dict: Diccionario con la lista de retrievers y metadatos
103
+ """
104
  try:
105
  available = []
106
+ for current_source, indexes in retrievers_metadata.items():
107
+ # Si se especific贸 un source y no coincide, saltar esta fuente
108
+ if source and current_source != source:
109
+ continue
110
+
111
  for index_name, metadata in indexes.items():
112
  available.append({
113
  "name": index_name,
114
+ "source": current_source,
115
  "title": metadata.get("title", ""),
116
  "description": metadata.get("description", "")
117
  })
 
119
  return {
120
  "retrievers": available,
121
  "count": len(available),
122
+ "status": "success",
123
+ "source_filter": source if source else "all"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  except Exception as e:
 
126
  return {
127
  "retrievers": [],
128
  "count": 0,
129
  "status": "error",
130
+ "error": str(e),
131
+ "source_filter": source if source else "all"
132
  }
133
 
134