MCP_Res / mcp /arxiv.py
mgbam's picture
Update mcp/arxiv.py
3c2582f verified
raw
history blame
915 Bytes
# 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