Skip to main content
Glama

MCP Atlassian

#!/bin/bash # Unified script for testing with real Atlassian data # Supports testing models, API, or both # Default settings TEST_TYPE="all" # Can be "all", "models", or "api" VERBOSITY="-v" # Verbosity level RUN_WRITE_TESTS=false FILTER="" # Test filter using pytest's -k option # Parse command line arguments while [[ $# -gt 0 ]]; do case $1 in --models-only) TEST_TYPE="models" shift ;; --api-only) TEST_TYPE="api" shift ;; --all) TEST_TYPE="all" shift ;; --quiet) VERBOSITY="" shift ;; --verbose) VERBOSITY="-vv" shift ;; --with-write-tests) RUN_WRITE_TESTS=true shift ;; -k) FILTER="-k \"$2\"" shift shift ;; --help) echo "Usage: $0 [options]" echo "Options:" echo " --models-only Test only Pydantic models" echo " --api-only Test only API integration" echo " --all Test both models and API (default)" echo " --quiet Minimal output" echo " --verbose More detailed output" echo " --with-write-tests Include tests that modify data (including TextContent validation)" echo " -k \"PATTERN\" Only run tests matching the given pattern (uses pytest's -k option)" echo " --help Show this help message" exit 0 ;; *) echo "Unknown option: $1" echo "Use --help for usage information" exit 1 ;; esac done # Check if .env file exists if [ ! -f ".env" ]; then echo "Warning: .env file not found. Tests will be skipped if environment variables are not set." else # Load environment variables from .env source .env fi # Set environment variable to enable real data testing export USE_REAL_DATA=true # Set specific test IDs for API validation tests # These will be used if they're set, otherwise tests will be skipped export JIRA_TEST_ISSUE_KEY="${JIRA_TEST_ISSUE_KEY:-}" export JIRA_TEST_EPIC_KEY="${JIRA_TEST_EPIC_KEY:-}" export CONFLUENCE_TEST_PAGE_ID="${CONFLUENCE_TEST_PAGE_ID:-}" export JIRA_TEST_PROJECT_KEY="${JIRA_TEST_PROJECT_KEY:-}" export CONFLUENCE_TEST_SPACE_KEY="${CONFLUENCE_TEST_SPACE_KEY:-}" # Check required environment variables and warn if any are missing required_vars=( "JIRA_URL" "JIRA_USERNAME" "JIRA_API_TOKEN" "CONFLUENCE_URL" "CONFLUENCE_USERNAME" "CONFLUENCE_API_TOKEN" ) missing_vars=0 for var in "${required_vars[@]}"; do if [ -z "${!var}" ]; then echo "Warning: Environment variable $var is not set. Some tests will be skipped." missing_vars=$((missing_vars+1)) fi done if [ $missing_vars -gt 0 ]; then echo "Found $missing_vars missing required variables. Tests requiring these variables will be skipped." echo "You can set these in your .env file to run all tests." fi # Function to run model tests run_model_tests() { echo "Running Pydantic model tests with real data..." echo "" echo "===== Base Model Tests =====" uv run pytest tests/unit/models/test_base_models.py $VERBOSITY echo "" echo "===== Jira Model Tests =====" uv run pytest tests/unit/models/test_jira_models.py::TestRealJiraData $VERBOSITY echo "" echo "===== Confluence Model Tests =====" uv run pytest tests/unit/models/test_confluence_models.py::TestRealConfluenceData $VERBOSITY } # Function to run API tests run_api_tests() { echo "" echo "===== API Read-Only Tests =====" # If a filter is provided, run all tests with that filter if [[ -n "$FILTER" ]]; then echo "Running tests with filter: $FILTER" eval "uv run pytest tests/test_real_api_validation.py $VERBOSITY $FILTER" return fi # Otherwise run specific tests based on write/read only setting # Run the read-only tests uv run pytest tests/test_real_api_validation.py::test_jira_get_issue tests/test_real_api_validation.py::test_jira_get_epic_issues tests/test_real_api_validation.py::test_confluence_get_page_content $VERBOSITY if [[ "$RUN_WRITE_TESTS" == "true" ]]; then echo "" echo "===== API Write Operation Tests =====" echo "WARNING: These tests will create and modify data in your Atlassian instance." echo "Press Ctrl+C now to cancel, or wait 5 seconds to continue..." sleep 5 # Run the write operation tests uv run pytest tests/test_real_api_validation.py::test_jira_create_issue tests/test_real_api_validation.py::test_jira_create_subtask tests/test_real_api_validation.py::test_jira_create_task_with_parent tests/test_real_api_validation.py::test_jira_add_comment tests/test_real_api_validation.py::test_confluence_create_page tests/test_real_api_validation.py::test_confluence_update_page tests/test_real_api_validation.py::test_jira_create_epic tests/test_real_api_validation.py::test_jira_create_epic_two_step $VERBOSITY # Run the skipped transition test if explicitly requested write tests echo "" echo "===== API Advanced Write Tests =====" echo "Running tests for status transitions" uv run pytest tests/test_real_api_validation.py::test_jira_transition_issue -v -k "test_jira_transition_issue" fi } # Run the appropriate tests based on the selected type case $TEST_TYPE in "models") run_model_tests ;; "api") run_api_tests ;; "all") run_model_tests run_api_tests ;; esac echo "" echo "Testing completed. Check the output for any failures or skipped tests."

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/sooperset/mcp-atlassian'

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