github

package module
v0.0.0-...-14da812 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2025 License: MIT Imports: 27 Imported by: 0

Documentation

Overview

WHO: CommonsManager WHAT: Shared types and utilities WHEN: Throughout GitHub MCP operations WHERE: GitHub MCP Server WHY: To provide shared functionality across components HOW: By defining common types and helper functions EXTENT: All GitHub MCP components

WHO: GitHubMCPBridge WHAT: GitHub API Integration Package WHEN: MCP bridge initialization WHERE: MCP Bridge Layer WHY: To provide API access to GitHub HOW: By implementing MCP protocol handlers EXTENT: All GitHub API operations

WHO: GitHubMCPServer WHAT: GitHub API Server Implementation WHEN: During request processing WHERE: MCP Bridge Layer WHY: To handle GitHub API integration HOW: Using MCP protocol handlers EXTENT: All GitHub API operations

Index

Constants

View Source
const (
	BaseURL               = "https://api.github.com"
	ReposEndpoint         = "/repos"
	IssuesEndpoint        = "/issues"
	PullsEndpoint         = "/pulls"
	SearchEndpoint        = "/search"
	CodeScanEndpoint      = "/code-scanning"
	UserEndpoint          = "/user"
	OrganizationsEndpoint = "/organizations"
	TeamsEndpoint         = "/teams"
)

API endpoint constants

View Source
const (
	APIVersion      = "2022-11-28"
	MCPVersion      = "3.0"
	ProtocolVersion = "3.0"
)

Version information

View Source
const (
	BridgeModeDirect  = "direct"
	BridgeModeProxied = "proxied"
	BridgeModeAsync   = "async"
)

MCP bridge modes

View Source
const (
	RepoContentsURITemplate     = "repo://%s/%s/contents%s"
	RepoBranchURITemplate       = "repo://%s/%s/refs/heads/%s/contents%s"
	RepoCommitURITemplate       = "repo://%s/%s/sha/%s/contents%s"
	RepoIssueURITemplate        = "repo://%s/%s/issues/%d"
	RepoPullRequestURITemplate  = "repo://%s/%s/pulls/%d"
	RepoCodeScanningURITemplate = "repo://%s/%s/code-scanning/alerts"
)

Resource URI templates

View Source
const (
	ErrorAuthFailed       = "auth_failed"
	ErrorNotFound         = "not_found"
	ErrorPermissionDenied = "permission_denied"
	ErrorRateLimit        = "rate_limit"
	ErrorServerError      = "server_error"
	ErrorBadRequest       = "bad_request"
	ErrorBridgeFailed     = "bridge_failed"
	ErrorContextInvalid   = "context_invalid"
)

Error codes

View Source
const (
	ConstRepoOwnerDesc = "Repository owner"
	ConstRepoNameDesc  = "Repository name"
)

Parameter descriptions

View Source
const (
	ErrMsgGetGitHubClient  = "failed to get GitHub client: %w"
	ErrMsgReadResponseBody = "failed to read response body: %w"
	ErrMsgMarshalIssue     = "failed to marshal issue: %w"
	ErrMsgMarshalComment   = "failed to marshal comment: %w"
	ErrMsgMarshalPR        = "failed to marshal pull request: %w"
	ErrMsgMarshalSearchRes = "failed to marshal search results: %w"
	ErrMsgMarshalUser      = "failed to marshal user: %w"
	ErrMsgMarshalComments  = "failed to marshal comments: %w"
	ErrMsgMarshalIssues    = "failed to marshal issues: %w"
)

Error message templates

View Source
const (
	EventTypeRepository = "repository"
	EventTypeIssue      = "issue"
	EventTypePR         = "pull_request"
	EventTypeRelease    = "release"
	EventTypeWorkflow   = "workflow"
)

Event type constants

View Source
const (
	PRActionOpened      = "opened"
	PRActionClosed      = "closed"
	PRActionMerged      = "merged"
	PRActionReopened    = "reopened"
	PRActionSynchronize = "synchronize"
)

Pull request action constants

View Source
const (
	SearchTypeCode         = "code"
	SearchTypeCommits      = "commits"
	SearchTypeIssues       = "issues"
	SearchTypePRs          = "pull_requests"
	SearchTypeRepositories = "repositories"
	SearchTypeUsers        = "users"
)

Search type constants

View Source
const (
	DefaultAPIBaseURL     = "https://api.github.com"
	DefaultGraphQLBaseURL = "https://api.github.com/graphql"
	DefaultAcceptHeader   = "application/vnd.github.v3+json"
	DefaultUserAgent      = "TNOS-GitHub-MCP-Client"
	DefaultTimeout        = 30 * time.Second
	DefaultCacheTimeout   = 5 * time.Minute
)

DefaultAPI constants

View Source
const (
	ResourceTypeUser       = "user"
	ResourceTypeRepo       = "repo"
	ResourceTypeIssue      = "issue"
	ResourceTypePR         = "pr"
	ResourceTypeComment    = "comment"
	ResourceTypeContent    = "content"
	ResourceTypeRef        = "ref"
	ResourceTypeCommit     = "commit"
	ResourceTypeBranch     = "branch"
	ResourceTypeWorkflow   = "workflow"
	ResourceTypeRelease    = "release"
	ResourceTypeTag        = "tag"
	ResourceTypeCodeScan   = "codescan"
	ResourceTypeDependency = "dependency"
	ResourceTypeSecret     = "secret"
	ResourceTypeAction     = "action"
)

