# mcp/nlp.py import spacy import subprocess def load_model(): try: return spacy.load("en_core_sci_sm") except OSError: try: subprocess.run(["python", "-m", "spacy", "download", "en_core_web_sm"], check=True) return spacy.load("en_core_web_sm") except Exception as e: raise RuntimeError("Failed to download spaCy model. Details: " + str(e)) nlp = load_model() def extract_keywords(text: str): """Extract biomedical or general entities from text.""" doc = nlp(text) return list(set(ent.text for ent in doc.ents if len(ent.text.strip()) > 2))