mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The gitea-mcp sidecar holds no credential of its own and expects each client to supply a Gitea token per request, so it answers initialize and tools/list to anyone: the deploy probe measured a 200 disclosing the full tool inventory. No sidecar setting closes that, because serving the unauthenticated is how the upstream is built. Front it with the svc-ai-mcp-adapter instance instead. Clients now present mcp_bearer to compose service giteamcp and get a 401 otherwise; the adapter presents the minted Gitea token upstream to giteamcpupstream, which keeps the sidecar image but drops it to the role's own network. Pin the 24 read-only tools the sidecar serves, captured from the running instance, so the served surface cannot widen unnoticed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
835 lines
19 KiB
JSON
835 lines
19 KiB
JSON
{
|
|
"attachment_read": {
|
|
"description": "Read issue/comment attachments: list metadata, get metadata, or download content.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"attachment_id": {
|
|
"description": "required for get and for download when attachment_uuid is not provided",
|
|
"type": "number"
|
|
},
|
|
"attachment_uuid": {
|
|
"description": "attachment UUID for direct download path lookup",
|
|
"type": "string"
|
|
},
|
|
"comment_id": {
|
|
"description": "required for comment attachment list/get or comment-scoped metadata lookup",
|
|
"type": "number"
|
|
},
|
|
"issue_number": {
|
|
"description": "required for issue attachment list/get or issue-scoped metadata lookup",
|
|
"type": "number"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"list",
|
|
"get",
|
|
"download"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"output_path": {
|
|
"description": "write the attachment to this exact path",
|
|
"type": "string"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"method",
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_commit": {
|
|
"description": "Get details for a single commit in a repository by its SHA.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"sha": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"sha"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_dir_contents": {
|
|
"description": "List the entries (files and subdirectories) in a repository directory at a given ref (branch, tag, or commit SHA).",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"ref": {
|
|
"description": "branch, tag, or commit SHA",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"ref",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_file_contents": {
|
|
"description": "Get file content and metadata",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"ref": {
|
|
"description": "branch, tag, or commit SHA",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"withLines": {
|
|
"description": "return numbered lines",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"ref",
|
|
"path"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_latest_release": {
|
|
"description": "Get the most recent published (non-draft) release in a repository.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_me": {
|
|
"description": "Get current user",
|
|
"input_schema": {
|
|
"properties": {},
|
|
"required": [],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_release": {
|
|
"description": "Get a release by ID",
|
|
"input_schema": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "number"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"id"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_repository_tree": {
|
|
"description": "Get the file tree of a repository at a given ref (SHA, branch, or tag), optionally recursively.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"recursive": {
|
|
"type": "boolean"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"tree_sha": {
|
|
"description": "SHA, branch, or tag",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"tree_sha"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_tag": {
|
|
"description": "Get details for a single tag in a repository by name.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"tag_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo",
|
|
"tag_name"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"get_user_orgs": {
|
|
"description": "List current user's organizations",
|
|
"input_schema": {
|
|
"properties": {
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"issue_read": {
|
|
"description": "Read issue: details, comments, or labels.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"issue_number": {
|
|
"type": "number"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"get",
|
|
"get_comments",
|
|
"get_labels"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"method",
|
|
"owner",
|
|
"repo",
|
|
"issue_number"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_branches": {
|
|
"description": "List all branches in a repository, paginated.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_commits": {
|
|
"description": "List commits in a repository, optionally starting from a specific branch or SHA and filtered to commits touching a given file path.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"path": {
|
|
"description": "only commits touching this path",
|
|
"type": "string"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"sha": {
|
|
"description": "starting SHA or branch",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_issues": {
|
|
"description": "List issues in a repository (or pull requests, via the 'type' filter), filterable by state, labels, milestones, and update time range.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"before": {
|
|
"description": "updated before ISO 8601",
|
|
"type": "string"
|
|
},
|
|
"labels": {
|
|
"description": "label name filter",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"milestones": {
|
|
"description": "milestone name or ID filter",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"since": {
|
|
"description": "updated after ISO 8601",
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"default": "all",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"description": "issues or pulls",
|
|
"enum": [
|
|
"issues",
|
|
"pulls"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_my_repos": {
|
|
"description": "List repositories owned by the authenticated user.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_org_repos": {
|
|
"description": "List repositories belonging to an organization.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"org": {
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 100,
|
|
"description": "results per page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"org"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_pull_requests": {
|
|
"description": "List pull requests in a repository, filterable by state and milestone, with configurable sort order (e.g. recently updated, most commented).",
|
|
"input_schema": {
|
|
"properties": {
|
|
"milestone": {
|
|
"type": "number"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"sort": {
|
|
"default": "recentupdate",
|
|
"enum": [
|
|
"oldest",
|
|
"recentupdate",
|
|
"leastupdate",
|
|
"mostcomment",
|
|
"leastcomment",
|
|
"priority"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"default": "all",
|
|
"enum": [
|
|
"open",
|
|
"closed",
|
|
"all"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_releases": {
|
|
"description": "List releases in a repository, optionally filtered to drafts or pre-releases.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"is_draft": {
|
|
"type": "boolean"
|
|
},
|
|
"is_pre_release": {
|
|
"type": "boolean"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 20,
|
|
"description": "results per page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"list_tags": {
|
|
"description": "List all tags in a repository, paginated.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 20,
|
|
"description": "results per page",
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner",
|
|
"repo"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"pull_request_read": {
|
|
"description": "Read pull request: details, diff, changed files, head commit status, reviews, review comments.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"binary": {
|
|
"description": "include binary diff",
|
|
"type": "boolean"
|
|
},
|
|
"method": {
|
|
"enum": [
|
|
"get",
|
|
"get_diff",
|
|
"get_files",
|
|
"get_status",
|
|
"get_reviews",
|
|
"get_review",
|
|
"get_review_comments"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"owner": {
|
|
"description": "repo owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"pull_number": {
|
|
"type": "number"
|
|
},
|
|
"repo": {
|
|
"description": "repo name",
|
|
"type": "string"
|
|
},
|
|
"review_id": {
|
|
"description": "for 'get_review'; optional for 'get_review_comments', omit to list all",
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"method",
|
|
"owner",
|
|
"repo",
|
|
"pull_number"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"search_issues": {
|
|
"description": "Search issues and PRs across repositories",
|
|
"input_schema": {
|
|
"properties": {
|
|
"labels": {
|
|
"description": "comma-separated",
|
|
"type": "string"
|
|
},
|
|
"owner": {
|
|
"description": "filter by owner",
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"enum": [
|
|
"open",
|
|
"closed",
|
|
"all"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"issues",
|
|
"pulls"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"query"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"search_org_teams": {
|
|
"description": "Search for teams within an organization by name, optionally including each team's description in the results.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"includeDescription": {
|
|
"type": "boolean"
|
|
},
|
|
"org": {
|
|
"type": "string"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"org",
|
|
"query"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"search_repos": {
|
|
"description": "Search for repositories by keyword, with filters for topic/description matching, owner, visibility, archived status, and sort order.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"isArchived": {
|
|
"type": "boolean"
|
|
},
|
|
"isPrivate": {
|
|
"type": "boolean"
|
|
},
|
|
"keywordInDescription": {
|
|
"type": "boolean"
|
|
},
|
|
"keywordIsTopic": {
|
|
"type": "boolean"
|
|
},
|
|
"order": {
|
|
"type": "string"
|
|
},
|
|
"ownerID": {
|
|
"type": "number"
|
|
},
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
},
|
|
"sort": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"query"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
},
|
|
"search_users": {
|
|
"description": "Search for Gitea users by username or full name.",
|
|
"input_schema": {
|
|
"properties": {
|
|
"page": {
|
|
"default": 1,
|
|
"description": "page",
|
|
"type": "number"
|
|
},
|
|
"per_page": {
|
|
"default": 30,
|
|
"description": "results per page",
|
|
"type": "number"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"query"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"mutating": false
|
|
}
|
|
}
|