Skip to main content
Glama
biocontext-ai

BioContextAI Knowledgebase MCP

Official

bc_get_pride_project

Retrieve comprehensive details about a PRIDE proteomics project, including metadata, experimental data, and optional file or similar project information, using a specific project accession.

Instructions

Get detailed information about a specific PRIDE project.

PRIDE (PRoteomics IDEntifications) is a public repository for mass spectrometry proteomics data. This function retrieves comprehensive information about a specific project including metadata, experimental details, and optionally associated files and similar projects.

Args: project_accession (str): The PRIDE project accession (e.g., "PRD000001"). include_files (bool, optional): Whether to include file information. Defaults to False. include_similar_projects (bool, optional): Whether to include similar projects. Defaults to False.

Returns: dict: Project information including metadata, experimental details, and optional file/similar project data

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
include_filesNoWhether to include file information for the project
include_similar_projectsNoWhether to include similar projects based on metadata
project_accessionYesThe PRIDE project accession (e.g., 'PRD000001')

Implementation Reference

  • The handler function for the PRIDE project retrieval tool (named 'get_pride_project' in code and tests). It fetches project details from the PRIDE API, with optional file lists and similar projects. Note: No exact 'bc_get_pride_project' found; this matches the functionality and is called 'get_pride_project'.
    @core_mcp.tool() def get_pride_project( project_accession: Annotated[ str, Field(description="PRIDE project accession (e.g., 'PRD000001')"), ], include_files: Annotated[ bool, Field(description="Include file information (limited to first 20 files)"), ] = False, include_similar_projects: Annotated[ bool, Field(description="Include similar projects based on metadata (limited to 10)"), ] = False, ) -> dict: """Retrieve detailed information about a specific PRIDE mass spectrometry proteomics project. Returns metadata and experimental details. Returns: dict: Project details with accession, title, description, organisms, instruments, publications, optionally files/similar_projects or error message. """ base_url = "https://www.ebi.ac.uk/pride/ws/archive/v3" try: # Get basic project information project_url = f"{base_url}/projects/{project_accession}" response = requests.get(project_url) response.raise_for_status() project_data = response.json() if not project_data: return {"error": f"No data found for PRIDE project {project_accession}"} result = project_data # Optionally include file information if include_files: try: files_url = f"{base_url}/projects/{project_accession}/files" files_response = requests.get(files_url, params={"pageSize": 20}) if files_response.status_code == 200: files_data = files_response.json() result["files"] = files_data[:20] # Limit to first 20 files # Get file count count_url = f"{base_url}/projects/{project_accession}/files/count" count_response = requests.get(count_url) if count_response.status_code == 200: result["total_files"] = count_response.json() except Exception: result["files"] = {"error": "Could not fetch file information"} # Optionally include similar projects if include_similar_projects: try: similar_url = f"{base_url}/projects/{project_accession}/similarProjects" similar_response = requests.get(similar_url, params={"pageSize": 10}) if similar_response.status_code == 200: similar_data = similar_response.json() result["similar_projects"] = similar_data[:10] # Limit to first 10 except Exception: result["similar_projects"] = {"error": "Could not fetch similar projects"} return result except requests.exceptions.HTTPError as e: if e.response.status_code == 404: return {"error": f"PRIDE project {project_accession} not found"} return {"error": f"HTTP error: {e}"} except Exception as e: return {"error": f"Exception occurred: {e!s}"}
  • Input schema defined using Pydantic Annotated and Field for the tool parameters: project_accession (required str), include_files (optional bool), include_similar_projects (optional bool).
    def get_pride_project( project_accession: Annotated[ str, Field(description="PRIDE project accession (e.g., 'PRD000001')"), ], include_files: Annotated[ bool, Field(description="Include file information (limited to first 20 files)"), ] = False, include_similar_projects: Annotated[ bool, Field(description="Include similar projects based on metadata (limited to 10)"), ] = False, ) -> dict:
  • Registration via re-export in pride/__init__.py, which allows the tool to be imported into core/__init__.py via 'from .pride import *', registering it on core_mcp when the module is loaded.
    from ._get_pride_project import get_pride_project
  • Core module imports all tools from submodules including pride, ensuring they are registered on the core_mcp server.
    from .pride import *

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/biocontext-ai/knowledgebase-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server