xcode-mcp-server 1.3.11b4__tar.gz → 1.3.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/PKG-INFO +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/pyproject.toml +1 -1
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/__init__.py +1 -1
- xcode_mcp_server-1.3.12/xcode_mcp_server/server.py +80 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/build_project.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/clean_project.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/create_project.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/debug_list_notification_history.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_active_run_destination.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_build_errors.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_build_results.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_directory_listing.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_directory_tree.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_latest_test_results.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_project_schemes.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_runtime_output.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_xcode_projects.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_booted_simulators.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_mac_app_windows.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_project_tests.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_run_destinations.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_running_mac_apps.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/run_project_tests.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/run_project_unmonitored.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/run_project_until_terminated.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/run_project_with_user_interaction.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/set_run_destination.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/stop_project.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/take_app_screenshot.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/take_simulator_screenshot.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/take_window_screenshot.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/take_xcode_screenshot.py +2 -2
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/version.py +2 -2
- xcode_mcp_server-1.3.11b4/xcode_mcp_server/server.py +0 -29
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/.github/workflows/claude-code.yml +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/.github/workflows/claude-self-review.yml +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/.gitignore +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/CLAUDE.md +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/LICENSE +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/README.md +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/TODO.md +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/__PUBLIC_REPO +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/_venv-setup.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/deploy-beta.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/deploy.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/dev.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/info.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/requirements.txt +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/run_local_for_claude.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/cleanup_tests.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/create_projects.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/create_real_projects.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/create_spm_projects.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/create_xcode_projects.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/run_all_tests.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/setup_test_projects.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/scripts/setup_tests.sh +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp/Assets.xcassets/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp/ContentView.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp/iosEmptySwiftUIAppApp.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/iosEmptySwiftUIApp/iosEmptySwiftUIApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptyCommandLineApp/macosEmptyCommandLineApp/main.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptyCommandLineApp/macosEmptyCommandLineApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptyCommandLineApp/macosEmptyCommandLineApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptyCommandLineApp/macosEmptyCommandLineApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptyCommandLineApp/macosEmptyCommandLineApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp/Assets.xcassets/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp/ContentView.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp/macosEmptySwiftUIAppApp.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/fromXcode/macosEmptySwiftUIApp/macosEmptySwiftUIApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/BrokenApp/BrokenApp/main.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/BrokenApp/BrokenApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/BrokenApp/BrokenApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/BrokenApp/BrokenApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/BrokenApp/BrokenApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/ConsoleApp/ConsoleApp/main.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/ConsoleApp/ConsoleApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/ConsoleApp/ConsoleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/ConsoleApp/ConsoleApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/ConsoleApp/ConsoleApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SimpleApp/SimpleApp/main.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SimpleApp/SimpleApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SimpleApp/SimpleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SimpleApp/SimpleApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SimpleApp/SimpleApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp/Assets.xcassets/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp/ContentView.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp/macosEmptySwiftUIAppApp.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/SwiftUITestApp/SwiftUITestApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp/Assets.xcassets/Contents.json +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp/ContentView.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp/iosEmptySwiftUIAppApp.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp.xcodeproj/project.pbxproj +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp.xcodeproj/project.xcworkspace/xcuserdata/andrew.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/test_projects/templates/iOSTestApp/iOSTestApp.xcodeproj/xcuserdata/andrew.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/debug_build.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/debug_test.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_basic.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_build.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_build_log_parser.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_fixed.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_manifest_wait.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_minimal.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/tests/test_runner.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/__main__.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/cli.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/config_manager.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/config_ui.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/exceptions.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/security.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/__init__.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/__init__.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/applescript.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/build_log_parser.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/decode_active_destination.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/decode_xcode_recents.swift +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/paths.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/project_templates.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/screenshot.py +0 -0
- {xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/xcresult.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xcode-mcp-server
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.12
|
|
4
4
|
Summary: Drew's MCP server for Xcode integration
|
|
5
5
|
Project-URL: Homepage, https://github.com/drewster99/xcode-mcp-server
|
|
6
6
|
Project-URL: Repository, https://github.com/drewster99/xcode-mcp-server
|
|
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
|
-
Requires-Dist: mcp[cli]>=1.
|
|
20
|
+
Requires-Dist: mcp[cli]>=1.7.0
|
|
21
21
|
Requires-Dist: questionary>=2.0.0
|
|
22
22
|
Requires-Dist: rich>=13.0.0
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""FastMCP server instance for Xcode MCP Server"""
|
|
3
|
+
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
from mcp.types import ToolAnnotations
|
|
6
|
+
|
|
7
|
+
# Initialize the MCP server
|
|
8
|
+
mcp = FastMCP("Xcode MCP Server",
|
|
9
|
+
instructions="""
|
|
10
|
+
This server provides access to the Xcode IDE. For any project intended
|
|
11
|
+
for Apple platforms, such as iOS or macOS, this MCP server is the best
|
|
12
|
+
way to build or run .xcodeproj or .xcworkspace Xcode projects, and should
|
|
13
|
+
ALWAYS be preferred over using `xcodebuild`, `swift build`, or
|
|
14
|
+
`swift package build`. Building with this tool ensures the build happens
|
|
15
|
+
exactly the same way as when the user builds with Xcode, with all the same
|
|
16
|
+
settings, so you will get the same results the user sees. The user can also
|
|
17
|
+
see any results immediately and a subsequent build and run by the user will
|
|
18
|
+
happen almost instantly for the user.
|
|
19
|
+
|
|
20
|
+
Call `get_xcode_projects` to find Xcode project (.xcodeproj) and
|
|
21
|
+
Xcode workspace (.xcworkspace) folders under a given root folder.
|
|
22
|
+
|
|
23
|
+
Call `get_project_schemes` to get the build scheme names for a given
|
|
24
|
+
.xcodeproj or .xcworkspace.
|
|
25
|
+
|
|
26
|
+
Call `build_project` to build the project and get back the first 25 lines of
|
|
27
|
+
error (and/or potentially warning) output. `build_project` will default to the
|
|
28
|
+
active scheme if none is provided.
|
|
29
|
+
"""
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Tool behavior annotations (advisory hints for MCP clients).
|
|
33
|
+
#
|
|
34
|
+
# These describe how a tool affects its environment so clients can gate
|
|
35
|
+
# auto-approval and label tools appropriately. The build/run/test tools are
|
|
36
|
+
# marked destructive AND open-world: a build executes arbitrary third-party
|
|
37
|
+
# code (Run Script phases, SPM plugins/macros) and resolves packages from
|
|
38
|
+
# arbitrary remote hosts, so we cannot honestly claim it is additive-only,
|
|
39
|
+
# idempotent, or hermetic.
|
|
40
|
+
|
|
41
|
+
# Pure observers: reading state, listing, screenshots. No mutation, no network.
|
|
42
|
+
TOOL_READONLY = ToolAnnotations(
|
|
43
|
+
readOnlyHint=True,
|
|
44
|
+
idempotentHint=True,
|
|
45
|
+
destructiveHint=False,
|
|
46
|
+
openWorldHint=False,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Builds and runs: execute arbitrary build/install scripts and fetch packages.
|
|
50
|
+
TOOL_BUILD = ToolAnnotations(
|
|
51
|
+
readOnlyHint=False,
|
|
52
|
+
idempotentHint=False,
|
|
53
|
+
destructiveHint=True,
|
|
54
|
+
openWorldHint=True,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Clean: deletes build artifacts. Destructive but locally bounded and idempotent.
|
|
58
|
+
TOOL_CLEAN = ToolAnnotations(
|
|
59
|
+
readOnlyHint=False,
|
|
60
|
+
idempotentHint=True,
|
|
61
|
+
destructiveHint=True,
|
|
62
|
+
openWorldHint=False,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
# Create: writes a fresh template and refuses to overwrite. Additive, local.
|
|
66
|
+
TOOL_CREATE = ToolAnnotations(
|
|
67
|
+
readOnlyHint=False,
|
|
68
|
+
idempotentHint=False,
|
|
69
|
+
destructiveHint=False,
|
|
70
|
+
openWorldHint=False,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Settles a piece of local state (run destination, stopping a run). Re-applying
|
|
74
|
+
# the same call lands on the same state, and nothing is destroyed.
|
|
75
|
+
TOOL_MUTATING_IDEMPOTENT = ToolAnnotations(
|
|
76
|
+
readOnlyHint=False,
|
|
77
|
+
idempotentHint=True,
|
|
78
|
+
destructiveHint=False,
|
|
79
|
+
openWorldHint=False,
|
|
80
|
+
)
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/build_project.py
RENAMED
|
@@ -8,7 +8,7 @@ import sys
|
|
|
8
8
|
import time
|
|
9
9
|
from typing import Optional
|
|
10
10
|
|
|
11
|
-
from xcode_mcp_server.server import mcp
|
|
11
|
+
from xcode_mcp_server.server import mcp, TOOL_BUILD
|
|
12
12
|
from xcode_mcp_server.config_manager import apply_config
|
|
13
13
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
14
14
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
@@ -283,7 +283,7 @@ def _supplement_with_xcactivitylog_warnings(
|
|
|
283
283
|
return errors_json
|
|
284
284
|
|
|
285
285
|
|
|
286
|
-
@mcp.tool()
|
|
286
|
+
@mcp.tool(annotations=TOOL_BUILD)
|
|
287
287
|
@apply_config
|
|
288
288
|
def build_project(project_path: str,
|
|
289
289
|
scheme: Optional[str] = None,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/clean_project.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import os
|
|
5
5
|
|
|
6
|
-
from xcode_mcp_server.server import mcp
|
|
6
|
+
from xcode_mcp_server.server import mcp, TOOL_CLEAN
|
|
7
7
|
from xcode_mcp_server.config_manager import apply_config
|
|
8
8
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
9
9
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -17,7 +17,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
@mcp.tool()
|
|
20
|
+
@mcp.tool(annotations=TOOL_CLEAN)
|
|
21
21
|
@apply_config
|
|
22
22
|
def clean_project(project_path: str) -> str:
|
|
23
23
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/create_project.py
RENAMED
|
@@ -5,7 +5,7 @@ import json
|
|
|
5
5
|
import os
|
|
6
6
|
from typing import Optional
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_CREATE
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.security import validate_parent_for_new_project
|
|
11
11
|
from xcode_mcp_server.exceptions import InvalidParameterError
|
|
@@ -23,7 +23,7 @@ from xcode_mcp_server.tools.get_xcode_projects import register_created_project
|
|
|
23
23
|
SUPPORTED_PLATFORMS = {"ios", "macos"}
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
@mcp.tool()
|
|
26
|
+
@mcp.tool(annotations=TOOL_CREATE)
|
|
27
27
|
@apply_config
|
|
28
28
|
def create_project(
|
|
29
29
|
parent_directory: str,
|
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import subprocess
|
|
6
6
|
import sys
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.utils.applescript import get_notification_history
|
|
11
11
|
from xcode_mcp_server.utils.paths import DEBUG_DIR
|
|
@@ -16,7 +16,7 @@ from xcode_mcp_server.utils.paths import DEBUG_DIR
|
|
|
16
16
|
NOTIFICATION_HISTORY_FILE = os.path.join(DEBUG_DIR, "notification-history.txt")
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
@mcp.tool()
|
|
19
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
20
20
|
@apply_config
|
|
21
21
|
def debug_list_notification_history() -> str:
|
|
22
22
|
"""
|
|
@@ -7,7 +7,7 @@ import os
|
|
|
7
7
|
import subprocess
|
|
8
8
|
import sys
|
|
9
9
|
|
|
10
|
-
from xcode_mcp_server.server import mcp
|
|
10
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
11
11
|
from xcode_mcp_server.config_manager import apply_config
|
|
12
12
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
13
13
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -162,7 +162,7 @@ def _lookup_simulator_info(udid: str) -> tuple:
|
|
|
162
162
|
return ("", "")
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
@mcp.tool()
|
|
165
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
166
166
|
@apply_config
|
|
167
167
|
def get_active_run_destination(
|
|
168
168
|
project_path: str,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_build_errors.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
-
from xcode_mcp_server.server import mcp
|
|
6
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
7
7
|
from xcode_mcp_server.config_manager import apply_config
|
|
8
8
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
9
9
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
@@ -11,7 +11,7 @@ from xcode_mcp_server.utils.applescript import escape_applescript_string, run_ap
|
|
|
11
11
|
from xcode_mcp_server.utils.xcresult import extract_build_errors_and_warnings
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
@mcp.tool()
|
|
14
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
15
15
|
@apply_config
|
|
16
16
|
def get_build_errors(project_path: str,
|
|
17
17
|
include_warnings: Optional[bool] = None,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_build_results.py
RENAMED
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import json
|
|
6
6
|
from typing import Optional
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
11
11
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -15,7 +15,7 @@ from xcode_mcp_server.utils.build_log_parser import (
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
@mcp.tool()
|
|
18
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
19
19
|
@apply_config
|
|
20
20
|
def get_build_results(project_path: str,
|
|
21
21
|
max_warnings: int = 50) -> str:
|
|
@@ -6,14 +6,14 @@ import re
|
|
|
6
6
|
import datetime
|
|
7
7
|
from typing import Optional
|
|
8
8
|
|
|
9
|
-
from xcode_mcp_server.server import mcp
|
|
9
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
10
10
|
from xcode_mcp_server.config_manager import apply_config
|
|
11
11
|
from xcode_mcp_server.security import validate_and_normalize_directory_path
|
|
12
12
|
from xcode_mcp_server.exceptions import AccessDeniedError, InvalidParameterError, XCodeMCPError
|
|
13
13
|
from xcode_mcp_server.utils.applescript import show_error_notification
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@mcp.tool()
|
|
16
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
17
17
|
@apply_config
|
|
18
18
|
def get_directory_listing(directory_path: str,
|
|
19
19
|
regex_filter: Optional[str] = None,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_directory_tree.py
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import os
|
|
5
5
|
from typing import List
|
|
6
6
|
|
|
7
|
-
from xcode_mcp_server.server import mcp
|
|
7
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
8
8
|
from xcode_mcp_server.config_manager import apply_config
|
|
9
9
|
from xcode_mcp_server.security import validate_and_normalize_directory_path
|
|
10
10
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
@@ -32,7 +32,7 @@ SKIP_DIR_NAMES = frozenset([
|
|
|
32
32
|
MAX_TREE_LINES = 5000
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
@mcp.tool()
|
|
35
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
36
36
|
@apply_config
|
|
37
37
|
def get_directory_tree(directory_path: str, max_depth: int = 4) -> str:
|
|
38
38
|
"""
|
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import json
|
|
6
6
|
import sys
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
11
11
|
from xcode_mcp_server.utils.applescript import (
|
|
@@ -18,7 +18,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
18
18
|
from xcode_mcp_server.utils.xcresult import find_xcresult_bundle, extract_test_results_from_xcresult
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
@mcp.tool()
|
|
21
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
22
22
|
@apply_config
|
|
23
23
|
def get_latest_test_results(project_path: str) -> str:
|
|
24
24
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_project_schemes.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""get_project_schemes tool - Get available build schemes"""
|
|
3
3
|
|
|
4
|
-
from xcode_mcp_server.server import mcp
|
|
4
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
5
5
|
from xcode_mcp_server.config_manager import apply_config
|
|
6
6
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
7
7
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -14,7 +14,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
@mcp.tool()
|
|
17
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
18
18
|
@apply_config
|
|
19
19
|
def get_project_schemes(project_path: str) -> str:
|
|
20
20
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_runtime_output.py
RENAMED
|
@@ -5,7 +5,7 @@ import sys
|
|
|
5
5
|
import json
|
|
6
6
|
from typing import Optional
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
11
11
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
@@ -13,7 +13,7 @@ from xcode_mcp_server.utils.xcresult import find_xcresult_for_project, extract_c
|
|
|
13
13
|
from xcode_mcp_server.utils.applescript import show_error_notification, show_warning_notification, show_result_notification
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@mcp.tool()
|
|
16
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
17
17
|
@apply_config
|
|
18
18
|
def get_runtime_output(project_path: str,
|
|
19
19
|
regex_filter: Optional[str] = None,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/get_xcode_projects.py
RENAMED
|
@@ -6,7 +6,7 @@ import sys
|
|
|
6
6
|
import subprocess
|
|
7
7
|
import re
|
|
8
8
|
|
|
9
|
-
from xcode_mcp_server.server import mcp
|
|
9
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
10
10
|
from xcode_mcp_server.config_manager import apply_config
|
|
11
11
|
from xcode_mcp_server.security import ALLOWED_FOLDERS, is_path_allowed
|
|
12
12
|
from xcode_mcp_server.exceptions import AccessDeniedError, InvalidParameterError
|
|
@@ -179,7 +179,7 @@ def _filter_project_results(paths: list[str], search_paths: list[str] = None, ma
|
|
|
179
179
|
return final_results
|
|
180
180
|
|
|
181
181
|
|
|
182
|
-
@mcp.tool()
|
|
182
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
183
183
|
@apply_config
|
|
184
184
|
def get_xcode_projects(
|
|
185
185
|
search_path: str = "",
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
import subprocess
|
|
5
5
|
|
|
6
|
-
from xcode_mcp_server.server import mcp
|
|
6
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
7
7
|
from xcode_mcp_server.config_manager import apply_config
|
|
8
8
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
9
9
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
10
10
|
from xcode_mcp_server.utils.screenshot import _get_booted_simulators
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
@mcp.tool()
|
|
13
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
14
14
|
@apply_config
|
|
15
15
|
def list_booted_simulators() -> str:
|
|
16
16
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_mac_app_windows.py
RENAMED
|
@@ -5,13 +5,13 @@ import os
|
|
|
5
5
|
import tempfile
|
|
6
6
|
import subprocess
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
11
11
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
@mcp.tool()
|
|
14
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
15
15
|
@apply_config
|
|
16
16
|
def list_mac_app_windows() -> str:
|
|
17
17
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/list_project_tests.py
RENAMED
|
@@ -6,14 +6,14 @@ import re
|
|
|
6
6
|
import subprocess
|
|
7
7
|
import sys
|
|
8
8
|
|
|
9
|
-
from xcode_mcp_server.server import mcp
|
|
9
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
10
10
|
from xcode_mcp_server.config_manager import apply_config
|
|
11
11
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
12
12
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
13
13
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@mcp.tool()
|
|
16
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
17
17
|
@apply_config
|
|
18
18
|
def list_project_tests(project_path: str) -> str:
|
|
19
19
|
"""
|
|
@@ -8,7 +8,7 @@ import subprocess
|
|
|
8
8
|
import sys
|
|
9
9
|
from typing import Optional
|
|
10
10
|
|
|
11
|
-
from xcode_mcp_server.server import mcp
|
|
11
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
12
12
|
from xcode_mcp_server.config_manager import apply_config
|
|
13
13
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
14
14
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -73,7 +73,7 @@ def _parse_destination_line(line: str) -> Optional[dict]:
|
|
|
73
73
|
return result
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
@mcp.tool()
|
|
76
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
77
77
|
@apply_config
|
|
78
78
|
def list_run_destinations(
|
|
79
79
|
project_path: str,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""list_running_mac_apps tool - List running macOS applications"""
|
|
3
3
|
|
|
4
|
-
from xcode_mcp_server.server import mcp
|
|
4
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
5
5
|
from xcode_mcp_server.config_manager import apply_config
|
|
6
6
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
7
7
|
from xcode_mcp_server.utils.applescript import show_notification, run_applescript, show_result_notification, show_error_notification
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
@mcp.tool()
|
|
10
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
11
11
|
@apply_config
|
|
12
12
|
def list_running_mac_apps() -> str:
|
|
13
13
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/run_project_tests.py
RENAMED
|
@@ -7,7 +7,7 @@ import time
|
|
|
7
7
|
import json
|
|
8
8
|
from typing import Optional, List
|
|
9
9
|
|
|
10
|
-
from xcode_mcp_server.server import mcp
|
|
10
|
+
from xcode_mcp_server.server import mcp, TOOL_BUILD
|
|
11
11
|
from xcode_mcp_server.config_manager import apply_config
|
|
12
12
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
13
13
|
from xcode_mcp_server.exceptions import InvalidParameterError
|
|
@@ -149,7 +149,7 @@ from xcode_mcp_server.utils.xcresult import find_xcresult_bundle, extract_test_r
|
|
|
149
149
|
# return f"⏳ Tests did not complete within {max_wait_seconds} seconds"
|
|
150
150
|
|
|
151
151
|
|
|
152
|
-
@mcp.tool()
|
|
152
|
+
@mcp.tool(annotations=TOOL_BUILD)
|
|
153
153
|
@apply_config
|
|
154
154
|
def run_project_tests(project_path: str,
|
|
155
155
|
scheme: Optional[str] = None) -> str:
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import os
|
|
5
5
|
from typing import Optional
|
|
6
6
|
|
|
7
|
-
from xcode_mcp_server.server import mcp
|
|
7
|
+
from xcode_mcp_server.server import mcp, TOOL_BUILD
|
|
8
8
|
from xcode_mcp_server.config_manager import apply_config
|
|
9
9
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
10
10
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -17,7 +17,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
@mcp.tool()
|
|
20
|
+
@mcp.tool(annotations=TOOL_BUILD)
|
|
21
21
|
@apply_config
|
|
22
22
|
def run_project_unmonitored(project_path: str,
|
|
23
23
|
scheme: Optional[str] = None) -> str:
|
|
@@ -7,7 +7,7 @@ import time
|
|
|
7
7
|
import datetime
|
|
8
8
|
from typing import Optional
|
|
9
9
|
|
|
10
|
-
from xcode_mcp_server.server import mcp
|
|
10
|
+
from xcode_mcp_server.server import mcp, TOOL_BUILD
|
|
11
11
|
from xcode_mcp_server.config_manager import apply_config
|
|
12
12
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
13
13
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -27,7 +27,7 @@ from xcode_mcp_server.utils.xcresult import (
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
@mcp.tool()
|
|
30
|
+
@mcp.tool(annotations=TOOL_BUILD)
|
|
31
31
|
@apply_config
|
|
32
32
|
def run_project_until_terminated(project_path: str,
|
|
33
33
|
scheme: Optional[str] = None,
|
|
@@ -7,7 +7,7 @@ import time
|
|
|
7
7
|
import datetime
|
|
8
8
|
from typing import Optional
|
|
9
9
|
|
|
10
|
-
from xcode_mcp_server.server import mcp
|
|
10
|
+
from xcode_mcp_server.server import mcp, TOOL_BUILD
|
|
11
11
|
from xcode_mcp_server.config_manager import apply_config
|
|
12
12
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
13
13
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -36,7 +36,7 @@ MAX_INTERACTIVE_RUN_SECONDS = 3600
|
|
|
36
36
|
LAUNCH_SETTLE_TIMEOUT = 10
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
@mcp.tool()
|
|
39
|
+
@mcp.tool(annotations=TOOL_BUILD)
|
|
40
40
|
@apply_config
|
|
41
41
|
def run_project_with_user_interaction(project_path: str,
|
|
42
42
|
scheme: Optional[str] = None,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/set_run_destination.py
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import json
|
|
5
5
|
import os
|
|
6
6
|
|
|
7
|
-
from xcode_mcp_server.server import mcp
|
|
7
|
+
from xcode_mcp_server.server import mcp, TOOL_MUTATING_IDEMPOTENT
|
|
8
8
|
from xcode_mcp_server.config_manager import apply_config
|
|
9
9
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
10
10
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
@@ -18,7 +18,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
@mcp.tool()
|
|
21
|
+
@mcp.tool(annotations=TOOL_MUTATING_IDEMPOTENT)
|
|
22
22
|
@apply_config
|
|
23
23
|
def set_run_destination(
|
|
24
24
|
project_path: str,
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/stop_project.py
RENAMED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
import os
|
|
5
5
|
|
|
6
|
-
from xcode_mcp_server.server import mcp
|
|
6
|
+
from xcode_mcp_server.server import mcp, TOOL_MUTATING_IDEMPOTENT
|
|
7
7
|
from xcode_mcp_server.config_manager import apply_config
|
|
8
8
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
9
9
|
from xcode_mcp_server.exceptions import InvalidParameterError, XCodeMCPError
|
|
10
10
|
from xcode_mcp_server.utils.applescript import escape_applescript_string, run_applescript, show_result_notification, show_error_notification
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
@mcp.tool()
|
|
13
|
+
@mcp.tool(annotations=TOOL_MUTATING_IDEMPOTENT)
|
|
14
14
|
@apply_config
|
|
15
15
|
def stop_project(project_path: str) -> str:
|
|
16
16
|
"""
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/tools/take_app_screenshot.py
RENAMED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
import os
|
|
5
5
|
import subprocess
|
|
6
6
|
|
|
7
|
-
from xcode_mcp_server.server import mcp
|
|
7
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
8
8
|
from xcode_mcp_server.config_manager import apply_config
|
|
9
9
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
10
10
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
11
11
|
from xcode_mcp_server.utils.screenshot import _get_all_windows, get_screenshot_path
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
@mcp.tool()
|
|
14
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
15
15
|
@apply_config
|
|
16
16
|
def take_app_screenshot(app_name: str) -> str:
|
|
17
17
|
"""
|
|
@@ -6,14 +6,14 @@ import sys
|
|
|
6
6
|
import subprocess
|
|
7
7
|
from typing import Optional
|
|
8
8
|
|
|
9
|
-
from xcode_mcp_server.server import mcp
|
|
9
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
10
10
|
from xcode_mcp_server.config_manager import apply_config
|
|
11
11
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
12
12
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
13
13
|
from xcode_mcp_server.utils.screenshot import _get_booted_simulators, get_screenshot_path
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@mcp.tool()
|
|
16
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
17
17
|
@apply_config
|
|
18
18
|
def take_simulator_screenshot(udid: Optional[str] = None) -> str:
|
|
19
19
|
"""
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
import os
|
|
5
5
|
import subprocess
|
|
6
6
|
|
|
7
|
-
from xcode_mcp_server.server import mcp
|
|
7
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
8
8
|
from xcode_mcp_server.config_manager import apply_config
|
|
9
9
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
10
10
|
from xcode_mcp_server.utils.applescript import show_result_notification, show_error_notification
|
|
11
11
|
from xcode_mcp_server.utils.screenshot import _get_all_windows, get_screenshot_path
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
@mcp.tool()
|
|
14
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
15
15
|
@apply_config
|
|
16
16
|
def take_window_screenshot(window_id_or_name: str) -> str:
|
|
17
17
|
"""
|
|
@@ -5,7 +5,7 @@ import os
|
|
|
5
5
|
import sys
|
|
6
6
|
import subprocess
|
|
7
7
|
|
|
8
|
-
from xcode_mcp_server.server import mcp
|
|
8
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
9
9
|
from xcode_mcp_server.config_manager import apply_config
|
|
10
10
|
from xcode_mcp_server.security import validate_and_normalize_project_path
|
|
11
11
|
from xcode_mcp_server.exceptions import XCodeMCPError
|
|
@@ -18,7 +18,7 @@ from xcode_mcp_server.utils.applescript import (
|
|
|
18
18
|
from xcode_mcp_server.utils.screenshot import get_screenshot_path
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
@mcp.tool()
|
|
21
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
22
22
|
@apply_config
|
|
23
23
|
def take_xcode_screenshot(project_path: str) -> str:
|
|
24
24
|
"""
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"""version tool - Get server version"""
|
|
3
3
|
|
|
4
4
|
from xcode_mcp_server import __version__
|
|
5
|
-
from xcode_mcp_server.server import mcp
|
|
5
|
+
from xcode_mcp_server.server import mcp, TOOL_READONLY
|
|
6
6
|
from xcode_mcp_server.config_manager import apply_config
|
|
7
7
|
from xcode_mcp_server.utils.applescript import show_result_notification
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
@mcp.tool()
|
|
10
|
+
@mcp.tool(annotations=TOOL_READONLY)
|
|
11
11
|
@apply_config
|
|
12
12
|
def version() -> str:
|
|
13
13
|
"""
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""FastMCP server instance for Xcode MCP Server"""
|
|
3
|
-
|
|
4
|
-
from mcp.server.fastmcp import FastMCP
|
|
5
|
-
|
|
6
|
-
# Initialize the MCP server
|
|
7
|
-
mcp = FastMCP("Xcode MCP Server",
|
|
8
|
-
instructions="""
|
|
9
|
-
This server provides access to the Xcode IDE. For any project intended
|
|
10
|
-
for Apple platforms, such as iOS or macOS, this MCP server is the best
|
|
11
|
-
way to build or run .xcodeproj or .xcworkspace Xcode projects, and should
|
|
12
|
-
ALWAYS be preferred over using `xcodebuild`, `swift build`, or
|
|
13
|
-
`swift package build`. Building with this tool ensures the build happens
|
|
14
|
-
exactly the same way as when the user builds with Xcode, with all the same
|
|
15
|
-
settings, so you will get the same results the user sees. The user can also
|
|
16
|
-
see any results immediately and a subsequent build and run by the user will
|
|
17
|
-
happen almost instantly for the user.
|
|
18
|
-
|
|
19
|
-
Call `get_xcode_projects` to find Xcode project (.xcodeproj) and
|
|
20
|
-
Xcode workspace (.xcworkspace) folders under a given root folder.
|
|
21
|
-
|
|
22
|
-
Call `get_project_schemes` to get the build scheme names for a given
|
|
23
|
-
.xcodeproj or .xcworkspace.
|
|
24
|
-
|
|
25
|
-
Call `build_project` to build the project and get back the first 25 lines of
|
|
26
|
-
error (and/or potentially warning) output. `build_project` will default to the
|
|
27
|
-
active scheme if none is provided.
|
|
28
|
-
"""
|
|
29
|
-
)
|
|
File without changes
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/.github/workflows/claude-self-review.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/build_log_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xcode_mcp_server-1.3.11b4 → xcode_mcp_server-1.3.12}/xcode_mcp_server/utils/project_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|