bc_get_pride_project
Retrieve detailed metadata and experimental details for a PRIDE proteomics project using its accession number.
Instructions
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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_accession | Yes | PRIDE project accession (e.g., 'PRD000001') | |
| include_files | No | Include file information (limited to first 20 files) | |
| include_similar_projects | No | Include similar projects based on metadata (limited to 10) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- The main tool handler for get_pride_project. Decorated with @core_mcp.tool(), it retrieves detailed information about a PRIDE mass spectrometry proteomics project via the EBI PRIDE Archive API. Accepts project_accession (required), include_files, and include_similar_projects (optional) parameters. Returns project metadata and optionally files or similar projects.
@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}"} - Tool function signature with Pydantic Field descriptions defining the input schema: project_accession (str), include_files (bool, default False), include_similar_projects (bool, default False).
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: - src/biocontext_kb/core/pride/_get_pride_project.py:9-10 (registration)Tool registration via the @core_mcp.tool() decorator on the get_pride_project function. core_mcp is a FastMCP instance defined in src/biocontext_kb/core/_server.py.
@core_mcp.tool() def get_pride_project( - src/biocontext_kb/core/pride/__init__.py:1-7 (registration)The pride package's __init__.py re-exports get_pride_project from the implementation module, making it accessible via from .pride import * in the core __init__.py.
from ._get_pride_project import get_pride_project from ._search_pride_projects import search_pride_projects from ._search_pride_proteins import search_pride_proteins __all__ = [ "get_pride_project", "search_pride_projects", - The core_mcp FastMCP server instance that provides the .tool() decorator used to register get_pride_project as an MCP tool.
from fastmcp import FastMCP core_mcp = FastMCP( # type: ignore "BC", instructions="Provides access to biomedical knowledge bases.", )