Commit Graph

58 Commits

Author SHA1 Message Date
JoannaaKL 28b868dad4 Add in memory cache for lockdown mode (#1416)
* Apply lockdown mode to issues and pull requests

* Add cache

* Unlock in defer

* Add muesli/cache2go

* [WIP] Replace custom cache in lockdown.go with cache2go struct (#1425)

* Initial plan

* Replace custom cache with cache2go library

- Added github.com/muesli/cache2go dependency
- Replaced custom map-based cache with cache2go.CacheTable
- Removed manual timer management (scheduleExpiry, ensureEntry methods)
- Removed timer field from repoAccessCacheEntry struct
- Updated GetRepoAccessInfo to use cache2go's Value() and Add() methods
- Updated SetTTL to flush and re-add entries with new TTL
- Used unique cache names per instance to avoid test interference
- All existing tests pass with the new implementation

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Final verification complete

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Use muesli for cache

* Make RepoAccessCache a singleton (#1426)

* Initial plan

* Implement RepoAccessCache as a singleton pattern

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Complete singleton implementation and verification

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Remove cacheIDCounter as requested

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Update mutexes

* .

* Reuse cache

* .

* .

* Fix logic after vibe coding

* Update docs

* .

* Refactoring to make the code pretty

* Hide lockdown logic behind shouldFilter function

* .

* Tests

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2025-11-21 10:34:51 +01:00
Ksenia Bobrova f3b9a63311 Report error when API silently fails to add review comment (#1441) 2025-11-19 10:11:17 +01:00
Jonathan c73f06fa29 bumps google/go-github to v79 2025-11-15 22:07:38 +01:00
JoannaaKL 2e5418093f Add lockdown mode to filter issue (#1371)
* Add lockdown mode to filter issue

* Update flag name

* Update pkg/lockdown/lockdown.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Merge two graphql queries into one

* Don't use Issue.Repository

* Add function signature

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-10 17:01:21 +01:00
Jonathan cf0e05e300 Update to google/go-github@v77 (#1357)
* update to google/go-github@v77

* licences update from required CI build

* fixes licences

* fixes possible nil reference

* refresh licences due to recent conflicts

---------

Co-authored-by: Roberto Nacu <kerobbi@github.com>
2025-11-07 08:06:27 -08:00
JoannaaKL 6a39a39e6d Add html filtering (#1356)
* Add html content sanitizer

* Add basic html sanitization

* .

* Correct licenses and scripts to ignore vendor directory

* Use singleton

* Simplify
2025-11-05 12:49:49 +01:00
JoannaaKL 304f29a2fd Add basic content sanitizer (#1344) 2025-10-31 12:51:22 +01:00
Jonathan 6f5040734a Updates github-mcp-server to go-github/v76 (#1289)
* updates github-mcp-server to go-github/v76

* updates license files

* refactors ListProjects to make use of
google/go-github ProjectsService

* refactors GetProject to make use of google/go-github ProjectsService

* declaring commit without a pointer

* cleanup additional commit pointer

---------

Co-authored-by: Tommaso Moro <37270480+tommaso-moro@users.noreply.github.com>
2025-10-27 13:53:53 +01:00
Ksenia Bobrova 3ba8d4a122 Issues consolidation (#1211)
* Issues consolidation

* Issues consolidation

* Clarify get_review_comments description

* Add get_comments method

* Formatting fixes

* Clarify tool description

* Clarify tool descriptions
2025-10-23 13:27:07 +02:00
Ksenia Bobrova e5522fca31 Consolidate pull request review tools (#1192)
* Consolidate pull request review tools

* Prompt tweaks + deleting snap

* Server instructions change

* Add enums

* Remove excessive mentions of event parameter

* Doc update
2025-10-10 16:56:01 +02:00
Ksenia Bobrova d0d4b0e5cb Consolidating pull requests get tools (#1172)
* Consolidating tools draft

* Consolidate pullrequest tools

* Prompt tweaks

* Fixes
2025-10-07 11:05:22 +02:00
Matt Holloway 0c5cfc3853 Add return ID to CRUD tools (#1074)
* add return ID to crud tools

* Update pkg/github/gists.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update pkg/github/gists.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix gist id to string conv

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-11 09:53:00 +01:00
Tony Truong 9db2e17204 Updating tool get_pull_request_comments -> get_pull_request_review_comments (#1062)
* update get_pull_request_comments to get_pull_request_review_comments to signify difference

* fix remaining old references

* cleanup dangling tool snap
2025-09-09 13:26:22 +02:00
Matt Holloway 358a415081 Add minimal response to CRUD tools, repositories and search toolsets (#988)
* add comprehensive minimal response where appropriate

* remove unneeded comments

* remove incorrect diff param

* update docs

* rm comment

* Update pkg/github/repositories.go

Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>

* update toolsnaps and docs

* change minimal_output to use new OptionalBoolParamWithDefault

* Update pkg/github/repositories.go

Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>

* refactor minimal conversion funcs to minimal_types.go

* consolidate response structs and remove unneeded message field

* consolidate response further

* remove CloneURL field

* Update pkg/github/repositories.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update pkg/github/server.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix undefined

* change incorrect comment

* remove old err var declaration

* Update pkg/github/repositories.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix syntax issue

* update toolsnaps

---------

Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 18:13:36 +01:00
Kirsten Laskoski d65d1d5455 fix: correct descriptions for PR/issue searching (#840)
Fix #839 by updating the descriptions for the `owner` and `repo`
parameters for the `search_issues` and `search_pull_requests` tools to
no longer reference notifications but issues and pull requests,
respectively.
2025-08-08 13:34:04 +01:00
Tommaso Moro 521d5e9258 Bump go-github to v74 (#826)
* update all imports to use v74

* go mod tidy

* update third party licenses

* rename

* autogen licenses
2025-08-06 22:11:50 +01:00
MayorFaj 45e90aedd4 feat: add reviewers parameter to UpdatePullRequest (#285)
Build and Test Go Project / build (macos-latest) (push) Has been cancelled
Build and Test Go Project / build (ubuntu-latest) (push) Has been cancelled
Build and Test Go Project / build (windows-latest) (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Docker / build (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
License Check / license-check (push) Has been cancelled
* feat: add reviewers parameter to UpdatePullRequest and update tests

* Update pullrequests.go

* feat: enhance update pull request functionality with reviewers support

* update README to clarify optional reviewers parameter in API documentation- go run ./cmd/github-mcp-server generate-docs

* feat: enhance UpdatePullRequest to return early if no updates or reviewers are provided

* Add updating draft state to `update_pull_request` tool (#774)

* initial impl of pull request draft state update

* appease linter

* update README

* add nosec

* fixed err return type for json marshalling

* add gql test

* Add support for org-level discussions in list_discussions tool (#775)

* make repo optional, and default to .github when not provided. improve tool description

* autogen

* update tests

* small copy paste error fixes

* refactor: streamline UpdatePullRequest logic and enhance test cases for reviewer updates

* refactor: remove redundant draft update tests and streamline UpdatePullRequest logic

* test: add unit tests for updating pull request draft state

* refactor: simplify UpdatePullRequest tests by removing unused mock data

---------

Co-authored-by: Matt Holloway <mattdholloway@github.com>
Co-authored-by: Tommaso Moro <37270480+tommaso-moro@users.noreply.github.com>
2025-07-31 11:05:38 +01:00
Matt Holloway d5e1f48728 Add updating draft state to update_pull_request tool (#774)
* initial impl of pull request draft state update

* appease linter

* update README

* add nosec

* fixed err return type for json marshalling

* add gql test
2025-07-29 10:58:06 +01:00
Matt Holloway 7ccc6b6493 Add pagination support to GraphQL-based tools (#683)
* initial pagination for `ListDiscussions`

* redo category id var cast

* add GraphQL pagination support for discussion comments and categories

* remove pageinfo returns

* fix out ref for linter

* update docs

* move to unified pagination for consensus on params

* update docs

* refactor pagination handling

* update docs

* linter fix

* conv rest to gql params for safe lint

* add nolint

* add error handling for perPage value in ToGraphQLParams

* refactor pagination error handling

* unified params for rest andn graphql and rennamed to be uniform for golang

* add 'after' for pagination

* update docs

* Update pkg/github/discussions.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update pkg/github/discussions.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update pkg/github/discussions_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* update default page size const

* reduce default pagination size from 100 to 30 in discussion tests

* update pagination for reverse and total

* update pagination to remove from discussions

* updated README

* improve the `ToGraphQLParams` function

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 16:31:29 +01:00
Lulu b5e3348179 fix: shorten long tool name for adding pr review comments (#697)
License Check / license-check (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Docker / build (push) Has been cancelled
Build and Test Go Project / build (macos-latest) (push) Has been cancelled
Build and Test Go Project / build (ubuntu-latest) (push) Has been cancelled
Build and Test Go Project / build (windows-latest) (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
* shorten tool name

* update function name to match tool name

* adjust wording of descriptions
2025-07-18 10:57:05 +01:00
Martin Høst Normark be91795fd3 Bump go-github to v73.0.0 (#597)
* Bump go-github to v73.0.0

* Clean up go.mod and update licenses

* Updated remaining imports to use github package v73 instead of v72

---------

Co-authored-by: Tommaso Moro <37270480+tommaso-moro@users.noreply.github.com>
Co-authored-by: tommaso-moro <tommaso-moro@github.com>
2025-07-15 15:21:24 +01:00
Tommaso Moro 42e5ce9b88 Tommy/(Bug-fix): adjust tool description to account for author in prompt (#658)
License Check / license-check (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Docker / build (push) Has been cancelled
Build and Test Go Project / build (macos-latest) (push) Has been cancelled
Build and Test Go Project / build (ubuntu-latest) (push) Has been cancelled
Build and Test Go Project / build (windows-latest) (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
* adjust tool description

* removed dead code

* improve desription

* update description for tests
2025-07-11 09:21:45 +01:00
JoannaaKL 8bd715235b Add repo and owner 2025-06-26 13:53:13 +02:00
JoannaaKL 805358ba3d Split pr and issue search
Add description

Extract common code

Test fixes

Updated search description

Move search prs to prs toolset

Update tools snaps
2025-06-26 13:53:13 +02:00
JoannaaKL 5f924342f1 Add search pull requests tool 2025-06-26 13:53:13 +02:00
anant-rustagi 23b16cfeb7 feat: add pagination support to get_pull_request_files tool (#561)
License Check / license-check (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Unit Tests / build (macos-latest) (push) Has been cancelled
Unit Tests / build (ubuntu-latest) (push) Has been cancelled
Unit Tests / build (windows-latest) (push) Has been cancelled
Lint / lint (push) Has been cancelled
- Add WithPagination() to tool definition
- Use OptionalPaginationParams to handle page and perPage parameters
- Pass pagination parameters to GitHub API ListFiles call
- Update tests to include pagination scenarios
- Update tool schema snapshot

Fixes #527

Co-authored-by: Anant rustagi <anantrustagi@Anants-MacBook-Pro.local>
2025-06-25 16:26:53 +02:00
Sam Morrow f90ff16f2e move to new approach and update testing 2025-06-25 08:12:38 +02:00
Adam Holt 36e6add0dd Return concrete error types for API errors 2025-06-25 08:12:38 +02:00
Lulu cbcf29f6d1 Export ToBoolPtr and RequiredParam (#495)
* ToBoolPtr, RequiredParam

* lint: type assertion in RequiredParam

* cap docstring
2025-06-09 15:11:38 +02:00
Pranav RK c7a872b9a1 Bump go-github to v72.0.0 2025-06-02 10:55:04 +02:00
Theo Brigitte 414309ccc2 Remove non-existent get_line_number_in_pull_request_file tool reference
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Unit Tests / build (macos-latest) (push) Has been cancelled
Unit Tests / build (ubuntu-latest) (push) Has been cancelled
Unit Tests / build (windows-latest) (push) Has been cancelled
License Check / license-check (push) Has been cancelled
Lint / lint (push) Has been cancelled
2025-05-26 07:40:57 +02:00
William Martin eca853b28a Split PR review creation, commenting, submission and deletion 2025-05-19 17:50:36 +02:00
William Martin a6d3c5ea5c Update pkg/github/pullrequests.go
Co-authored-by: Sam Morrow <sammorrowdrums@github.com>
2025-05-14 22:57:43 +02:00
William Martin 2fb1be93f5 Support requesting copilot as a reviewer 2025-05-14 22:57:43 +02:00
Arya Soni a563bd6e1d Add request_copilot_review tool with placeholder implementation 2025-05-14 22:57:43 +02:00
dependabot[bot] 705b61b814 build(deps): bump github.com/mark3labs/mcp-go from 0.25.0 to 0.27.0 (#397)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: William Martin <williammartin@github.com>
2025-05-13 13:26:36 +02:00
Sam Morrow a58937c0b3 feat: provide tool annotations 2025-04-23 13:14:01 +02:00
Toby Padilla 9fa582d8d6 fix: use anyOf instead of nullable type array
License Check / license-check (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
Docker / build (push) Has been cancelled
Unit Tests / build (macos-latest) (push) Has been cancelled
Unit Tests / build (ubuntu-latest) (push) Has been cancelled
Unit Tests / build (windows-latest) (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
Lint / lint (push) Has been cancelled
Windsurf is erroring on the `create_pull_request` tool because we're
using an array of types to make fields nullable. This PR uses `anyOf`
instead and should fix the issue.
2025-04-21 21:19:24 +02:00
Toby Padilla 22e493620c fix: update json schema for create_pull_request_review to make OpenAI compatible (#300)
Co-authored-by: Sam Morrow <info@sam-morrow.com>
2025-04-17 12:50:19 +02:00
Tony Truong 4457d0ac30 Add missing enum constraints (#278)
* Add missing enum constraints

* Remove redundant listing of additional enums in descriptions

---------

Co-authored-by: Sam Morrow <info@sam-morrow.com>
2025-04-15 17:01:33 +02:00
Ashwin Bhat 6c05b4009a Add tools for one-off PR comments and replying to PR review comments (#143)
* Add add_pull_request_review_comment tool for PR review comments

Adds the ability to add review comments to pull requests with support for line, multi-line, and file-level comments, as well as replying to existing comments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add reply_to_pull_request_review_comment tool

Adds a new tool to reply to existing pull request review comments using the GitHub API's comment reply endpoint. This allows for threaded discussions on pull request reviews.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update README with new PR review comment tools

* rebase

* use new getClient function inadd and reply pr review tools

* Unify PR review comment tools into a single consolidated tool

The separate AddPullRequestReviewComment and ReplyToPullRequestReviewComment tools have been merged into a single tool that handles both creating new comments and replying to existing ones. This approach simplifies the API and provides a more consistent interface for users.

- Made commit_id and path optional when using in_reply_to for replies
- Updated the tests to verify both comment and reply functionality
- Removed the separate ReplyToPullRequestReviewComment tool
- Fixed test expectations to match how errors are returned

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update README to reflect the unified PR review comment tool

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Javier Uruen Val <juruen@github.com>
2025-04-12 11:45:10 +02:00
Sam Morrow 3ec8699deb chore: groundwork for multi-user to server 2025-04-10 01:59:03 +02:00
monotykamary 56c1fce434 feat: Add update_pull_request tool (#122)
* feat: add update_pull_request tool

* refactor: address feedback on optionalParamOK helper

* docs: add update_pull_request tool documentation

* refactor: update optionalParamsOK as exported member

* fix: rename to exported function
2025-04-09 08:11:10 +02:00
Sam Morrow 519ed9ebc7 chore: export remaining search + helpers 2025-04-08 09:43:52 +02:00
Sam Morrow c85dd07e5e chore: export pr funcs 2025-04-08 09:33:37 +02:00
William Martin 0f9ef6e708 Add pagination helper 2025-04-07 16:48:56 +02:00
Alexander Yastrebov 755b816b7c pkg/github: fix use of per page parameter
Page size tool parameter names were changed to `perPage` within #90
while GitHub API uses `per_page` parameter name.

This change fixes overlooked inconsistencies.

Follow up on #90
Follow up on #129
Fixes #136

Signed-off-by: Alexander Yastrebov <yastrebov.alex@gmail.com>
2025-04-07 16:48:56 +02:00
Ashwin Bhat 31471a4b4f Add line parameter support to create_pull_request_review tool (#118)
* Add line parameter support to create_pull_request_review tool

- Updated schema to make path and body the only required fields
- Added line parameter as alternative to position for inline comments
- Updated handler to accept either position or line based on GitHub API spec
- Added new test case that verifies line parameter works properly
- Updated error messages for better validation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Expand PR review API with multi-line comment support

- Added new parameters: line, side, start_line, start_side
- Added proper validation for multi-line comment parameters
- Improved validation logic to handle parameter combinations
- Added test cases for regular and multi-line comments
- Updated schema documentation for better tool discoverability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* gofmt

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Javier Uruen Val <juruen@github.com>
2025-04-07 16:20:17 +02:00
William Martin 6f7458ae3c Conform list tools
License Check / license-check (push) Has been cancelled
Docker / build (push) Has been cancelled
Unit Tests / build (macos-latest) (push) Has been cancelled
Unit Tests / build (ubuntu-latest) (push) Has been cancelled
Unit Tests / build (windows-latest) (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
Lint / lint (push) Has been cancelled
2025-04-04 15:51:50 +02:00
Javier Uruen Val 5f3926d535 add support for create_pull_request (#63)
Co-authored-by: Toby Padilla <toby@toby.sh>
2025-04-01 15:48:39 -06:00