File size: 915 Bytes
ee63964 83ccb99 ee63964 3036ad5 83ccb99 ee63964 3c2582f ee63964 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# mcp/arxiv.py
import feedparser
from urllib.parse import quote_plus
ARXIV_BASE = "http://export.arxiv.org/api/query?search_query="
async def fetch_arxiv(query: str, max_results: int = 5):
"""Fetch latest arXiv papers for the query."""
encoded_query = quote_plus(query)
search_url = f"{ARXIV_BASE}{encoded_query}&max_results={max_results}"
feed = feedparser.parse(search_url)
results = []
for entry in feed.entries:
results.append({
"title": getattr(entry, "title", ""),
"authors": ", ".join([a.name for a in getattr(entry, "authors", [])]) if hasattr(entry, 'authors') else "",
"summary": getattr(entry, "summary", ""),
"link": getattr(entry, "link", ""),
"published": entry.get("published", "") if hasattr(entry, 'get') else getattr(entry, "published", ""),
"source": "arXiv"
})
return results
|