from mcp_types import Completion, CompletionArgument, CompletionContext, PromptReference, ResourceTemplateReference from mcp.server import MCPServer mcp = MCPServer("GitHub Explorer") LANGUAGES = ["go", "javascript", "python", "rust", "typescript"] @mcp.resource("github://repos/{owner}/{repo}") def github_repo(owner: str, repo: str) -> str: """A GitHub repository.""" return f"Repository: {owner}/{repo}" @mcp.prompt() def review_code(language: str, code: str) -> str: """Review a snippet of code.""" return f"Review this {language} code:\n{code}" @mcp.completion() async def handle_completion( ref: PromptReference | ResourceTemplateReference, argument: CompletionArgument, context: CompletionContext | None, ) -> Completion | None: if isinstance(ref, PromptReference) and argument.name == "language": return Completion(values=[lang for lang in LANGUAGES if lang.startswith(argument.value)]) return None