geronimo-pericoli commited on
Commit
f0f639a
·
verified ·
1 Parent(s): 14cf628

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +18 -35
server.py CHANGED
@@ -95,55 +95,39 @@ port = int(os.getenv("PORT", 7860))
95
  mcp = FastMCP("OnBase", port=port)
96
 
97
 
98
- # Instancia global de ArXiv
99
- paper_tool = ArxivToolSpec()
100
 
101
  @mcp.tool()
102
- async def search_arxiv_papers(
103
- ctx: Context,
104
  query: str,
105
- max_results: Optional[int] = 5,
106
- sort_by: Optional[str] = "relevance"
107
  ) -> dict:
108
  """
109
- Search for academic papers on ArXiv using natural language queries.
110
 
111
  Args:
112
- query: Natural language search query (e.g. "machine learning in healthcare")
113
- max_results: Maximum number of results to return (default 5, max 10)
114
- sort_by: Sorting method ("relevance" or "last_updated_date")
115
 
116
  Returns:
117
- dict: {
118
- "papers": List of paper summaries,
119
- "count": Number of results,
120
- "query": Original query,
121
- "status": "success" or "error"
122
- }
123
  """
124
  try:
125
- # Validar parámetros
126
- max_results = min(max(1, max_results), 10) # Limitar entre 1 y 10
127
- if sort_by not in ["relevance", "last_updated_date"]:
128
- sort_by = "relevance"
129
 
130
- # Usar el tool de ArXiv
131
- results = paper_tool.arxiv_search(
132
- query=query,
133
- max_results=max_results,
134
- sort_by=sort_by
135
- )
136
 
137
- # Procesar resultados
138
  papers = []
139
- for paper in results:
140
  papers.append({
141
- "title": paper.metadata.get("Title", ""),
142
- "authors": paper.metadata.get("Authors", ""),
143
- "abstract": paper.metadata.get("Summary", ""),
144
- "published": paper.metadata.get("Published", ""),
145
- "pdf_url": paper.metadata.get("PDF url", ""),
146
- "arxiv_id": paper.metadata.get("Entry ID", "").split('/')[-1]
147
  })
148
 
149
  return {
@@ -154,7 +138,6 @@ async def search_arxiv_papers(
154
  }
155
 
156
  except Exception as e:
157
- await ctx.error(f"Error in ArXiv search: {str(e)}")
158
  return {
159
  "papers": [],
160
  "count": 0,
 
95
  mcp = FastMCP("OnBase", port=port)
96
 
97
 
98
+ arxiv_tool = ArxivToolSpec(max_results=5).to_tool_list()[0]
99
+ arxiv_tool.return_direct = True
100
 
101
  @mcp.tool()
102
+ async def search_arxiv(
103
+ ctx: Context,
104
  query: str,
105
+ max_results: int = 5
 
106
  ) -> dict:
107
  """
108
+ Busca artículos académicos en ArXiv y devuelve los resultados en bruto.
109
 
110
  Args:
111
+ query: Términos de búsqueda (ej. "machine learning", "ia")
112
+ max_results: Número máximo de resultados (1-10, default 5)
 
113
 
114
  Returns:
115
+ dict: Resultados directos de la API de ArXiv en formato JSON
 
 
 
 
 
116
  """
117
  try:
118
+ # Configurar máximo de resultados
119
+ arxiv_tool.metadata.max_results = min(max(1, max_results), 10)
 
 
120
 
121
+ # Ejecutar búsqueda y obtener resultados
122
+ results = arxiv_tool(query=query)
 
 
 
 
123
 
124
+ # Procesar documentos a formato simple
125
  papers = []
126
+ for doc in results[0][1]: # Lista de documentos
127
  papers.append({
128
+ "content": doc.text_resource.text,
129
+ "metadata": str(doc.metadata),
130
+ "pdf_url": doc.text_resource.text.split('\n')[0].replace('http://arxiv.org/pdf/', 'https://arxiv.org/pdf/')
 
 
 
131
  })
132
 
133
  return {
 
138
  }
139
 
140
  except Exception as e:
 
141
  return {
142
  "papers": [],
143
  "count": 0,