Claude Code Plugins

Community-maintained marketplace

Feedback

lifesciences-proteomics

@donbr/lifesciences-research
3
0

Queries protein databases (UniProt, STRING, BioGRID) via curl for protein lookups, protein-protein interactions, functional enrichment analysis, and cross-database ID mapping. This skill should be used when the user asks to \"find protein interactions\", \"analyze interaction networks\", \"perform GO enrichment\", \"map protein IDs\", or mentions PPI networks, UniProt accessions, STRING scores, BioGRID interactions, or protein ID conversion between databases.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name lifesciences-proteomics
description Queries protein databases (UniProt, STRING, BioGRID) via curl for protein lookups, protein-protein interactions, functional enrichment analysis, and cross-database ID mapping. This skill should be used when the user asks to "find protein interactions", "analyze interaction networks", "perform GO enrichment", "map protein IDs", or mentions PPI networks, UniProt accessions, STRING scores, BioGRID interactions, or protein ID conversion between databases.

Proteomics API Skills

Query protein databases directly via curl. These endpoints complement the Life Sciences MCPs.

Quick Reference

Task API Endpoint
Search proteins UniProt /uniprotkb/search
Get protein details UniProt /uniprotkb/{accession}
Batch ID mapping UniProt /idmapping/run
Protein interactions STRING /network
Functional enrichment STRING /enrichment
Genetic/physical interactions BioGRID /interactions

Curl Examples

UniProt: Protein Search & Retrieval

# Search for protein by gene name
curl -s "https://rest.uniprot.org/uniprotkb/search?query=gene:TP53+AND+organism_id:9606&format=json&size=3" \
  | jq '.results[:1][] | {accession: .primaryAccession, name: .proteinDescription.recommendedName.fullName.value}'

# Get protein by accession
curl -s "https://rest.uniprot.org/uniprotkb/P04637.json" \
  | jq '{accession: .primaryAccession, gene: .genes[0].geneName.value, function: .comments[] | select(.commentType=="FUNCTION") | .texts[0].value}'

# Get protein sequence (FASTA)
curl -s "https://rest.uniprot.org/uniprotkb/P04637.fasta"

# Search with field queries
curl -s "https://rest.uniprot.org/uniprotkb/search?query=reviewed:true+AND+organism_id:9606+AND+keyword:Apoptosis&format=json&size=5" \
  | jq '.results[] | {accession: .primaryAccession, gene: .genes[0].geneName.value}'

UniProt: Batch ID Mapping (Async)

# Submit ID mapping job
JOB_ID=$(curl -s "https://rest.uniprot.org/idmapping/run" \
  --form 'ids=P04637,P38398,P51587' \
  --form 'from=UniProtKB_AC-ID' \
  --form 'to=Ensembl' | jq -r '.jobId')

# Check job status
curl -s "https://rest.uniprot.org/idmapping/status/$JOB_ID"

# Get results (when complete)
curl -s "https://rest.uniprot.org/idmapping/results/$JOB_ID" | jq '.results'

STRING: Protein-Protein Interactions

# Get interaction network for proteins
curl -s "https://string-db.org/api/json/network?identifiers=TP53&species=9606&required_score=700&limit=10" \
  | jq '.[] | {proteinA: .preferredName_A, proteinB: .preferredName_B, score}'

# Network for multiple proteins
curl -s "https://string-db.org/api/json/network?identifiers=TP53%0dMDM2%0dATM&species=9606" \
  | jq '.[] | {A: .preferredName_A, B: .preferredName_B, score}'

# Get evidence scores breakdown
curl -s "https://string-db.org/api/json/network?identifiers=TP53&species=9606&required_score=900&limit=5" \
  | jq '.[] | {A: .preferredName_A, B: .preferredName_B, experimental: .escore, database: .dscore, textmining: .tscore}'

STRING: Functional Enrichment

# GO/KEGG/Reactome enrichment for protein set
curl -s "https://string-db.org/api/json/enrichment?identifiers=9606.ENSP00000269305%0d9606.ENSP00000258149%0d9606.ENSP00000278616&species=9606" \
  | jq '.[:5][] | {category, term, description, fdr}'

# Enrichment with gene symbols (need to resolve first)
curl -s "https://string-db.org/api/json/get_string_ids?identifiers=TP53%0dMDM2%0dATM&species=9606" \
  | jq '.[].stringId' # Use these IDs for enrichment

STRING: Network Visualization

# Get network image URL
echo "https://string-db.org/api/highres_image/network?identifiers=TP53%0dMDM2%0dATM&species=9606&network_flavor=confidence"

# Get SVG
curl -s "https://string-db.org/api/svg/network?identifiers=TP53&species=9606&add_nodes=5" > network.svg

BioGRID: Genetic & Physical Interactions

# Get interactions for gene (requires API key)
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&format=json&accesskey=${BIOGRID_API_KEY}" \
  | jq 'to_entries[:5][] | .value | {geneA: .OFFICIAL_SYMBOL_A, geneB: .OFFICIAL_SYMBOL_B, system: .EXPERIMENTAL_SYSTEM}'

# Filter by experimental method
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&evidenceList=Two-hybrid&format=json&accesskey=${BIOGRID_API_KEY}"

# Low-throughput only (higher confidence)
curl -s "https://webservice.thebiogrid.org/interactions?geneList=TP53&taxId=9606&throughputTag=low&format=json&accesskey=${BIOGRID_API_KEY}"

ID Resolution Patterns

# Gene symbol → STRING ID
curl -s "https://string-db.org/api/json/get_string_ids?identifiers=TP53&species=9606" \
  | jq '.[0].stringId'
# Output: "9606.ENSP00000269305"

# STRING ID → UniProt
curl -s "https://rest.ensembl.org/xrefs/id/ENSP00000269305?content-type=application/json" \
  | jq '.[] | select(.dbname=="Uniprot/SWISSPROT") | .primary_id'

Rate Limits

API Limit Auth Required
UniProt 100 req/s No
STRING 1 req/s No
BioGRID 10 req/s Yes (API key)