barissozudogru commited on
Commit
b0ecb2b
·
verified ·
1 Parent(s): 8d3215c

enable mcp server, add tags, type-annotate search function

Browse files
Files changed (2) hide show
  1. README.md +14 -1
  2. app.py +20 -2
README.md CHANGED
@@ -6,8 +6,21 @@ colorTo: blue
6
  sdk: gradio
7
  sdk_version: 5.50.0
8
  app_file: app.py
9
- pinned: false
10
  license: mit
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  ---
12
 
13
  # Research Papers Federated Search
 
6
  sdk: gradio
7
  sdk_version: 5.50.0
8
  app_file: app.py
9
+ pinned: true
10
  license: mit
11
+ mcp_server: true
12
+ tags:
13
+ - research
14
+ - papers
15
+ - academic-search
16
+ - federated-search
17
+ - mcp
18
+ - mcp-server
19
+ - arxiv
20
+ - pubmed
21
+ - semantic-scholar
22
+ - openalex
23
+ - scholarly
24
  ---
25
 
26
  # Research Papers Federated Search
app.py CHANGED
@@ -52,7 +52,25 @@ def _dedupe(papers):
52
  return out
53
 
54
 
55
- def search(query, source_list, max_results, progress=gr.Progress()):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  if not query or not query.strip():
57
  return pd.DataFrame(), "Enter a search query above."
58
  if not source_list:
@@ -193,4 +211,4 @@ with gr.Blocks(title="Research Papers Federated Search", theme=theme) as demo:
193
 
194
 
195
  if __name__ == "__main__":
196
- demo.launch()
 
52
  return out
53
 
54
 
55
+ def search(
56
+ query: str,
57
+ source_list: list,
58
+ max_results: int,
59
+ progress=gr.Progress(),
60
+ ):
61
+ """Federated academic paper search across arXiv, PubMed, Semantic Scholar, and OpenAlex.
62
+
63
+ Returns deduplicated results from the selected sources. Deduplication is by
64
+ DOI when available, then by (source, source_id).
65
+
66
+ Args:
67
+ query: Search query string.
68
+ source_list: List of source names to query. Valid values: arxiv, pubmed, semantic_scholar, openalex.
69
+ max_results: Maximum results to fetch per source (5-50).
70
+
71
+ Returns:
72
+ Tuple of (DataFrame of deduplicated papers, markdown diagnostics string).
73
+ """
74
  if not query or not query.strip():
75
  return pd.DataFrame(), "Enter a search query above."
76
  if not source_list:
 
211
 
212
 
213
  if __name__ == "__main__":
214
+ demo.launch(mcp_server=True)