Skip to main content
Glama
README.md4.48 kB
# GitLab MCP Test Suite This directory contains the test suite for the GitLab MCP server. ## Test Files ### oauth-tests.ts Comprehensive tests for OAuth2 authentication functionality. **What it tests:** - OAuth class instantiation and configuration - Token storage and retrieval - Token expiration and validation - Token file permissions (Unix) - Port availability checking - Shared OAuth server concept - Environment variable configuration - Support for self-hosted GitLab instances - Custom redirect URI ports **Running the tests:** ```bash npm run test:oauth ``` ### readonly-mcp-tests.ts Integration tests for all read-only MCP tools. **What it tests:** - All read-only API operations - Project management tools - Issue management tools - Merge request tools - Pipeline tools - File operations - Commit operations - Labels, namespaces, users - Events, milestones, wiki pages **Running the tests:** ```bash npm run test:mcp:readonly ``` **Prerequisites:** - Set `GITLAB_PERSONAL_ACCESS_TOKEN` or `GITLAB_TOKEN` environment variable - Optionally set `GITLAB_PROJECT_ID` for project-specific tests - Set `GITLAB_API_URL` if using self-hosted GitLab ### test-all-transport-server.ts Tests for different MCP transport protocols (stdio, SSE, streamable-http). **Running the tests:** ```bash npm run test:server ``` ## Running All Tests To run the complete test suite: ```bash npm run test:all ``` This will run: 1. API validation tests 2. Read-only MCP tests 3. OAuth authentication tests ## Environment Variables ### For OAuth Tests - `GITLAB_OAUTH_CLIENT_ID` - Your OAuth application client ID (optional for basic tests) - `GITLAB_OAUTH_REDIRECT_URI` - OAuth callback URL (default: `http://127.0.0.1:8888/callback`) - `GITLAB_API_URL` - GitLab API URL (default: `https://gitlab.com/api/v4`) ### For Integration Tests - `GITLAB_PERSONAL_ACCESS_TOKEN` - GitLab personal access token (required) - `GITLAB_PROJECT_ID` - Test project ID (optional but recommended) - `GITLAB_API_URL` - GitLab API URL (default: `https://gitlab.com/api/v4`) ## Test Results Test results are saved as JSON files: - `test-results-oauth.json` - OAuth test results - `test-results-readonly.json` - Read-only MCP test results ## CI/CD Integration The test suite can be integrated into CI/CD pipelines: ```yaml # Example GitLab CI configuration test: script: - npm install - npm run build - npm run test:all variables: GITLAB_PERSONAL_ACCESS_TOKEN: $CI_JOB_TOKEN GITLAB_PROJECT_ID: $CI_PROJECT_ID ``` ## Writing New Tests ### Adding OAuth Tests Add new test functions to `oauth-tests.ts`: ```typescript async function testNewFeature(): Promise<void> { // Test implementation assert(condition, 'Error message'); } // Register in runOAuthTests() await runTest('New feature description', testNewFeature); ``` ### Adding MCP Tool Tests Add new tools to the `mcpTools` array in `readonly-mcp-tests.ts`: ```typescript { name: 'new_tool_name', category: 'category', required: true } ``` Add parameter setup in `setupToolParameters()` if needed. ## Troubleshooting ### OAuth Tests Failing - Ensure no OAuth server is running on port 8888 - Check that test token files are cleaned up - Verify file system permissions for token storage ### Integration Tests Failing - Verify `GITLAB_PERSONAL_ACCESS_TOKEN` is valid - Check GitLab API URL is accessible - Ensure test project exists if `GITLAB_PROJECT_ID` is set - Check rate limiting on GitLab API ### Permission Errors - OAuth token files require 0600 permissions on Unix systems - Ensure write access to test directories - Windows users: permission tests are automatically skipped ## Test Coverage Current test coverage: ### OAuth Functionality - ✅ Class instantiation and configuration - ✅ Token lifecycle management - ✅ Expiration handling - ✅ File permissions - ✅ Port management - ✅ Environment configuration - ⏭️ Full OAuth flow (requires user interaction) - ⏭️ Token refresh flow (requires valid refresh token) ### MCP Tools - ✅ All read-only operations - ⏭️ Write operations (would modify GitLab data) - ⏭️ Destructive operations (would delete GitLab data) ## Future Improvements Planned test enhancements: - [ ] Mock OAuth server for full flow testing - [ ] Token refresh flow simulation - [ ] Write operation tests with cleanup - [ ] Performance benchmarking - [ ] Concurrent request testing - [ ] Error recovery testing - [ ] Network failure simulation

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zereight/gitlab-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server