Resource type constants

View Source
const (
	// Parameter descriptions
	RepositoryOwnerDesc = "Repository owner"
	RepositoryNameDesc  = "Repository name"

	// Error messages
	ErrGetGitHubClient  = "failed to get GitHub client: %w"
	ErrReadResponseBody = "failed to read response body: %w"
	ErrMarshalIssue     = "failed to marshal issue: %w"
	ErrMarshalComment   = "failed to marshal comment: %w"
	ErrMarshalPR        = "failed to marshal pull request: %w"
	ErrMarshalSearchRes = "failed to marshal search results: %w"
	ErrMarshalUser      = "failed to marshal user: %w"
	ErrMarshalComments  = "failed to marshal comments: %w"
	ErrMarshalIssues    = "failed to marshal issues: %w"
)

WHO: ConstantsManager WHAT: String Constants Definition WHEN: Compilation time WHERE: GitHub MCP Server WHY: To avoid string duplication HOW: By defining reusable constants EXTENT: All shared string literals

Variables

This section is empty.

Functions

func AddIssueComment

func AddIssueComment(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

AddIssueComment creates a tool to add a comment to an issue.

func BridgeHealthCheck

func BridgeHealthCheck() (bool, error)

BridgeHealthCheck performs a health check on the MCP bridge

func ConnectMCPChannels

func ConnectMCPChannels(bridgeMode string) error

ConnectMCPChannels establishes bidirectional channels between GitHub and TNOS MCP

func CreateBranch

func CreateBranch(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreateBranch creates a tool to create a new branch.

func CreateIssue

func CreateIssue(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreateIssue creates a tool to create a new issue in a GitHub repository.

func CreateOrUpdateFile

func CreateOrUpdateFile(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreateOrUpdateFile creates a tool to create or update a file in a GitHub repository.

func CreatePullRequest

func CreatePullRequest(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreatePullRequest creates a tool to create a new pull request.

func CreatePullRequestReview

func CreatePullRequestReview(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreatePullRequestReview creates a tool to submit a review on a pull request.

func CreateRepository

func CreateRepository(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

CreateRepository creates a tool to create a new GitHub repository.

func ForkRepository

func ForkRepository(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

ForkRepository creates a tool to fork a repository.

func GetCodeScanningAlert

func GetCodeScanningAlert(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

func GetCommit

func GetCommit(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

func GetFileContents

func GetFileContents(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetFileContents creates a tool to get the contents of a file or directory from a GitHub repository.

func GetIssue

func GetIssue(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetIssue creates a tool to get details of a specific issue in a GitHub repository.

func GetIssueComments

func GetIssueComments(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetIssueComments creates a tool to get comments for a GitHub issue.

func GetMe

WHO: UserInfoTool WHAT: Authenticated User Tool WHEN: During user info request WHERE: GitHub MCP Server WHY: To provide user identity information HOW: By fetching authenticated user details from GitHub EXTENT: User identification

func GetPullRequest

func GetPullRequest(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetPullRequest creates a tool to get details of a specific pull request.

func GetPullRequestComments

func GetPullRequestComments(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetPullRequestComments creates a tool to get the review comments on a pull request.

func GetPullRequestFiles

func GetPullRequestFiles(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetPullRequestFiles creates a tool to get the list of files changed in a pull request.

func GetPullRequestReviews

func GetPullRequestReviews(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetPullRequestReviews creates a tool to get the reviews on a pull request.

func GetPullRequestStatus

func GetPullRequestStatus(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

GetPullRequestStatus creates a tool to get the combined status of all status checks for a pull request.

func GetRepositoryResourceBranchContent

func GetRepositoryResourceBranchContent(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.ResourceTemplate, server.ResourceTemplateHandlerFunc)

GetRepositoryResourceBranchContent defines the resource template and handler for getting repository content for a branch.

func GetRepositoryResourceCommitContent

func GetRepositoryResourceCommitContent(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.ResourceTemplate, server.ResourceTemplateHandlerFunc)

GetRepositoryResourceCommitContent defines the resource template and handler for getting repository content for a commit.

func GetRepositoryResourceContent

func GetRepositoryResourceContent(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.ResourceTemplate, server.ResourceTemplateHandlerFunc)

GetRepositoryResourceContent defines the resource template and handler for getting repository content.

func GetRepositoryResourcePrContent

func GetRepositoryResourcePrContent(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.ResourceTemplate, server.ResourceTemplateHandlerFunc)

GetRepositoryResourcePrContent defines the resource template and handler for getting repository content for a pull request.

func GetRepositoryResourceTagContent

func GetRepositoryResourceTagContent(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.ResourceTemplate, server.ResourceTemplateHandlerFunc)

GetRepositoryResourceTagContent defines the resource template and handler for getting repository content for a tag.

func InitializeMCPBridge

func InitializeMCPBridge(enableCompression bool) error

InitializeMCPBridge sets up the MCP bridge between GitHub and TNOS MCP

func ListBranches

func ListBranches(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

ListBranches creates a tool to list branches in a GitHub repository.

func ListCodeScanningAlerts

func ListCodeScanningAlerts(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

func ListCommits

func ListCommits(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

ListCommits creates a tool to get commits of a branch in a repository.

func ListIssues

func ListIssues(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

ListIssues creates a tool to list and filter repository issues

func ListPullRequests

func ListPullRequests(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

ListPullRequests creates a tool to list and filter repository pull requests.

func MergePullRequest

func MergePullRequest(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

MergePullRequest creates a tool to merge a pull request.

func NewServer

func NewServer(getClient GetClientFn, version string, readOnly bool, t TranslationHelperFunc, opts ...server.ServerOption) *server.MCPServer

WHO: ServerInitializer WHAT: MCP Server Configuration WHEN: System startup WHERE: GitHub Bridge WHY: To configure all available GitHub MCP tools HOW: By registering resource templates and tools EXTENT: All GitHub API functionality

func OptionalIntParam

func OptionalIntParam(r mcp.CallToolRequest, p string) (int, error)

WHO: ParameterHelper WHAT: Optional Integer Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract optional integer parameters HOW: By checking parameter existence and type EXTENT: All integer parameter processing

func OptionalIntParamWithDefault

func OptionalIntParamWithDefault(r mcp.CallToolRequest, p string, d int) (int, error)

WHO: ParameterHelper WHAT: Optional Integer with Default WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To extract integer parameters with defaults HOW: By checking parameter and providing default if needed EXTENT: All integer parameter processing

func OptionalParam

func OptionalParam[T any](r mcp.CallToolRequest, p string) (T, error)

WHO: ParameterHelper WHAT: Optional Parameter Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract optional parameters HOW: By checking parameter existence and type EXTENT: All tool parameter processing

func OptionalParamOK

func OptionalParamOK[T any](r mcp.CallToolRequest, p string) (value T, ok bool, err error)

WHO: ParameterHelper WHAT: Optional Parameter Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract optional parameters HOW: By checking parameter existence and type EXTENT: All tool parameter processing

func OptionalParamWithDefault

func OptionalParamWithDefault[T any](request mcp.CallToolRequest, name string, defaultValue T) (T, error)

OptionalParamWithDefault gets an optional parameter with a default value

func OptionalStringArrayParam

func OptionalStringArrayParam(r mcp.CallToolRequest, p string) ([]string, error)

WHO: ParameterHelper WHAT: Optional String Array Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract optional string array parameters HOW: By checking parameter existence and converting types EXTENT: All string array parameter processing

func ParseResourceURI

func ParseResourceURI(uri string) (map[string]string, error)

ParseResourceURI parses a GitHub resource URI

func Ptr

func Ptr[T any](v T) *T

Ptr returns a pointer to the provided value.

func PushFiles

func PushFiles(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

PushFiles creates a tool to push multiple files in a single commit to a GitHub repository.

func RepositoryResourceContentsHandler

func RepositoryResourceContentsHandler(getClient GetClientFn) func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error)

RepositoryResourceContentsHandler returns a handler function for repository content requests.

func RequiredInt

func RequiredInt(r mcp.CallToolRequest, p string) (int, error)

WHO: ParameterHelper WHAT: Required Integer Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract required integer parameters HOW: By checking parameter existence, type, and value EXTENT: All integer parameter processing

func SearchCode

func SearchCode(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

SearchCode creates a tool to search for code across GitHub repositories.

func SearchIssues

func SearchIssues(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

SearchIssues creates a tool to search for issues and pull requests.

func SearchRepositories

func SearchRepositories(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

WHO: SearchRepositoriesTool WHAT: GitHub Repository Search WHEN: Tool invocation WHERE: GitHub MCP Server WHY: To find repositories matching search criteria HOW: By querying GitHub Search API EXTENT: All public and authorized GitHub repositories

func SearchUsers

func SearchUsers(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

SearchUsers creates a tool to search for GitHub users.

func StartMCPEventMonitor

func StartMCPEventMonitor(logger *log.Logger) error

StartMCPEventMonitor starts monitoring MCP events

func UpdateIssue

func UpdateIssue(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

UpdateIssue creates a tool to update an existing issue in a GitHub repository.

func UpdatePullRequest

func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

UpdatePullRequest creates a tool to update an existing pull request.

func UpdatePullRequestBranch

func UpdatePullRequestBranch(getClient GetClientFn, t translations.TranslationHelperFunc) (tool mcp.Tool, handler server.ToolHandlerFunc)

UpdatePullRequestBranch creates a tool to update a pull request branch with the latest changes from the base branch.

func WithPagination

func WithPagination() mcp.ToolOption

WHO: ToolOptionProvider WHAT: Pagination Option Provider WHEN: During tool definition WHERE: GitHub MCP Server WHY: To add standardized pagination parameters HOW: By adding page and perPage parameters to tool EXTENT: All paginated tools

Types

type APIError

type APIError struct {
	Message          string `json:"message"`
	DocumentationURL string `json:"documentation_url"`
	Errors           []struct {
		Resource string `json:"resource"`
		Field    string `json:"field"`
		Code     string `json:"code"`
	} `json:"errors,omitempty"`
}

APIError represents an error from the GitHub API

func (*APIError) Error

func (e *APIError) Error() string

Error implements the error interface for APIError

type BinaryFile

type BinaryFile struct {
	Name     string // File name
	Path     string // File path
	Data     []byte // Raw binary data
	Size     int    // File size
	Encoding string // File encoding
	SHA      string // File SHA
}

BinaryFile represents a binary file from the repository

type Branch

type Branch struct {
	Name      string `json:"name"`
	Commit    Commit `json:"commit"`
	Protected bool   `json:"protected"`
}

Branch represents a Git branch

type BridgeStats

type BridgeStats struct {

	// Number of messages sent to TNOS
	MessagesSent int64

	// Number of messages received from TNOS
	MessagesReceived int64

	// Number of reconnection attempts
	ReconnectionAttempts int64

	// Timestamp of the last successful message send
	LastMessageSent int64

	// Timestamp of the last successful message receive
	LastMessageReceived int64

	// Map of operation counts by type
	OperationCounts map[string]int64

	// Context translation statistics
	ContextTranslations struct {
		Success int64
		Failure int64
	}
}

BridgeStats contains statistics about the MCP bridge

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client represents a GitHub API client

func NewAdvancedClient

func NewAdvancedClient(options ClientOptions) (*Client, error)

NewAdvancedClient creates a new GitHub client with advanced options This is renamed from NewClient to avoid conflicts with the legacy client

func (*Client) CreateIssue

func (c *Client) CreateIssue(ctx context.Context, owner, repo string, issue map[string]interface{}) (map[string]interface{}, error)

CreateIssue creates a new issue in a repository

func (*Client) CreatePullRequest

func (c *Client) CreatePullRequest(ctx context.Context, owner, repo string, pr map[string]interface{}) (map[string]interface{}, error)

CreatePullRequest creates a new pull request

func (*Client) GetBranches

func (c *Client) GetBranches(ctx context.Context, owner, repo string) ([]map[string]interface{}, error)

GetBranches fetches branches from a repository

func (*Client) GetCodeScanningAlerts

func (c *Client) GetCodeScanningAlerts(ctx context.Context, owner, repo string) ([]map[string]interface{}, error)

GetCodeScanningAlerts fetches code scanning alerts

func (*Client) GetCommit

func (c *Client) GetCommit(ctx context.Context, owner, repo, sha string) (map[string]interface{}, error)

GetCommit fetches a specific commit

func (*Client) GetDirectoryContent

func (c *Client) GetDirectoryContent(ctx context.Context, owner, repo, path, ref string) ([]map[string]interface{}, error)

GetDirectoryContent fetches directory content from a repository

func (*Client) GetFileContent

func (c *Client) GetFileContent(ctx context.Context, owner, repo, path, ref string) ([]byte, map[string]interface{}, error)

GetFileContent fetches file content from a repository

func (*Client) GetRepositoryByName

func (c *Client) GetRepositoryByName(ctx context.Context, owner, repo string) (map[string]interface{}, error)

GetRepositoryByName fetches repository information

func (*Client) SearchCode

func (c *Client) SearchCode(ctx context.Context, query string, options map[string]string) (map[string]interface{}, error)

SearchCode searches for code in repositories

func (*Client) SetContext

func (c *Client) SetContext(context *translations.ContextVector7D)

SetContext updates the client context

func (*Client) UpdateIssue

func (c *Client) UpdateIssue(ctx context.Context, owner, repo string, number int, issue map[string]interface{}) (map[string]interface{}, error)

UpdateIssue updates an existing issue

type ClientCompatibilityAdapter

type ClientCompatibilityAdapter struct {
	// contains filtered or unexported fields
}

ClientCompatibilityAdapter adapts the advanced GitHub client implementation to provide compatibility with the older, simpler client interface

func NewClientCompatibilityAdapter

func NewClientCompatibilityAdapter(token string, logger Logger) *ClientCompatibilityAdapter

NewClientCompatibilityAdapter creates a new adapter for the legacy client

func (*ClientCompatibilityAdapter) ApplyMobiusCompression

func (a *ClientCompatibilityAdapter) ApplyMobiusCompression(data interface{}) (map[string]interface{}, error)

ApplyMobiusCompression applies Möbius compression to data

func (*ClientCompatibilityAdapter) CreateContext

func (a *ClientCompatibilityAdapter) CreateContext(what, why string, extent float64) ContextVector7D

CreateContext creates a new context with the given values

func (*ClientCompatibilityAdapter) CreateIssue

func (a *ClientCompatibilityAdapter) CreateIssue(owner, repo, title, body string, assignees []string) (*Issue, error)

CreateIssue creates a new issue in a GitHub repository

func (*ClientCompatibilityAdapter) GetContext

GetContext returns the current context

func (*ClientCompatibilityAdapter) GetFileContent

func (a *ClientCompatibilityAdapter) GetFileContent(owner, repo, path, ref string) (*RepoContent, error)

GetFileContent returns the content of a file from a GitHub repository

func (*ClientCompatibilityAdapter) GetRepository

func (a *ClientCompatibilityAdapter) GetRepository(owner, repo string) (*Repository, error)

GetRepository returns information about a GitHub repository

func (*ClientCompatibilityAdapter) GetUser

func (a *ClientCompatibilityAdapter) GetUser(username string) (*User, error)

GetUser returns information about a GitHub user

func (*ClientCompatibilityAdapter) ListRepositoryContents

func (a *ClientCompatibilityAdapter) ListRepositoryContents(owner, repo, path, ref string) ([]*DirectoryEntry, error)

ListRepositoryContents lists the contents of a directory in a GitHub repository

func (*ClientCompatibilityAdapter) ParseResourceURI

func (a *ClientCompatibilityAdapter) ParseResourceURI(uri string) (*ResourceURI, error)

ParseResourceURI parses a resource URI into a ResourceURI struct

func (*ClientCompatibilityAdapter) WithContext

WithContext creates a copy of the client with updated context

type ClientOptions

type ClientOptions struct {
	Token           string
	APIBaseURL      string
	GraphQLBaseURL  string
	AcceptHeader    string
	UserAgent       string
	Timeout         time.Duration
	Logger          *log.Logger
	EnableCache     bool
	CacheTimeout    time.Duration
	RateLimitBuffer int
}

ClientOptions configures the GitHub client

type CodeScanAlert

type CodeScanAlert struct {
	Number      int    `json:"number"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
	URL         string `json:"url"`
	HTMLURL     string `json:"html_url"`
	State       string `json:"state"`
	DismissedAt string `json:"dismissed_at,omitempty"`
	DismissedBy User   `json:"dismissed_by,omitempty"`
	Rule        struct {
		ID          string `json:"id"`
		Severity    string `json:"severity"`
		Security    string `json:"security_severity_level,omitempty"`
		Description string `json:"description"`
	} `json:"rule"`
	Tool struct {
		Name    string `json:"name"`
		Version string `json:"version,omitempty"`
	} `json:"tool"`
	MostRecentInstance struct {
		Ref         string `json:"ref"`
		AnalysisKey string `json:"analysis_key"`
		Location    struct {
			Path        string `json:"path"`
			StartLine   int    `json:"start_line"`
			EndLine     int    `json:"end_line"`
			StartColumn int    `json:"start_column"`
			EndColumn   int    `json:"end_column"`
		} `json:"location"`
		Message struct {
			Text string `json:"text"`
		} `json:"message"`
	} `json:"most_recent_instance"`
}

CodeScanAlert represents a security alert from code scanning

type Commit

type Commit struct {
	SHA       string `json:"sha"`
	URL       string `json:"url"`
	Author    User   `json:"author,omitempty"`
	Committer User   `json:"committer,omitempty"`
	Message   string `json:"message,omitempty"`
}

Commit represents a Git commit

type ContextTranslator

type ContextTranslator struct {
	EnableCompression bool
	EnableLogging     bool
	DebugMode         bool
	Logger            *log.Logger
}

ContextTranslator provides bidirectional translation between GitHub context and TNOS 7D context

func NewContextTranslator

func NewContextTranslator(logger *log.Logger, enableCompression, enableLogging, debugMode bool) *ContextTranslator

NewContextTranslator creates a new context translator instance

func (*ContextTranslator) CompressContext

func (ct *ContextTranslator) CompressContext(
	context map[string]interface{},
) (map[string]interface{}, error)

CompressContext applies Möbius compression to a context map

func (*ContextTranslator) GetTranslationStats

func (ct *ContextTranslator) GetTranslationStats() map[string]interface{}

GetTranslationStats returns statistics about the translator

func (*ContextTranslator) TranslateFromTNOS

func (t *ContextTranslator) TranslateFromTNOS(tnosContext map[string]interface{}) map[string]interface{}

TranslateFromTNOS converts TNOS 7D context to GitHub context

func (*ContextTranslator) TranslateGitHubToTNOS

func (ct *ContextTranslator) TranslateGitHubToTNOS(
	githubContext *ContextVector7D,
) (*translations.ContextVector7D, error)

TranslateGitHubToTNOS translates GitHub context to TNOS context

func (*ContextTranslator) TranslateMapToTNOS

func (ct *ContextTranslator) TranslateMapToTNOS(
	contextMap map[string]interface{},
) (*translations.ContextVector7D, error)

TranslateMapToTNOS converts a map context to TNOS context

func (*ContextTranslator) TranslateTNOSToGitHub

func (ct *ContextTranslator) TranslateTNOSToGitHub(
	tnosContext *translations.ContextVector7D,
) (*ContextVector7D, error)

TranslateTNOSToGitHub translates TNOS context to GitHub context

func (*ContextTranslator) TranslateTNOSToMap

func (ct *ContextTranslator) TranslateTNOSToMap(
	tnosContext *translations.ContextVector7D,
) (map[string]interface{}, error)

TranslateTNOSToMap converts a TNOS context to a map

func (*ContextTranslator) TranslateToTNOS

func (t *ContextTranslator) TranslateToTNOS(githubContext map[string]interface{}) map[string]interface{}

TranslateToTNOS converts GitHub context to TNOS 7D context

type ContextVector7D

type ContextVector7D struct {
	Who    string                 `json:"who"`
	What   string                 `json:"what"`
	When   int64                  `json:"when"`
	Where  string                 `json:"where"`
	Why    string                 `json:"why"`
	How    string                 `json:"how"`
	Extent float64                `json:"extent"`
	Meta   map[string]interface{} `json:"meta,omitempty"`
}

ContextVector7D represents the 7-dimensional context vector used in GitHub MCP

func DefaultContextVector7D

func DefaultContextVector7D() ContextVector7D

DefaultContextVector7D creates a default context vector with standard values

type DetailedAPIError

type DetailedAPIError struct {
	Message    string `json:"message"`
	StatusCode int    `json:"status_code"`
	RequestID  string `json:"request_id"`
	URL        string `json:"url"`
}

DetailedAPIError represents a detailed error returned from the GitHub API This is separate from the APIError in models.go

func (*DetailedAPIError) Error

func (e *DetailedAPIError) Error() string

Error implements the error interface for DetailedAPIError

type DirectoryEntry

type DirectoryEntry struct {
	Name        string // Entry name
	Path        string // Entry path
	Type        string // Entry type (file, dir, symlink)
	Size        int    // Entry size (for files)
	SHA         string // Entry SHA
	URL         string // API URL
	HTMLURL     string // Web URL
	DownloadURL string // Download URL (for files)
}

DirectoryEntry represents an entry in a directory listing

type ExtendedCodeScanningAlert

type ExtendedCodeScanningAlert struct {
	CodeScanAlert         // Embed base CodeScanAlert struct from models.go
	InstancesCount int    `json:"instances_count"`
	FixedAt        string `json:"fixed_at,omitempty"`
}

ExtendedCodeScanningAlert represents a code scanning alert with detailed information

type ExtendedIssue

type ExtendedIssue struct {
	Issue            // Embed base Issue struct from models.go
	Comments  int    `json:"comments"`
	Assignees []User `json:"assignees"`
	Labels    []struct {
		Name        string `json:"name"`
		Color       string `json:"color"`
		Description string `json:"description"`
	} `json:"labels"`
	Milestone struct {
		Title       string `json:"title"`
		Description string `json:"description"`
		DueOn       string `json:"due_on"`
	} `json:"milestone"`
	ClosedAt string `json:"closed_at"`
}

ExtendedIssue represents a GitHub issue with extended information

type ExtendedPullRequest

type ExtendedPullRequest struct {
	PullRequest                // Embed base PullRequest struct
	Merged              bool   `json:"merged"`
	MergedAt            string `json:"merged_at"`
	MergedBy            User   `json:"merged_by"`
	Comments            int    `json:"comments"`
	ReviewComments      int    `json:"review_comments"`
	Commits             int    `json:"commits"`
	Additions           int    `json:"additions"`
	Deletions           int    `json:"deletions"`
	ChangedFiles        int    `json:"changed_files"`
	MaintainerCanModify bool   `json:"maintainer_can_modify"`
}

ExtendedPullRequest represents a GitHub PR with extended information

type ExtendedRepository

type ExtendedRepository struct {
	Repository               // Embed base Repository struct from models.go
	ForksCount      int      `json:"forks_count"`
	StargazersCount int      `json:"stargazers_count"`
	WatchersCount   int      `json:"watchers_count"`
	OpenIssuesCount int      `json:"open_issues_count"`
	Topics          []string `json:"topics"`
	Language        string   `json:"language"`
	HasIssues       bool     `json:"has_issues"`
	HasProjects     bool     `json:"has_projects"`
	HasWiki         bool     `json:"has_wiki"`
}

ExtendedRepository represents a GitHub repository with extended information

type ExtendedUser

type ExtendedUser struct {
	User           // Embed base User struct from models.go
	Following int  `json:"following"`
	Followers int  `json:"followers"`
	SiteAdmin bool `json:"site_admin"`
}

User represents a GitHub user Note: This extends the base User model from models.go with additional fields

type GetClientFn

type GetClientFn func(context.Context) (*github.Client, error)

GetClientFn defines a function type to obtain GitHub clients

type Issue

type Issue struct {
	ID        int64  `json:"id"`
	NodeID    string `json:"node_id"`
	URL       string `json:"url"`
	Number    int    `json:"number"`
	Title     string `json:"title"`
	State     string `json:"state"`
	Locked    bool   `json:"locked"`
	User      User   `json:"user"`
	Body      string `json:"body"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
	HTMLURL   string `json:"html_url"`
}

Issue represents a GitHub issue

type LegacyClientAdapter

type LegacyClientAdapter struct {
	// contains filtered or unexported fields
}

LegacyClientAdapter adapts the advanced client to the legacy interface

func NewLegacyClient

func NewLegacyClient(token string, logger *log.Logger) *LegacyClientAdapter

NewLegacyClient creates a new legacy client adapter

func NewLegacyClientAdapter

func NewLegacyClientAdapter(token string, logger *log.Logger) *LegacyClientAdapter

NewLegacyClientAdapter creates a new legacy client adapter with default context

type Logger

type Logger interface {
	Debug(msg string, args ...interface{})
	Info(msg string, args ...interface{})
	Error(msg string, args ...interface{})
}

Logger defines a custom logger interface that supports structured logging

type MCPBridge

type MCPBridge struct {
	// contains filtered or unexported fields
}

MCPBridge implements the bridge between GitHub MCP and TNOS MCP

func NewMCPBridge

func NewMCPBridge(options MCPBridgeOptions) (*MCPBridge, error)

NewMCPBridge creates a new MCP bridge

func (*MCPBridge) GetState

func (b *MCPBridge) GetState() MCPBridgeState

GetState returns the current state of the MCP bridge

func (*MCPBridge) GetStats

func (b *MCPBridge) GetStats() BridgeStats

GetStats returns statistics about the MCP bridge

func (*MCPBridge) HealthCheck

func (b *MCPBridge) HealthCheck() (bool, error)

HealthCheck performs a health check on the MCP bridge

func (*MCPBridge) SendOperation

func (b *MCPBridge) SendOperation(
	operation string,
	data map[string]interface{},
	context map[string]interface{},
) error

SendOperation sends an operation to TNOS MCP

func (*MCPBridge) Start

func (b *MCPBridge) Start() error

Start starts the MCP bridge and connects to the TNOS MCP server

func (*MCPBridge) Stop

func (b *MCPBridge) Stop() error

Stop stops the MCP bridge and disconnects from the TNOS MCP server

func (*MCPBridge) SyncContext

func (b *MCPBridge) SyncContext(context map[string]interface{}) error

SyncContext synchronizes context between GitHub and TNOS

type MCPBridgeOptions

type MCPBridgeOptions struct {

	// URL of the TNOS MCP server
	TNOSMCPURL string

	// Authentication token for GitHub API
	GithubToken string

	// Logger instance
	Logger *log.Logger

	// Whether to enable context compression
	EnableCompression bool

	// Whether to preserve metadata during context translation
	PreserveMetadata bool

	// Whether to enforce strict context mapping
	StrictMapping bool

	// Interval to attempt reconnection on disconnect
	ReconnectInterval time.Duration

	// Heartbeat interval for keepalive
	HeartbeatInterval time.Duration

	// Timeout for operations
	OperationTimeout time.Duration
}

MCPBridgeOptions represents configuration options for the MCP bridge

func DefaultMCPBridgeOptions

func DefaultMCPBridgeOptions() MCPBridgeOptions

DefaultMCPBridgeOptions returns default options for the MCP bridge

type MCPBridgeState

type MCPBridgeState string

MCPBridgeState represents the state of the MCP bridge

const (

	// MCPBridgeStateInitializing indicates the bridge is initializing
	MCPBridgeStateInitializing MCPBridgeState = "initializing"

	// MCPBridgeStateConnecting indicates the bridge is connecting
	MCPBridgeStateConnecting MCPBridgeState = "connecting"

	// MCPBridgeStateConnected indicates the bridge is connected
	MCPBridgeStateConnected MCPBridgeState = "connected"

	// MCPBridgeStateReconnecting indicates the bridge is reconnecting
	MCPBridgeStateReconnecting MCPBridgeState = "reconnecting"

	// MCPBridgeStateDisconnected indicates the bridge is disconnected
	MCPBridgeStateDisconnected MCPBridgeState = "disconnected"

	// MCPBridgeStateStopping indicates the bridge is stopping
	MCPBridgeStateStopping MCPBridgeState = "stopping"

	// MCPBridgeStateError indicates the bridge has an error
	MCPBridgeStateError MCPBridgeState = "error"
)

type OrganizationMember

type OrganizationMember struct {
	Login     string `json:"login"`
	ID        int64  `json:"id"`
	AvatarURL string `json:"avatar_url"`
	HTMLURL   string `json:"html_url"`
	Role      string `json:"role"`
}

OrganizationMember represents a member of a GitHub organization

type PaginationParams

type PaginationParams struct {
	// contains filtered or unexported fields
}

WHO: PaginationManager WHAT: Pagination Parameter Structure WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To standardize pagination parameter handling HOW: By grouping pagination parameters in a struct EXTENT: All paginated requests

func OptionalPaginationParams

func OptionalPaginationParams(r mcp.CallToolRequest) (PaginationParams, error)

WHO: PaginationHelper WHAT: Pagination Parameter Extraction WHEN: During parameter processing WHERE: GitHub MCP Server WHY: To safely extract pagination parameters HOW: By checking parameters and providing defaults EXTENT: All paginated requests

type PullRequest

type PullRequest struct {
	ID        int64  `json:"id"`
	NodeID    string `json:"node_id"`
	Number    int    `json:"number"`
	State     string `json:"state"`
	Title     string `json:"title"`
	Body      string `json:"body"`
	User      User   `json:"user"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
	HTMLURL   string `json:"html_url"`
	URL       string `json:"url"`
	Head      struct {
		Ref  string     `json:"ref"`
		SHA  string     `json:"sha"`
		Repo Repository `json:"repo"`
	} `json:"head"`
	Base struct {
		Ref  string     `json:"ref"`
		SHA  string     `json:"sha"`
		Repo Repository `json:"repo"`
	} `json:"base"`
}

PullRequest represents a GitHub pull request

type RateLimit

type RateLimit struct {
	Limit     int   `json:"limit"`
	Remaining int   `json:"remaining"`
	Reset     int64 `json:"reset"`
	Used      int   `json:"used"`
}

RateLimit represents GitHub API rate limit information

type Release

type Release struct {
	ID          int64  `json:"id"`
	TagName     string `json:"tag_name"`
	Target      string `json:"target_commitish"`
	Name        string `json:"name"`
	Body        string `json:"body"`
	Draft       bool   `json:"draft"`
	Prerelease  bool   `json:"prerelease"`
	CreatedAt   string `json:"created_at"`
	PublishedAt string `json:"published_at"`
	Author      User   `json:"author"`
	Assets      []struct {
		ID                 int64  `json:"id"`
		Name               string `json:"name"`
		Label              string `json:"label"`
		ContentType        string `json:"content_type"`
		State              string `json:"state"`
		Size               int    `json:"size"`
		DownloadCount      int    `json:"download_count"`
		CreatedAt          string `json:"created_at"`
		UpdatedAt          string `json:"updated_at"`
		BrowserDownloadURL string `json:"browser_download_url"`
	} `json:"assets"`
}

Release represents a GitHub release

type RepoContent

type RepoContent struct {
	Name        string `json:"name"`
	Path        string `json:"path"`
	SHA         string `json:"sha"`
	Size        int    `json:"size"`
	URL         string `json:"url"`
	HTMLURL     string `json:"html_url"`
	GitURL      string `json:"git_url"`
	DownloadURL string `json:"download_url"`
	Type        string `json:"type"`
	Content     string `json:"content"`
	Encoding    string `json:"encoding"`
}

RepoContent represents content retrieved from a repository

type Repository

type Repository struct {
	ID            int64  `json:"id"`
	NodeID        string `json:"node_id"`
	Name          string `json:"name"`
	FullName      string `json:"full_name"`
	Description   string `json:"description"`
	Private       bool   `json:"private"`
	Owner         User   `json:"owner"`
	HTMLURL       string `json:"html_url"`
	URL           string `json:"url"`
	DefaultBranch string `json:"default_branch"`
}

Repository represents a GitHub repository

type ResourceURI

type ResourceURI struct {
	Scheme    string            // e.g., 'repo'
	Owner     string            // Repository owner
	Repo      string            // Repository name
	Type      string            // Resource type (e.g., 'contents', 'refs', 'sha')
	Reference string            // Branch name, SHA, etc.
	Path      string            // File/directory path
	Query     map[string]string // Query parameters
	Fragment  string            // Fragment identifier
}

ResourceURI represents a parsed GitHub resource URI

type SearchQueryBuilder

type SearchQueryBuilder struct {
	// contains filtered or unexported fields
}

SearchQueryBuilder helps construct GitHub search queries

func NewSearchQueryBuilder

func NewSearchQueryBuilder(type_ string) *SearchQueryBuilder

NewSearchQueryBuilder creates a new search query builder for the specified type

func (*SearchQueryBuilder) AddLanguage

func (b *SearchQueryBuilder) AddLanguage(language string) *SearchQueryBuilder

AddLanguage adds a language filter to the search

func (*SearchQueryBuilder) AddRepoFilter

func (b *SearchQueryBuilder) AddRepoFilter(owner, repo string) *SearchQueryBuilder

AddRepoFilter adds a repository filter to the search

func (*SearchQueryBuilder) AddTerm

func (b *SearchQueryBuilder) AddTerm(term string) *SearchQueryBuilder

AddTerm adds a search term to the builder

func (*SearchQueryBuilder) Build

func (b *SearchQueryBuilder) Build() string

Build builds the final search query string

type SearchResult

type SearchResult struct {
	TotalCount        int                      `json:"total_count"`
	IncompleteResults bool                     `json:"incomplete_results"`
	Items             []interface{}            `json:"items"`
	ItemsTyped        map[string][]interface{} // Typed items by resource type
}

SearchResult represents a GitHub search result

type TeamMember

type TeamMember struct {
	Login     string `json:"login"`
	ID        int64  `json:"id"`
	AvatarURL string `json:"avatar_url"`
	HTMLURL   string `json:"html_url"`
	Role      string `json:"role"`
}

TeamMember represents a member of a GitHub team

type TranslationHelperFunc

type TranslationHelperFunc func(key string, defaultValue string) string

TranslationHelperFunc defines a function type for translations

type User

type User struct {
	Login     string `json:"login"`
	ID        int64  `json:"id"`
	NodeID    string `json:"node_id"`
	AvatarURL string `json:"avatar_url"`
	HTMLURL   string `json:"html_url"`
	Name      string `json:"name"`
	Email     string `json:"email"`
	URL       string `json:"url"`
	Type      string `json:"type"`
}

User represents a GitHub user

type UserService

type UserService struct {
	// contains filtered or unexported fields
}

UserService provides methods for working with GitHub users

func NewUserService

func NewUserService(client *Client) *UserService

NewUserService creates a new user service

func (*UserService) Get

func (s *UserService) Get(username string) (*User, error)

Get retrieves a user by username

func (*UserService) GetAuthenticated

func (s *UserService) GetAuthenticated() (*User, error)

GetAuthenticated retrieves the authenticated user

func (*UserService) GetContext

func (s *UserService) GetContext() map[string]interface{}

GetContext retrieves the 7D context for user operations

func (*UserService) ListFollowers

func (s *UserService) ListFollowers(username string) ([]User, error)

ListFollowers retrieves followers for a user

func (*UserService) ListFollowing

func (s *UserService) ListFollowing(username string) ([]User, error)

ListFollowing retrieves users that a user is following

type WorkflowJob

type WorkflowJob struct {
	ID          int64  `json:"id"`
	RunID       int64  `json:"run_id"`
	Name        string `json:"name"`
	Status      string `json:"status"`
	Conclusion  string `json:"conclusion"`
	StartedAt   string `json:"started_at"`
	CompletedAt string `json:"completed_at"`
	Steps       []struct {
		Name       string `json:"name"`
		Status     string `json:"status"`
		Conclusion string `json:"conclusion"`
		Number     int    `json:"number"`
	} `json:"steps"`
}

WorkflowJob represents a job within a GitHub Actions workflow

type WorkflowRun

type WorkflowRun struct {
	ID         int64  `json:"id"`
	Name       string `json:"name"`
	HeadBranch string `json:"head_branch"`
	HeadSHA    string `json:"head_sha"`
	RunNumber  int    `json:"run_number"`
	Event      string `json:"event"`
	Status     string `json:"status"`
	Conclusion string `json:"conclusion"`
	WorkflowID int64  `json:"workflow_id"`
	URL        string `json:"url"`
	HTMLURL    string `json:"html_url"`
	CreatedAt  string `json:"created_at"`
	UpdatedAt  string `json:"updated_at"`
}

WorkflowRun represents a GitHub Actions workflow run

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL