Commit Graph

41 Commits

Author SHA1 Message Date
Adam Holt 9227a95225 Add schema caching to Toolsets. 2025-12-04 12:28:21 +01:00
Adam Holt 60aef5d2e3 Convert to modelcontextprotocol/go-sdk (#1428)
Move from `mark3labs/mcp-go` to `modelcontextprotocol/go-sdk`.

This is mostly focused on updating tool schema and tool handler signatures, along with any associated internal changes related to those changes.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
Co-authored-by: LuluBeatson <lulubeatson@github.com>
Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>
Co-authored-by: SamMorrowDrums <4811358+SamMorrowDrums@users.noreply.github.com>
Co-authored-by: Sam Morrow <info@sam-morrow.com>
2025-12-01 14:30:59 +01:00
Tommaso Moro 3e1fca0cc5 Tommy/tool-specific-config-support (#1394)
GoReleaser Release / release (push) Has been cancelled
License Check / license-check (push) Has been cancelled
Publish to MCP Registry / publish (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
* add enabledTools to StdioServerConfig

* add EnabledTools to MCPServerConfig, and logic to bypass toolset config if present

* add logic to register specific tools

* update readme

* Update to be consistent with: https://docs.google.com/document/d/1tOOBJ4y9xY61QVrO18ymuVt4SO9nV-z2B4ckaL2f9IU/edit?tab=t.0#heading=h.ffto4e5dwzlf

specifically
- allow for --tools and dynamic toolset mode together
- allow for --tools and --toolsets together

* go mod tidy

* update

* clean up comment

* fix

* fix

* updte

* update

* clean up
2025-11-26 14:20:01 +00:00
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
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
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
pinotelio 11c3d709c2 Fix environment variable mapping for read-only mode (#1067)
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
Build and Test Go Project / build (macos-latest) (push) Has been cancelled
Build and Test Go Project / build (ubuntu-latest) (push) Has been cancelled
GoReleaser Release / release (push) Has been cancelled
License Check / license-check (push) Has been cancelled
Publish to MCP Registry / publish (push) Has been cancelled
Fix environment variable mapping for read-only mode configuration

Add SetEnvKeyReplacer to viper configuration to properly map environment
variables with underscores to flag names with dashes. This enables the
documented GITHUB_READ_ONLY=1 environment variable to work correctly.

Without this fix, viper was looking for GITHUB_READ-ONLY (with dash) but
the documentation and standard convention use GITHUB_READ_ONLY (with
underscore).

Fixes issue where read-only mode was not being activated when using
GITHUB_READ_ONLY=1 in Docker containers.
2025-10-20 13:29:34 +02:00
Tony Truong 66fabb7a8d Adding default toolset as configuration (#1229)
* add toolset default to make configuration easier

* fix readme

* adding transformer to cleanly handle special toolsets

* cleaning code

* fixing cli message

* remove duplicated test

* Update internal/ghmcp/server.go

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

* Update internal/ghmcp/server_test.go

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

* adding error message for invalid toolsets

* fix merge conflict

* add better formatting

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-15 18:20:14 +02:00
Tony Truong bf0d62e4a6 Adding default toolset grouping (#1159)
* adding default toolset group, splitting up stargazers from repos

* adding structs for toolset group metadata

* update readme

* refactor the readme

* fix lint

---------

Co-authored-by: Ksenia Bobrova <almaleksia@github.com>
2025-10-06 17:07:25 +02:00
Matt Holloway 2621dbefd9 Add actions job log buffer and profiler (#866)
* add sliding window for actions logs

* refactor: fix sliding

* remove trim content

* only use up to 1mb of memory for logs

* update to tail lines in second pass

* add better memory usage calculation

* increase window size to 5MB

* update test

* update vers

* undo vers change

* add incremental memory tracking

* use ring buffer

* remove unused ctx param

* remove manual GC clear

* fix cca feedback

* extract ring buffer logic to new package

* handle log content processing errors and use correct param for maxjobloglines

* fix tailing

* account for if tailLines exceeds window size

* add profiling thats reusable

* remove profiler testing

* refactor profiler: introduce safeMemoryDelta for accurate memory delta calculations

* linter fixes

* Update pkg/buffer/buffer.go

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

* use flag for maxJobLogLines

* add param passing for context window size

* refactor: rename contextWindowSize to contentWindowSize for consistency

* fix: use tailLines if bigger but only if <= 5000

* fix: limit tailLines to a maximum of 500 for log content download

* Update cmd/github-mcp-server/main.go

Co-authored-by: Adam Holt <omgitsads@github.com>

* Update cmd/github-mcp-server/main.go

Co-authored-by: Adam Holt <omgitsads@github.com>

* move profiler to internal/

* update actions test with new profiler location

* fix: adjust buffer size limits

* make line buffer 1028kb

* fix mod path

* change test to use same buffer size as normal use

* improve test for non-sliding window implementation to not count empty lines

* make test memory measurement more accurate

* remove impossible conditional

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Adam Holt <omgitsads@github.com>
2025-08-19 14:02:16 +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
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
JoannaaKL 5904a0365e Fix linting flow (#614)
* Add issues type filter

* Add e2e test

* Update e2e/e2e_test.go

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

* Add lint script and update golangci config

* Add lint script

* Install if not installed

* Pass lint config

* Use action and rename workflow

* Back to reparate config

* Migrate config to v2

* Update config

* Lint code

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-30 15:14:45 +02:00
Sam Morrow e9c8b40724 update documentation, add script and workflow 2025-06-27 17:00:30 +02:00
JoannaaKL 96f0173c94 Fix linter error 2025-06-26 15:45:27 +02:00
JoannaaKL ecc57ffec6 Update main.go 2025-06-26 15:45:27 +02:00
JoannaaKL 76535ee2b6 Bind 2025-06-26 15:45:27 +02:00
JoannaaKL 9e1d401b86 Remove unnecessary or 2025-06-26 15:45:27 +02:00
JoannaaKL aaaff4ff6c Add underscore variant 2025-06-26 15:45:27 +02:00
William Martin afc7a93b3d Extract ghmcp internal package
This commit cleanly separates config parsing, stdio server execution and
mcp server construction. Aside from significant clarity improvements, it
allows for direct construction of the mcp server in e2e tests to allow
for breakpoint debugging.
2025-05-07 16:13:22 +02:00
William Martin f9427ab04e Ensure toolsets are configurable via env var 2025-04-25 14:44:49 +02:00
Sam Morrow b72a591ce5 chore: use tabs not spaces 2025-04-15 14:33:39 +02:00
Sam Morrow 7eff904605 chore: improve --version command 2025-04-15 14:33:39 +02:00
Joe Ton ea19581ef0 refactor: improve version output using SetVersionTemplate 2025-04-15 14:33:39 +02:00
Sam Morrow ff3036d596 feat: partition tools by product/feature 2025-04-15 01:11:53 +02:00
Sam Morrow 9dacf70b6e chore: extend user agent 2025-04-12 12:24:20 +02:00
Sam Morrow 3ec8699deb chore: groundwork for multi-user to server 2025-04-10 01:59:03 +02:00
Ariel Deitcher 936b24c4c3 remove pretty print json flag (#179) 2025-04-08 08:19:42 -07:00
Sam Morrow 7ab5d968e0 chore: pass version through to server
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
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
Lint / lint (push) Has been cancelled
2025-04-07 17:56:44 +02:00
Ariel Deitcher 270bbf7ad4 pretty print json (#114) 2025-04-04 17:59:15 -07:00
Sam Morrow 73ce058d0b chore: go releaser (#71)
* add goreleaser and associated workflows
2025-04-03 12:10:33 +02:00
Ariel Deitcher 84ec566dd8 set user agent for client requests (#61) 2025-04-01 07:48:32 -07:00
Javier Uruen Val 92bceb5fa5 linter 2025-03-26 11:03:52 +01:00
Sam Morrow b320e51053 clean up and add readme 2025-03-24 17:49:10 +01:00
Sam Morrow b3781a251d take env var and use the With rather than assignment 2025-03-24 17:49:10 +01:00
Sam Morrow eb6c7f5537 rudimentary enterprise support 2025-03-24 17:49:10 +01:00
Sam Morrow 3f7d5b0b8a feat: read-only flag 2025-03-20 18:49:46 +01:00
Sam Morrow dd46f8a837 add a framework for translations 2025-03-20 18:33:30 +01:00
Javier Uruen Val 4561355a65 add instructions on how to test the server with VS Code 2025-03-18 09:39:40 +01:00