BioMCP-explorer / app.py
singhankit16's picture
Deploy BioMCP Explorer
f103ad7
"""
BioMCP Gradio App — Main entry point.
Assembles all tabs into one cohesive application.
"""
import gradio as gr
from core.config import load_env_keys
from tabs.settings import create_settings_tab
from tabs.discover import create_discover_tab
from tabs.search import create_search_tab
from tabs.get_detail import create_get_tab
from tabs.helpers import create_helpers_tab
from tabs.enrichment import create_enrichment_tab
from tabs.batch import create_batch_tab
DESCRIPTION = """
# 🧬 BioMCP Explorer
**One interface. Every biomedical entity. Evidence from the sources you trust.**
Explore genes, variants, articles, trials, drugs, diseases, pathways, proteins, adverse events, PGx, GWAS, and phenotypes
— all powered by [BioMCP](https://biomcp.org/) across 30+ upstream APIs.
> **Tip:** Start with the **⚙️ Settings** tab to configure API keys, then explore any entity tab.
"""
def create_app():
with gr.Blocks(title="BioMCP Explorer") as app:
gr.Markdown(DESCRIPTION)
# Session state lives outside tabs so every tab can share it
session_keys = gr.State(load_env_keys())
with gr.Tabs():
# Settings tab first — pass session_keys in
create_settings_tab(session_keys)
# All feature tabs, sharing the same session_keys
create_discover_tab(session_keys)
create_search_tab(session_keys)
create_get_tab(session_keys)
create_helpers_tab(session_keys)
create_enrichment_tab(session_keys)
create_batch_tab(session_keys)
return app
if __name__ == "__main__":
import os
is_hf = os.environ.get("SPACE_ID") is not None
app = create_app()
app.launch(
server_name="0.0.0.0" if is_hf else "127.0.0.1",
server_port=7860 if is_hf else 7865,
share=False,
show_error=True,
theme=gr.themes.Soft(
primary_hue="blue",
secondary_hue="cyan",
neutral_hue="slate",
),
css="""
.gradio-container { max-width: 1400px !important; }
footer { display: none !important; }
""",
)