Skip to main content
Glama
geneontology

Noctua MCP Server

Official
by geneontology

get_guideline_content

Fetch specific GO-CAM guideline content for biological knowledge representation by providing guideline names from the Noctua MCP Server.

Instructions

Fetch specific GO-CAM guideline content.

Args: guideline_name: Name of guideline file (without .md extension). Use list_guidelines() to see available options.

Returns: Dictionary with guideline content or error message

Examples: # Get a specific guideline content = get_guideline_content("E3_ubiquitin_ligases")

# Get transcription factor guidelines
content = get_guideline_content("DNA-binding_transcription_factor_activity_annotation_guidelines")

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
guideline_nameYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function for the get_guideline_content MCP tool. It retrieves the content of a specific guideline Markdown file from the local guidelines directory, extracts a description from the first non-empty line, and returns structured data. Includes error handling for missing files and read errors.
    @mcp.tool()
    async def get_guideline_content(guideline_name: str) -> Dict[str, Any]:
        """Fetch specific GO-CAM guideline content.
    
        Args:
            guideline_name: Name of guideline file (without .md extension).
                           Use list_guidelines() to see available options.
    
        Returns:
            Dictionary with guideline content or error message
    
        Examples:
            # Get a specific guideline
            content = get_guideline_content("E3_ubiquitin_ligases")
    
            # Get transcription factor guidelines
            content = get_guideline_content("DNA-binding_transcription_factor_activity_annotation_guidelines")
        """
        file_path = GUIDELINES_DIR / f"{guideline_name}.md"
    
        if not file_path.exists():
            available = _get_available_guidelines()
            return {
                "success": False,
                "error": f"Guideline '{guideline_name}' not found",
                "available_guidelines": available,
                "hint": "Use one of the available guideline names listed above"
            }
    
        try:
            with open(file_path) as f:
                content = f.read()
    
            # Extract first heading as description
            lines = content.split('\n')
            description = ""
            for line in lines:
                if line.strip():
                    description = line.strip('#').strip()
                    break
    
            return {
                "success": True,
                "guideline_name": guideline_name,
                "description": description,
                "content": content,
                "length": len(content)
            }
        except Exception as e:
            return {
                "success": False,
                "error": f"Failed to read guideline: {str(e)}",
                "guideline_name": guideline_name
            }
  • Constant defining the path to the guidelines directory, used by get_guideline_content and related functions to locate guideline files.
    GUIDELINES_DIR = Path(__file__).parent / "guidelines"
  • Helper function that lists the names of available guideline Markdown files in the GUIDELINES_DIR, used in error responses of get_guideline_content.
    def _get_available_guidelines() -> List[str]:
        """Get list of available guideline files."""
        if not GUIDELINES_DIR.exists():
            return []
        return sorted([f.stem for f in GUIDELINES_DIR.glob("*.md")])
  • The @mcp.tool() decorator that registers the get_guideline_content function as an MCP tool.
    @mcp.tool()
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool as fetching content and mentions it returns a dictionary or error message, which is helpful. However, it lacks details on permissions, rate limits, error handling specifics, or whether the operation is read-only (implied but not stated).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by clear sections for Args, Returns, and Examples. Every sentence adds value, such as the parameter explanation and practical examples, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (implied by 'Has output schema: true'), the description doesn't need to detail return values. It covers the purpose, parameter usage, and examples adequately for a simple fetch operation. However, with no annotations and low schema coverage, it could benefit from more behavioral context like error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It explains the single parameter 'guideline_name' as the name of the guideline file without the .md extension and references list_guidelines() for options, adding meaningful context beyond the bare schema. With only one parameter, this is sufficient for a high score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches specific GO-CAM guideline content, providing a specific verb ('fetch') and resource ('guideline content'). It distinguishes itself from siblings like list_uidelines by focusing on retrieving content rather than listing options, though it doesn't explicitly contrast with all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to fetch content for a specific guideline identified by name. It references list_guidelines() as a prerequisite to see available options, offering practical guidance. However, it doesn't explicitly state when not to use it or compare with alternatives like search_models.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other 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/geneontology/noctua-mcp'

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