CodeRAG / src /coderag /mcp /prompts.py
Sebastiangmz's picture
Initial CodeRAG deploy
d557d77
"""MCP prompt templates for CodeRAG."""
from mcp.types import PromptMessage, TextContent
from coderag.mcp.server import mcp
@mcp.prompt()
async def analyze_repository(repo_url: str) -> list[PromptMessage]:
"""Guide for comprehensive repository analysis.
Args:
repo_url: GitHub repository URL to analyze
Returns:
List of prompt messages guiding the analysis workflow
"""
return [
PromptMessage(
role="user",
content=TextContent(
type="text",
text=f"""Please analyze the repository at {repo_url}. Follow these steps:
1. First, use the `index_repository` tool to index the repository:
- URL: {repo_url}
2. Once indexed, use `get_repository_info` to understand the repository structure:
- Note the number of files and chunks indexed
- Review the list of indexed files
3. Use `query_code` to answer these questions:
- What is the main purpose of this codebase?
- What are the key components or modules?
- What design patterns are used?
- What external dependencies does it have?
4. Use `search_code` to find:
- Entry points (main functions, CLI handlers)
- Configuration handling
- Core business logic
5. Provide a comprehensive summary including:
- Purpose and functionality
- Architecture overview
- Key components
- Notable patterns or practices
- Potential areas for improvement
""",
),
)
]
@mcp.prompt()
async def find_implementation(repo_id: str, feature: str) -> list[PromptMessage]:
"""Guide for finding feature implementations.
Args:
repo_id: Repository ID to search in
feature: Feature or functionality to find
Returns:
List of prompt messages guiding the search workflow
"""
return [
PromptMessage(
role="user",
content=TextContent(
type="text",
text=f"""Please find the implementation of "{feature}" in repository {repo_id}. Follow these steps:
1. Use `search_code` to find relevant code:
- Query: "{feature}"
- Try different search terms if initial results aren't helpful
2. For each relevant result, use `query_code` to understand:
- How is this feature implemented?
- What are the key functions/classes involved?
- What is the data flow?
3. Trace the implementation:
- Find the entry point
- Follow the call chain
- Identify helper functions and utilities
4. Provide a detailed explanation:
- Location of the implementation (files and line numbers)
- Key components and their roles
- How data flows through the system
- Any notable patterns or design decisions
""",
),
)
]
@mcp.prompt()
async def code_review(repo_id: str, focus_area: str = "") -> list[PromptMessage]:
"""Guide for performing code reviews.
Args:
repo_id: Repository ID to review
focus_area: Optional specific area to focus on (e.g., "security", "performance")
Returns:
List of prompt messages guiding the review workflow
"""
focus_text = f' with focus on "{focus_area}"' if focus_area else ""
return [
PromptMessage(
role="user",
content=TextContent(
type="text",
text=f"""Please perform a code review of repository {repo_id}{focus_text}. Follow these steps:
1. Use `get_repository_info` to understand the repository structure
2. Use `search_code` to find key areas to review:
- Entry points and main functions
- Error handling patterns
- Data validation
- Security-sensitive code (if applicable)
3. For each area, use `query_code` to analyze:
- Code quality and readability
- Error handling completeness
- Security considerations
- Performance implications
- Test coverage (if tests are indexed)
4. Check for common issues:
- Hardcoded credentials or secrets
- SQL injection vulnerabilities
- Input validation gaps
- Resource leaks
- Race conditions
5. Provide a structured review:
- Summary of findings
- Critical issues (if any)
- Recommendations for improvement
- Positive observations
- Priority of fixes
""",
),
)
]