Skip to main content
Glama
biocontext-ai

BioContextAI Knowledgebase MCP

Official

bc_get_pride_project

Retrieve detailed metadata and experimental information for PRIDE mass spectrometry proteomics projects using project accession numbers.

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

TableJSON Schema
NameRequiredDescriptionDefault
project_accessionYesPRIDE project accession (e.g., 'PRD000001')
include_filesNoInclude file information (limited to first 20 files)
include_similar_projectsNoInclude similar projects based on metadata (limited to 10)

Implementation Reference

  • The handler function for the 'bc_get_pride_project' tool (registered as 'get_pride_project' on core_mcp, prefixed to 'bc_' in main app). Fetches PRIDE project metadata, optional files and similar projects from EBI API.
    @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}"}
  • Pydantic schema definition for tool inputs using Annotated and Field, output is dict.
    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:
  • Registers the core_mcp server (containing get_pride_project tool) into the main mcp_app with prefix slugify('BC') = 'bc', making tool name 'bc_get_pride_project'.
    for mcp in [core_mcp, *(await get_openapi_mcps())]: await mcp_app.import_server( mcp, slugify(mcp.name), ) logger.info("MCP server setup complete.")
  • Defines the core_mcp FastMCP instance named 'BC' where tools like get_pride_project are registered via decorators.
    core_mcp = FastMCP( # type: ignore "BC", instructions="Provides access to biomedical knowledge bases.", )
  • Imports the get_pride_project function, triggering registration via its @core_mcp.tool() decorator when the module is imported.
    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", "search_pride_proteins", ]

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