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

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +23 -21
server.py CHANGED
@@ -100,50 +100,52 @@ 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 {
134
- "papers": papers,
135
- "count": len(papers),
136
- "query": query,
137
- "status": "success"
138
  }
139
 
140
  except Exception as e:
141
  return {
142
- "papers": [],
143
- "count": 0,
144
- "query": query,
145
- "status": "error",
146
- "error": str(e)
147
  }
148
 
149
 
 
100
 
101
  @mcp.tool()
102
  async def search_arxiv(
 
103
  query: str,
104
  max_results: int = 5
105
+ ) -> Dict[str, Any]:
106
  """
107
+ Busca artículos académicos en ArXiv.
108
 
109
  Args:
110
+ query: Términos de búsqueda (ej. "deep learning")
111
  max_results: Número máximo de resultados (1-10, default 5)
112
 
113
  Returns:
114
+ Dict: Resultados de la búsqueda con metadatos de los papers
115
  """
116
  try:
117
  # Configurar máximo de resultados
118
+ max_results = min(max(1, max_results), 10)
119
+ arxiv_tool.metadata.max_results = max_results
120
 
121
  # Ejecutar búsqueda y obtener resultados
122
+ tool_output = arxiv_tool(query=query)
123
 
124
+ # Procesar documentos
125
  papers = []
126
+ for doc in tool_output.raw_output: # Acceder correctamente a los documentos
127
+ content = doc.text_resource.text.split('\n')
128
  papers.append({
129
+ 'title': content[0].split(': ')[1] if ': ' in content[0] else content[0],
130
+ 'abstract': '\n'.join(content[1:]).strip(),
131
+ 'pdf_url': content[0].split(': ')[0].replace('http://', 'https://'),
132
+ 'arxiv_id': content[0].split(': ')[0].split('/')[-1].replace('v1', '')
133
  })
134
 
135
  return {
136
+ 'papers': papers,
137
+ 'count': len(papers),
138
+ 'query': query,
139
+ 'status': 'success'
140
  }
141
 
142
  except Exception as e:
143
  return {
144
+ 'papers': [],
145
+ 'count': 0,
146
+ 'query': query,
147
+ 'status': 'error',
148
+ 'error': str(e)
149
  }
150
 
151