from mcp_python import MCPServer
from github_code_review.tools import repositories, pull_requests
from github_code_review.resources import repository_resource
from github_code_review.auth import GitHubAuth
class GitHubCodeReviewServer:
def __init__(self, version, token, host="github.com", read_only=True):
self.server = MCPServer(
name="github-code-review-server",
version=version,
tool_capabilities=True,
resource_capabilities=True
)
# Set up authentication
self.auth = GitHubAuth(token, host)
# Register tools and resources
self._register_tools(read_only)
self._register_resources()
def _register_tools(self, read_only=True):
"""Register all tools with the server"""
# Repository tools
self.server.register_tool(repositories.list_branches(self.auth.get_rest_client))
self.server.register_tool(repositories.list_commits(self.auth.get_rest_client))
self.server.register_tool(repositories.get_commit(self.auth.get_rest_client))
self.server.register_tool(repositories.get_file_contents(self.auth.get_rest_client))
# PR tools
self.server.register_tool(pull_requests.get_pull_request(self.auth.get_rest_client))
self.server.register_tool(pull_requests.list_pull_requests(self.auth.get_rest_client))
self.server.register_tool(pull_requests.get_pull_request_comments(self.auth.get_rest_client))
def _register_resources(self):
"""Register all resource templates with the server"""
self.server.register_resource_template(
repository_resource.get_repository_content(self.auth.get_rest_client)
)
self.server.register_resource_template(
repository_resource.get_branch_content(self.auth.get_rest_client)
)
def run_stdio(self):
"""Run the server using stdio transport"""
self.server.run_stdio()