geronimo-pericoli commited on
Commit
1254511
verified
1 Parent(s): 7918863

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +23 -37
server.py CHANGED
@@ -95,53 +95,22 @@ mcp = FastMCP("OnBase", port=port)
95
 
96
 
97
 
98
- @mcp.prompt()
99
- def improve_oms_topic_prompt(topic: str, context: str = None) -> str:
100
- """Generates an optimized prompt to request detailed WHO-related information about a health topic.
101
- Args:
102
- topic: The health topic to inquire about (e.g., 'malaria vaccination', 'pandemic preparedness')
103
- context: Optional context to make the query more specific (e.g., 'in developing countries')
104
- Returns:
105
- A refined prompt asking for WHO-specific information on the topic.
106
- """
107
- base_prompt = f"Could you provide a comprehensive explanation of '{topic}'"
108
-
109
- if context:
110
- base_prompt += f" {context}"
111
-
112
- return (
113
- base_prompt + " based on WHO guidelines and latest recommendations? "
114
- "Please include: key facts, recommended interventions, "
115
- "target populations, and relevant WHO program references."
116
- )
117
-
118
 
119
 
120
 
121
- @mcp.tool()
122
- async def list_retrievers(source: str = None) -> dict:
123
  """
124
- Devuelve la lista de retrievers disponibles.
125
- Si se especifica una source y existe, filtra por ella; si no existe, devuelve todas.
126
-
127
- Args:
128
- source (str, optional): Fuente para filtrar. Si no existe, se ignorar谩. Defaults to None.
129
-
130
- Returns:
131
- dict: {
132
- "retrievers": Lista de retrievers (filtrados o completos),
133
- "count": N煤mero total,
134
- "status": "success"|"error",
135
- "source_requested": source, # Muestra lo que se solicit贸
136
- "source_used": "all"|source # Muestra lo que realmente se us贸
137
- }
138
  """
139
  try:
 
 
 
140
  available = []
141
  source_exists = source in retrievers_metadata if source else False
142
 
143
  for current_source, indexes in retrievers_metadata.items():
144
- # Solo filtrar si el source existe, sino mostrar todo
145
  if source_exists and current_source != source:
146
  continue
147
 
@@ -160,6 +129,7 @@ async def list_retrievers(source: str = None) -> dict:
160
  "source_requested": source,
161
  "source_used": source if source_exists else "all"
162
  }
 
163
  except Exception as e:
164
  return {
165
  "retrievers": [],
@@ -170,6 +140,22 @@ async def list_retrievers(source: str = None) -> dict:
170
  "source_used": "none"
171
  }
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
 
174
 
175
 
 
95
 
96
 
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
 
100
 
101
+ @mcp.resource("data://retrievers/list")
102
+ async def retrievers_list_resource(ctx: Context, source: str = None) -> dict:
103
  """
104
+ Resource interno que proporciona la lista de retrievers.
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  """
106
  try:
107
+ # Cargamos los metadatos desde el contexto
108
+ retrievers_metadata = ctx.get("retrievers_metadata", {})
109
+
110
  available = []
111
  source_exists = source in retrievers_metadata if source else False
112
 
113
  for current_source, indexes in retrievers_metadata.items():
 
114
  if source_exists and current_source != source:
115
  continue
116
 
 
129
  "source_requested": source,
130
  "source_used": source if source_exists else "all"
131
  }
132
+
133
  except Exception as e:
134
  return {
135
  "retrievers": [],
 
140
  "source_used": "none"
141
  }
142
 
143
+ # 2. Luego definimos el tool que usar谩 el cliente
144
+ @mcp.tool()
145
+ async def list_retrievers(ctx: Context, source: str = None) -> dict:
146
+ """
147
+ Devuelve la lista de retrievers disponibles.
148
+ Si se especifica una source y existe, filtra por ella; si no existe, devuelve todas.
149
+
150
+ Args:
151
+ source (str, optional): Fuente para filtrar. Si no existe, se ignorar谩.
152
+
153
+ Returns:
154
+ dict: Misma estructura que el resource pero accesible via tool.
155
+ """
156
+ # Simplemente delegamos al resource
157
+ return await ctx.resources.read("data://retrievers/list", params={"source": source})
158
+
159
 
160
 
161