Skip to main content
Glama

PyGithub MCP Server

by AstroMined
test_results.json207 kB
{ "created": 1741842728.012423, "duration": 552.9440371990204, "exitcode": 0, "root": "/code/python-mcp-servers/pygithub-mcp-server", "environment": {}, "summary": { "total": 21, "collected": 21 }, "tests": [ { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_get_repository_not_found", "lineno": 26, "outcome": "passed", "keywords": [ "test_get_repository_not_found", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0029476999770849943, "outcome": "passed" }, "call": { "duration": 0.10285185812972486, "outcome": "passed", "stdout": "DEBUG: Executing get_nonexistent_repo (attempt 1/3)\n", "stderr": "2025-03-13 01:11:55,769 - pygithub_mcp_server.client.client - ERROR - GitHub exception when getting repo AstroMined/nonexistent-repo-8eff98c8: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}\n2025-03-13 01:11:55,770 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}\n2025-03-13 01:11:55,770 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:11:55,771 - pygithub_mcp_server.tools.repositories.tools - ERROR - GitHub error: Repository not found\n", "log": [ { "name": "pygithub_mcp_server.client.client", "msg": "GitHub exception when getting repo AstroMined/nonexistent-repo-8eff98c8: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/client/client.py", "filename": "client.py", "module": "client", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 144, "funcName": "get_repo", "created": 1741842715.769357, "msecs": 769.0, "relativeCreated": 1773.3557224273682, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842715.770203, "msecs": 770.0, "relativeCreated": 1774.2018699645996, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842715.7706113, "msecs": 770.0, "relativeCreated": 1774.6100425720215, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" }, { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "GitHub error: Repository not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 63, "funcName": "get_repository", "created": 1741842715.7710352, "msecs": 771.0, "relativeCreated": 1775.033950805664, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" } ] }, "teardown": { "duration": 0.0006820429116487503, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_create_or_update_file_validation_error", "lineno": 49, "outcome": "passed", "keywords": [ "test_create_or_update_file_validation_error", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0008542020805180073, "outcome": "passed" }, "call": { "duration": 0.0013529949355870485, "outcome": "passed", "stdout": "DEBUG: Executing create_file_with_missing_params (attempt 1/3)\n", "stderr": "2025-03-13 01:11:55,775 - pygithub_mcp_server.tools.repositories.tools - ERROR - Validation error: 3 validation errors for CreateOrUpdateFileParams\ncontent\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nmessage\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\n", "log": [ { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "Validation error: 3 validation errors for CreateOrUpdateFileParams\ncontent\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nmessage\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined', '... 'path': 'test-file.md'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 298, "funcName": "create_or_update_file", "created": 1741842715.7754612, "msecs": 775.0, "relativeCreated": 1779.4599533081055, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" } ] }, "teardown": { "duration": 0.0004848400130867958, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_list_commits_validation_error", "lineno": 70, "outcome": "passed", "keywords": [ "test_list_commits_validation_error", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000595135847106576, "outcome": "passed" }, "call": { "duration": 0.0013088530395179987, "outcome": "passed", "stdout": "DEBUG: Executing list_commits_with_missing_params (attempt 1/3)\n", "stderr": "2025-03-13 01:11:55,779 - pygithub_mcp_server.tools.repositories.tools - ERROR - Validation error: 2 validation errors for ListCommitsParams\nowner\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nrepo\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\n", "log": [ { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "Validation error: 2 validation errors for ListCommitsParams\nowner\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nrepo\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 444, "funcName": "list_commits", "created": 1741842715.7792833, "msecs": 779.0, "relativeCreated": 1783.2820415496826, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" } ] }, "teardown": { "duration": 0.0004770269151777029, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_push_files_validation_error", "lineno": 88, "outcome": "passed", "keywords": [ "test_push_files_validation_error", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006478058639913797, "outcome": "passed" }, "call": { "duration": 0.0013197169173508883, "outcome": "passed", "stdout": "DEBUG: Executing push_files_with_missing_params (attempt 1/3)\n", "stderr": "2025-03-13 01:11:55,783 - pygithub_mcp_server.tools.repositories.tools - ERROR - Validation error: 3 validation errors for PushFilesParams\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nfiles\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nmessage\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\n", "log": [ { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "Validation error: 3 validation errors for PushFilesParams\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nfiles\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nmessage\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 347, "funcName": "push_files", "created": 1741842715.7831173, "msecs": 783.0, "relativeCreated": 1787.1160507202148, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" } ] }, "teardown": { "duration": 0.0004915620665997267, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_create_branch_validation_error", "lineno": 108, "outcome": "passed", "keywords": [ "test_create_branch_validation_error", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006691659800708294, "outcome": "passed" }, "call": { "duration": 0.0013219569809734821, "outcome": "passed", "stdout": "DEBUG: Executing create_branch_with_missing_params (attempt 1/3)\n", "stderr": "2025-03-13 01:11:55,786 - pygithub_mcp_server.tools.repositories.tools - ERROR - Validation error: 2 validation errors for CreateBranchParams\nrepo\n Field required [type=missing, input_value={'owner': 'AstroMined'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\n", "log": [ { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "Validation error: 2 validation errors for CreateBranchParams\nrepo\n Field required [type=missing, input_value={'owner': 'AstroMined'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\nbranch\n Field required [type=missing, input_value={'owner': 'AstroMined'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 395, "funcName": "create_branch", "created": 1741842715.7869537, "msecs": 786.0, "relativeCreated": 1790.952444076538, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:55" } ] }, "teardown": { "duration": 0.0004809179808944464, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_create_or_update_file_missing_sha", "lineno": 128, "outcome": "passed", "keywords": [ "test_create_or_update_file_missing_sha", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007992410100996494, "outcome": "passed" }, "call": { "duration": 2.179833041038364, "outcome": "passed", "stdout": "DEBUG: Executing create_initial_file (attempt 1/3)\nDEBUG: Executing update_without_sha (attempt 1/3)\n", "stderr": "2025-03-13 01:11:57,967 - pygithub_mcp_server.operations.repositories - ERROR - GitHub exception when creating/updating file: Invalid request.\n\n\"sha\" wasn't supplied.: 422 {\"message\": \"Invalid request.\\n\\n\\\"sha\\\" wasn't supplied.\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#create-or-update-file-contents\", \"status\": \"422\"}\n2025-03-13 01:11:57,968 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=422, data={'message': 'Invalid request.\\n\\n\"sha\" wasn\\'t supplied.', 'documentation_url': 'https://docs.github.com/rest/repos/contents#create-or-update-file-contents', 'status': '422'}\n2025-03-13 01:11:57,969 - pygithub_mcp_server.errors.handlers - ERROR - Validation error\n2025-03-13 01:11:57,969 - pygithub_mcp_server.tools.repositories.tools - ERROR - GitHub error: Invalid request.\n\n\"sha\" wasn't supplied.\n", "log": [ { "name": "pygithub_mcp_server.operations.repositories", "msg": "GitHub exception when creating/updating file: Invalid request.\n\n\"sha\" wasn't supplied.: 422 {\"message\": \"Invalid request.\\n\\n\\\"sha\\\" wasn't supplied.\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#create-or-update-file-contents\", \"status\": \"422\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/repositories.py", "filename": "repositories.py", "module": "repositories", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 294, "funcName": "create_or_update_file", "created": 1741842717.967884, "msecs": 967.0, "relativeCreated": 3971.8828201293945, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:57" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=422, data={'message': 'Invalid request.\\n\\n\"sha\" wasn\\'t supplied.', 'documentation_url': 'https://docs.github.com/rest/repos/contents#create-or-update-file-contents', 'status': '422'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842717.9687064, "msecs": 968.0, "relativeCreated": 3972.705125808716, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:57" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Validation error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 138, "funcName": "handle_github_exception", "created": 1741842717.9691317, "msecs": 969.0, "relativeCreated": 3973.130464553833, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:57" }, { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "GitHub error: Invalid request.\n\n\"sha\" wasn't supplied.", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 304, "funcName": "create_or_update_file", "created": 1741842717.9695125, "msecs": 969.0, "relativeCreated": 3973.511219024658, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:57" } ] }, "teardown": { "duration": 0.0005995579995214939, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_create_branch_already_exists", "lineno": 175, "outcome": "passed", "keywords": [ "test_create_branch_already_exists", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007292269729077816, "outcome": "passed" }, "call": { "duration": 1.274398994166404, "outcome": "passed", "stdout": "DEBUG: Executing create_existing_branch (attempt 1/3)\n", "stderr": "2025-03-13 01:11:59,245 - pygithub_mcp_server.operations.repositories - ERROR - GitHub exception when creating branch: Reference already exists: 422 {\"message\": \"Reference already exists\", \"documentation_url\": \"https://docs.github.com/rest/git/refs#create-a-reference\", \"status\": \"422\"}\n2025-03-13 01:11:59,246 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=422, data={'message': 'Reference already exists', 'documentation_url': 'https://docs.github.com/rest/git/refs#create-a-reference', 'status': '422'}\n2025-03-13 01:11:59,246 - pygithub_mcp_server.errors.handlers - ERROR - Validation error\n2025-03-13 01:11:59,246 - pygithub_mcp_server.tools.repositories.tools - ERROR - GitHub error: Reference already exists\n", "log": [ { "name": "pygithub_mcp_server.operations.repositories", "msg": "GitHub exception when creating branch: Reference already exists: 422 {\"message\": \"Reference already exists\", \"documentation_url\": \"https://docs.github.com/rest/git/refs#create-a-reference\", \"status\": \"422\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/repositories.py", "filename": "repositories.py", "module": "repositories", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 420, "funcName": "create_branch", "created": 1741842719.2452905, "msecs": 245.0, "relativeCreated": 5249.289274215698, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:59" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=422, data={'message': 'Reference already exists', 'documentation_url': 'https://docs.github.com/rest/git/refs#create-a-reference', 'status': '422'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842719.2460964, "msecs": 246.0, "relativeCreated": 5250.0951290130615, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:59" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Validation error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 138, "funcName": "handle_github_exception", "created": 1741842719.2465067, "msecs": 246.0, "relativeCreated": 5250.505447387695, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:59" }, { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "GitHub error: Reference already exists", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 401, "funcName": "create_branch", "created": 1741842719.2468832, "msecs": 246.0, "relativeCreated": 5250.881910324097, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:11:59" } ] }, "teardown": { "duration": 0.0005552361253648996, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_get_file_contents_not_found", "lineno": 198, "outcome": "passed", "keywords": [ "test_get_file_contents_not_found", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007299508433789015, "outcome": "passed" }, "call": { "duration": 0.7657069049309939, "outcome": "passed", "stdout": "DEBUG: Executing get_nonexistent_file (attempt 1/3)\n", "stderr": "2025-03-13 01:12:00,013 - pygithub_mcp_server.operations.repositories - ERROR - GitHub exception when getting file contents: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#get-repository-content\", \"status\": \"404\"}\n2025-03-13 01:12:00,014 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/contents#get-repository-content', 'status': '404'}\n2025-03-13 01:12:00,014 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:12:00,015 - pygithub_mcp_server.tools.repositories.tools - ERROR - GitHub error: Content File not found\n", "log": [ { "name": "pygithub_mcp_server.operations.repositories", "msg": "GitHub exception when getting file contents: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#get-repository-content\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/repositories.py", "filename": "repositories.py", "module": "repositories", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 194, "funcName": "get_file_contents", "created": 1741842720.0131261, "msecs": 13.0, "relativeCreated": 6017.124891281128, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/contents#get-repository-content', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842720.0142252, "msecs": 14.0, "relativeCreated": 6018.224000930786, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842720.0146804, "msecs": 14.0, "relativeCreated": 6018.679141998291, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "GitHub error: Content File not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "get_file_contents", "created": 1741842720.015143, "msecs": 15.0, "relativeCreated": 6019.141674041748, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" } ] }, "teardown": { "duration": 0.0006081080064177513, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_update_existing_file_missing_sha", "lineno": 222, "outcome": "passed", "keywords": [ "test_update_existing_file_missing_sha", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000780800124630332, "outcome": "passed" }, "call": { "duration": 0.8001929891761392, "outcome": "passed", "stdout": "DEBUG: Executing update_readme_without_sha (attempt 1/3)\n", "stderr": "2025-03-13 01:12:00,817 - pygithub_mcp_server.operations.repositories - ERROR - GitHub exception when creating/updating file: Invalid request.\n\n\"sha\" wasn't supplied.: 422 {\"message\": \"Invalid request.\\n\\n\\\"sha\\\" wasn't supplied.\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#create-or-update-file-contents\", \"status\": \"422\"}\n2025-03-13 01:12:00,818 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=422, data={'message': 'Invalid request.\\n\\n\"sha\" wasn\\'t supplied.', 'documentation_url': 'https://docs.github.com/rest/repos/contents#create-or-update-file-contents', 'status': '422'}\n2025-03-13 01:12:00,818 - pygithub_mcp_server.errors.handlers - ERROR - Validation error\n2025-03-13 01:12:00,818 - pygithub_mcp_server.tools.repositories.tools - ERROR - GitHub error: Invalid request.\n\n\"sha\" wasn't supplied.\n", "log": [ { "name": "pygithub_mcp_server.operations.repositories", "msg": "GitHub exception when creating/updating file: Invalid request.\n\n\"sha\" wasn't supplied.: 422 {\"message\": \"Invalid request.\\n\\n\\\"sha\\\" wasn't supplied.\", \"documentation_url\": \"https://docs.github.com/rest/repos/contents#create-or-update-file-contents\", \"status\": \"422\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/repositories.py", "filename": "repositories.py", "module": "repositories", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 294, "funcName": "create_or_update_file", "created": 1741842720.817304, "msecs": 817.0, "relativeCreated": 6821.302652359009, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=422, data={'message': 'Invalid request.\\n\\n\"sha\" wasn\\'t supplied.', 'documentation_url': 'https://docs.github.com/rest/repos/contents#create-or-update-file-contents', 'status': '422'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842720.8181543, "msecs": 818.0, "relativeCreated": 6822.153091430664, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Validation error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 138, "funcName": "handle_github_exception", "created": 1741842720.8185675, "msecs": 818.0, "relativeCreated": 6822.566270828247, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" }, { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "GitHub error: Invalid request.\n\n\"sha\" wasn't supplied.", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 304, "funcName": "create_or_update_file", "created": 1741842720.8189743, "msecs": 818.0, "relativeCreated": 6822.973012924194, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" } ] }, "teardown": { "duration": 0.000562841072678566, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_errors.py::test_search_repositories_invalid_query", "lineno": 254, "outcome": "passed", "keywords": [ "test_search_repositories_invalid_query", "integration", "pytestmark", "test_repositories_tools_errors.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006922618485987186, "outcome": "passed" }, "call": { "duration": 0.0014338500332087278, "outcome": "passed", "stdout": "DEBUG: Executing search_with_empty_query (attempt 1/3)\n", "stderr": "2025-03-13 01:12:00,823 - pygithub_mcp_server.tools.repositories.tools - ERROR - Validation error: 1 validation error for SearchRepositoriesParams\nquery\n Value error, query cannot be empty [type=value_error, input_value='', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error\n", "log": [ { "name": "pygithub_mcp_server.tools.repositories.tools", "msg": "Validation error: 1 validation error for SearchRepositoriesParams\nquery\n Value error, query cannot be empty [type=value_error, input_value='', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/repositories/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 199, "funcName": "search_repositories", "created": 1741842720.8233352, "msecs": 823.0, "relativeCreated": 6827.333927154541, "thread": 131193143324672, "threadName": "MainThread", "processName": "MainProcess", "process": 1502938, "asctime": "2025-03-13 01:12:00" } ] }, "teardown": { "duration": 0.0004960000514984131, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_integration.py::test_search_repositories_empty_results", "lineno": 19, "outcome": "passed", "keywords": [ "test_search_repositories_empty_results", "integration", "pytestmark", "test_repositories_tools_integration.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000648832879960537, "outcome": "passed" }, "call": { "duration": 0.4027780669275671, "outcome": "passed", "stdout": "DEBUG: Executing search_repos (attempt 1/3)\n" }, "teardown": { "duration": 0.0005622650496661663, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_integration.py::test_get_repository_integration", "lineno": 45, "outcome": "passed", "keywords": [ "test_get_repository_integration", "integration", "pytestmark", "test_repositories_tools_integration.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000731725012883544, "outcome": "passed" }, "call": { "duration": 0.39374634297564626, "outcome": "passed", "stdout": "DEBUG: Executing get_repo (attempt 1/3)\n" }, "teardown": { "duration": 0.0005418891087174416, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_integration.py::test_list_commits_integration", "lineno": 70, "outcome": "passed", "keywords": [ "test_list_commits_integration", "integration", "pytestmark", "test_repositories_tools_integration.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007278320845216513, "outcome": "passed" }, "call": { "duration": 1.4340846529230475, "outcome": "passed", "stdout": "DEBUG: Executing get_commits (attempt 1/3)\n" }, "teardown": { "duration": 0.0005505660083144903, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_integration.py::test_get_file_contents_integration", "lineno": 100, "outcome": "passed", "keywords": [ "test_get_file_contents_integration", "integration", "pytestmark", "test_repositories_tools_integration.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007233850192278624, "outcome": "passed" }, "call": { "duration": 0.7544494830071926, "outcome": "passed", "stdout": "DEBUG: Executing get_readme (attempt 1/3)\n" }, "teardown": { "duration": 0.0005694290157407522, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/repositories/test_repositories_tools_integration.py::test_search_repositories_integration", "lineno": 142, "outcome": "passed", "keywords": [ "test_search_repositories_integration", "integration", "pytestmark", "test_repositories_tools_integration.py", "repositories", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006728852167725563, "outcome": "passed" }, "call": { "duration": 1.7484753979369998, "outcome": "passed", "stdout": "DEBUG: Executing search_python_repos (attempt 1/3)\n" }, "teardown": { "duration": 0.0007389199454337358, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_handle_github_exception_not_found", "lineno": 24, "outcome": "passed", "keywords": [ "test_handle_github_exception_not_found", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0030339020304381847, "outcome": "passed" }, "call": { "duration": 0.09509788104332983, "outcome": "passed", "stdout": "DEBUG: Executing get_nonexistent_repo (attempt 1/3)\n", "stderr": "2025-03-13 00:59:23,402 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}\n2025-03-13 00:59:23,405 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741841963.4028108, "msecs": 402.0, "relativeCreated": 1626.8577575683594, "thread": 130403694346240, "threadName": "MainThread", "processName": "MainProcess", "process": 1496122, "asctime": "2025-03-13 00:59:23" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741841963.4057739, "msecs": 405.0, "relativeCreated": 1629.8208236694336, "thread": 130403694346240, "threadName": "MainThread", "processName": "MainProcess", "process": 1496122, "asctime": "2025-03-13 00:59:23" } ] }, "teardown": { "duration": 0.0006888830102980137, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_handle_github_exception_invalid_input", "lineno": 49, "outcome": "passed", "keywords": [ "test_handle_github_exception_invalid_input", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009342378471046686, "outcome": "passed" }, "call": { "duration": 0.8347742180339992, "outcome": "passed", "stdout": "DEBUG: Executing create_invalid_issue (attempt 1/3)\n", "stderr": "2025-03-13 00:59:24,243 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=422, data={'message': 'Validation Failed', 'errors': [{'resource': 'Issue', 'code': 'missing_field', 'field': 'title'}], 'documentation_url': 'https://docs.github.com/rest/issues/issues#create-an-issue', 'status': '422'}\n2025-03-13 00:59:24,243 - pygithub_mcp_server.errors.handlers - ERROR - Validation error\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=422, data={'message': 'Validation Failed', 'errors': [{'resource': 'Issue', 'code': 'missing_field', 'field': 'title'}], 'documentation_url': 'https://docs.github.com/rest/issues/issues#create-an-issue', 'status': '422'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741841964.2431145, "msecs": 243.0, "relativeCreated": 2467.1614170074463, "thread": 130403694346240, "threadName": "MainThread", "processName": "MainProcess", "process": 1496122, "asctime": "2025-03-13 00:59:24" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Validation error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 138, "funcName": "handle_github_exception", "created": 1741841964.243995, "msecs": 243.0, "relativeCreated": 2468.0418968200684, "thread": 130403694346240, "threadName": "MainThread", "processName": "MainProcess", "process": 1496122, "asctime": "2025-03-13 00:59:24" } ] }, "teardown": { "duration": 0.0005540510173887014, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_handle_github_exception_rate_limit", "lineno": 73, "outcome": "passed", "keywords": [ "test_handle_github_exception_rate_limit", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005383559036999941, "outcome": "passed" }, "call": { "duration": 0.0012649211566895247, "outcome": "passed", "stderr": "2025-03-13 00:59:24,247 - pygithub_mcp_server.errors.handlers - ERROR - Rate limit exceeded\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Rate limit exceeded", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 41, "funcName": "handle_github_exception", "created": 1741841964.2478063, "msecs": 247.0, "relativeCreated": 2471.853256225586, "thread": 130403694346240, "threadName": "MainThread", "processName": "MainProcess", "process": 1496122, "asctime": "2025-03-13 00:59:24" } ] }, "teardown": { "duration": 0.0004141661338508129, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_format_validation_error", "lineno": 92, "outcome": "passed", "keywords": [ "test_format_validation_error", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.00048059807159006596, "outcome": "passed" }, "call": { "duration": 0.0005134749226272106, "outcome": "passed" }, "teardown": { "duration": 0.0004097388591617346, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_format_validation_error_no_errors", "lineno": 124, "outcome": "passed", "keywords": [ "test_format_validation_error_no_errors", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.00047367485240101814, "outcome": "passed" }, "call": { "duration": 0.0004938109777867794, "outcome": "passed" }, "teardown": { "duration": 0.0004059630446135998, "outcome": "passed" } }, { "nodeid": "tests/integration/errors/test_handlers_integration.py::test_format_validation_error_no_data", "lineno": 140, "outcome": "passed", "keywords": [ "test_format_validation_error_no_data", "integration", "pytestmark", "test_handlers_integration.py", "errors", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.00047043594531714916, "outcome": "passed" }, "call": { "duration": 0.0004970158915966749, "outcome": "passed" }, "teardown": { "duration": 0.0009797338861972094, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_add_issue_comment", "lineno": 26, "outcome": "passed", "keywords": [ "test_add_issue_comment", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0033511240035295486, "outcome": "passed" }, "call": { "duration": 4.834121076157317, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.00081687793135643, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_list_issue_comments", "lineno": 82, "outcome": "passed", "keywords": [ "test_list_issue_comments", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010117299389094114, "outcome": "passed" }, "call": { "duration": 6.74647095403634, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005567269399762154, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_update_issue_comment", "lineno": 157, "outcome": "passed", "keywords": [ "test_update_issue_comment", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009513909462839365, "outcome": "passed" }, "call": { "duration": 8.680540577042848, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing update_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005748278927057981, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_delete_issue_comment", "lineno": 248, "outcome": "passed", "keywords": [ "test_delete_issue_comment", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009464460890740156, "outcome": "passed" }, "call": { "duration": 9.580906807910651, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments_before (attempt 1/3)\nDEBUG: Executing delete_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments_after (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005719868931919336, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_list_issue_comments_since", "lineno": 343, "outcome": "passed", "keywords": [ "test_list_issue_comments_since", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009388190228492022, "outcome": "passed" }, "call": { "duration": 8.147635878063738, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments_since (attempt 1/3)\nDEBUG: Executing list_test_comments_future (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005720190238207579, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_comments.py::test_comment_lifecycle", "lineno": 440, "outcome": "passed", "keywords": [ "test_comment_lifecycle", "integration", "pytestmark", "test_comments.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000955658033490181, "outcome": "passed" }, "call": { "duration": 13.965610877843574, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments (attempt 1/3)\nDEBUG: Executing update_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments_after_update (attempt 1/3)\nDEBUG: Executing delete_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments_after_delete (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005853939801454544, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_create.py::test_create_issue_required_params", "lineno": 12, "outcome": "passed", "keywords": [ "test_create_issue_required_params", "integration", "pytestmark", "test_create.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010017049498856068, "outcome": "passed" }, "call": { "duration": 1.3626285002101213, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005630669184029102, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_create.py::test_create_issue_all_params", "lineno": 47, "outcome": "passed", "keywords": [ "test_create_issue_all_params", "integration", "pytestmark", "test_create.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009532629046589136, "outcome": "passed" }, "call": { "duration": 1.8876228570006788, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005682590417563915, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_create.py::test_create_and_verify_issue", "lineno": 92, "outcome": "passed", "keywords": [ "test_create_and_verify_issue", "integration", "pytestmark", "test_create.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009038830175995827, "outcome": "passed" }, "call": { "duration": 2.6118532319087535, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing get_test_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0006026639603078365, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_labels.py::test_add_issue_labels", "lineno": 22, "outcome": "passed", "keywords": [ "test_add_issue_labels", "integration", "pytestmark", "test_labels.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009392839856445789, "outcome": "passed" }, "call": { "duration": 5.89565747207962, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_labels (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005888519808650017, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_labels.py::test_remove_issue_label", "lineno": 78, "outcome": "passed", "keywords": [ "test_remove_issue_label", "integration", "pytestmark", "test_labels.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009381289128214121, "outcome": "passed" }, "call": { "duration": 9.643840932054445, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing get_issue_with_labels (attempt 1/3)\nDEBUG: Executing remove_test_label (attempt 1/3)\nDEBUG: Executing get_issue_after_remove (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005934531800448895, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_labels.py::test_add_issue_labels_multiple_calls", "lineno": 161, "outcome": "passed", "keywords": [ "test_add_issue_labels_multiple_calls", "integration", "pytestmark", "test_labels.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009564647916704416, "outcome": "passed" }, "call": { "duration": 7.4644697098992765, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_first_label (attempt 1/3)\nDEBUG: Executing add_second_label (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0006103240884840488, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_labels.py::test_remove_nonexistent_label", "lineno": 231, "outcome": "passed", "keywords": [ "test_remove_nonexistent_label", "integration", "pytestmark", "test_labels.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009374378714710474, "outcome": "passed" }, "call": { "duration": 6.212499422952533, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing remove_nonexistent_label (attempt 1/3)\nDEBUG: Executing get_issue_after_remove (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n", "stderr": "2025-03-13 01:00:50,162 - pygithub_mcp_server.operations.issues - WARNING - Label 'nonexistent-test-20250313010047-37bfeb09' does not exist on issue #1699\n", "log": [ { "name": "pygithub_mcp_server.operations.issues", "msg": "Label 'nonexistent-test-20250313010047-37bfeb09' does not exist on issue #1699", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py", "filename": "issues.py", "module": "issues", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 398, "funcName": "remove_issue_label", "created": 1741842050.1623542, "msecs": 162.0, "relativeCreated": 85064.85390663147, "thread": 131971984748544, "threadName": "MainThread", "processName": "MainProcess", "process": 1496160, "asctime": "2025-03-13 01:00:50" } ] }, "teardown": { "duration": 0.0005824619438499212, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_labels.py::test_label_lifecycle", "lineno": 295, "outcome": "passed", "keywords": [ "test_label_lifecycle", "integration", "pytestmark", "test_labels.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009382059797644615, "outcome": "passed" }, "call": { "duration": 14.211573221022263, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing add_test_labels (attempt 1/3)\nDEBUG: Executing remove_bug_label (attempt 1/3)\nDEBUG: Executing get_issue_after_remove (attempt 1/3)\nDEBUG: Executing remove_enhancement_label (attempt 1/3)\nDEBUG: Executing get_issue_after_second_remove (attempt 1/3)\nDEBUG: Executing remove_documentation_label (attempt 1/3)\nDEBUG: Executing get_issue_after_all_removed (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005642930045723915, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_lifecycle.py::test_issue_lifecycle", "lineno": 35, "outcome": "passed", "keywords": [ "test_issue_lifecycle", "integration", "pytestmark", "test_lifecycle.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009332839399576187, "outcome": "passed" }, "call": { "duration": 18.093649561982602, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing get_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue (attempt 1/3)\nDEBUG: Executing add_test_comment (attempt 1/3)\nDEBUG: Executing list_test_comments (attempt 1/3)\nDEBUG: Executing update_test_comment (attempt 1/3)\nDEBUG: Executing add_test_labels (attempt 1/3)\nDEBUG: Executing remove_test_label (attempt 1/3)\nDEBUG: Executing close_test_issue (attempt 1/3)\nDEBUG: Executing ensure_closed (attempt 1/3)\n" }, "teardown": { "duration": 0.0006090390961617231, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_basic", "lineno": 20, "outcome": "passed", "keywords": [ "test_list_issues_basic", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009177320171147585, "outcome": "passed" }, "call": { "duration": 21.037693974096328, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing list_test_issues (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005986080504953861, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_state_filter", "lineno": 83, "outcome": "passed", "keywords": [ "test_list_issues_state_filter", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009480179287493229, "outcome": "passed" }, "call": { "duration": 59.47494810516946, "outcome": "passed", "stdout": "\n--- DEBUG: Starting test_list_issues_state_filter ---\nDEBUG: Creating open issue with title: Test Issue (Open) test-20250313010147-5921726e\nDEBUG: Executing create_open_issue (attempt 1/3)\nDEBUG: Open issue created successfully with number: 1703\nDEBUG: Open issue creation completed, issue number: 1703\nDEBUG: Creating closed issue with title: Test Issue (Closed) test-20250313010147-5921726e\nDEBUG: Executing create_closed_issue (attempt 1/3)\nDEBUG: Closed issue created, now closing it. Issue number: 1704\nDEBUG: Issue 1704 successfully closed\nDEBUG: Closed issue creation completed, issue number: 1704\nDEBUG: Listing open issues\nDEBUG: Executing list_open_issues (attempt 1/3)\nDEBUG: Retrieved 20 open issues\nDEBUG: Open issues listing completed\nDEBUG: Verifying open issue is in the list\nDEBUG: Open issue verification passed\nDEBUG: Verifying closed issue is NOT in the open issues list\nDEBUG: Closed issue verification passed (not in open issues)\nDEBUG: Listing closed issues\nDEBUG: Executing list_closed_issues (attempt 1/3)\nDEBUG: Retrieved 20 closed issues\nDEBUG: Closed issues listing completed\nDEBUG: Verifying closed issue is in the list\nDEBUG: Closed issue verification passed\nDEBUG: Verifying open issue is NOT in the closed issues list\nDEBUG: Open issue verification passed (not in closed issues)\nDEBUG: Listing all issues\nDEBUG: Executing list_all_issues (attempt 1/3)\nDEBUG: Retrieved 20 total issues\nDEBUG: All issues listing completed\nDEBUG: Verifying both issues are in the 'all issues' list\nDEBUG: Found closed issue 1704 in all issues list\nDEBUG: Found open issue 1703 in all issues list\nDEBUG: Both issues verification passed\nDEBUG: Starting cleanup\nDEBUG: Executing close_open_issue (attempt 1/3)\nDEBUG: Successfully closed open issue 1703 during cleanup\nDEBUG: Test completed\n" }, "teardown": { "duration": 0.0005634010303765535, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_pagination", "lineno": 278, "outcome": "passed", "keywords": [ "test_list_issues_pagination", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009159608744084835, "outcome": "passed" }, "call": { "duration": 14.406266538891941, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing list_test_issues_page1 (attempt 1/3)\nDEBUG: Executing list_test_issues_page2 (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005855499766767025, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_labels_filter", "lineno": 365, "outcome": "passed", "keywords": [ "test_list_issues_labels_filter", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009437790140509605, "outcome": "passed" }, "call": { "duration": 26.85988986189477, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing list_bug_issues (attempt 1/3)\nDEBUG: Executing list_test_label_issues (attempt 1/3)\nDEBUG: Executing list_nonexistent_label_issues (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005780558567494154, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_sort_and_direction", "lineno": 474, "outcome": "passed", "keywords": [ "test_list_issues_sort_and_direction", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009217360056936741, "outcome": "passed" }, "call": { "duration": 44.467183858156204, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue1 (attempt 1/3)\nDEBUG: Executing create_test_issue2 (attempt 1/3)\nDEBUG: Executing list_created_asc (attempt 1/3)\nDEBUG: Executing list_created_desc (attempt 1/3)\nDEBUG: Executing close_issues (attempt 1/3)\n" }, "teardown": { "duration": 0.0005605749320238829, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_list.py::test_list_issues_since", "lineno": 593, "outcome": "passed", "keywords": [ "test_list_issues_since", "integration", "pytestmark", "test_list.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009339689277112484, "outcome": "passed" }, "call": { "duration": 20.303674751892686, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing list_issues_since (attempt 1/3)\nDEBUG: Executing list_issues_future (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005766060203313828, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_state", "lineno": 38, "outcome": "passed", "keywords": [ "test_list_issues_invalid_state", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005518060643225908, "outcome": "passed" }, "call": { "duration": 0.001169036841019988, "outcome": "passed" }, "teardown": { "duration": 0.0004183200653642416, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_sort", "lineno": 50, "outcome": "passed", "keywords": [ "test_list_issues_invalid_sort", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000513408100232482, "outcome": "passed" }, "call": { "duration": 0.0006029440555721521, "outcome": "passed" }, "teardown": { "duration": 0.0004151130560785532, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_direction", "lineno": 62, "outcome": "passed", "keywords": [ "test_list_issues_invalid_direction", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005122011061757803, "outcome": "passed" }, "call": { "duration": 0.0006116388831287622, "outcome": "passed" }, "teardown": { "duration": 0.00040761101990938187, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_page", "lineno": 74, "outcome": "passed", "keywords": [ "test_list_issues_invalid_page", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005055451765656471, "outcome": "passed" }, "call": { "duration": 0.000672162976115942, "outcome": "passed" }, "teardown": { "duration": 0.0004127740394324064, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_per_page", "lineno": 96, "outcome": "passed", "keywords": [ "test_list_issues_invalid_per_page", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005039870738983154, "outcome": "passed" }, "call": { "duration": 0.0006927680224180222, "outcome": "passed" }, "teardown": { "duration": 0.00041359197348356247, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_labels", "lineno": 128, "outcome": "passed", "keywords": [ "test_list_issues_invalid_labels", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005054420325905085, "outcome": "passed" }, "call": { "duration": 0.0006626811809837818, "outcome": "passed" }, "teardown": { "duration": 0.00040472205728292465, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_invalid_since", "lineno": 150, "outcome": "passed", "keywords": [ "test_list_issues_invalid_since", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005116108804941177, "outcome": "passed" }, "call": { "duration": 0.0006066190544515848, "outcome": "passed" }, "teardown": { "duration": 0.000413679052144289, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_update_issue_with_no_changes", "lineno": 162, "outcome": "passed", "keywords": [ "test_update_issue_with_no_changes", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009192018769681454, "outcome": "passed" }, "call": { "duration": 4.941695082932711, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_with_no_changes (attempt 1/3)\n" }, "teardown": { "duration": 0.0005588489584624767, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_update_issue_invalid_milestone", "lineno": 201, "outcome": "passed", "keywords": [ "test_update_issue_invalid_milestone", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009425010066479445, "outcome": "passed" }, "call": { "duration": 4.860401596873999, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\n", "stderr": "2025-03-13 01:04:40,230 - pygithub_mcp_server.operations.issues - ERROR - Failed to get milestone 999999999: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/milestones#get-a-milestone\", \"status\": \"404\"}\n", "log": [ { "name": "pygithub_mcp_server.operations.issues", "msg": "Failed to get milestone 999999999: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/milestones#get-a-milestone\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py", "filename": "issues.py", "module": "issues", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 138, "funcName": "update_issue", "created": 1741842280.2307522, "msecs": 230.0, "relativeCreated": 315133.2519054413, "thread": 131971984748544, "threadName": "MainThread", "processName": "MainProcess", "process": 1496160, "asctime": "2025-03-13 01:04:40" } ] }, "teardown": { "duration": 0.0005990730132907629, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_create_issue_invalid_milestone", "lineno": 236, "outcome": "passed", "keywords": [ "test_create_issue_invalid_milestone", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007901769131422043, "outcome": "passed" }, "call": { "duration": 0.7769471039064229, "outcome": "passed", "stderr": "2025-03-13 01:04:43,369 - pygithub_mcp_server.operations.issues - ERROR - Failed to get milestone 999999999: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/milestones#get-a-milestone\", \"status\": \"404\"}\n", "log": [ { "name": "pygithub_mcp_server.operations.issues", "msg": "Failed to get milestone 999999999: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/milestones#get-a-milestone\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py", "filename": "issues.py", "module": "issues", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 67, "funcName": "create_issue", "created": 1741842283.369493, "msecs": 369.0, "relativeCreated": 318271.99268341064, "thread": 131971984748544, "threadName": "MainThread", "processName": "MainProcess", "process": 1496160, "asctime": "2025-03-13 01:04:43" } ] }, "teardown": { "duration": 0.0005399808287620544, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issue_comments_invalid_since", "lineno": 250, "outcome": "passed", "keywords": [ "test_list_issue_comments_invalid_since", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009454789105802774, "outcome": "passed" }, "call": { "duration": 3.7416174430400133, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005838940851390362, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_parameter_validation.py::TestIssueOperationsValidation::test_list_issues_timezone_handling", "lineno": 284, "outcome": "passed", "keywords": [ "test_list_issues_timezone_handling", "TestIssueOperationsValidation", "integration", "test_parameter_validation.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005481231492012739, "outcome": "passed" }, "call": { "duration": 44.30674389004707, "outcome": "passed" }, "teardown": { "duration": 0.0004731249064207077, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_simple.py::test_simple_issue_creation", "lineno": 25, "outcome": "passed", "keywords": [ "test_simple_issue_creation", "integration", "pytestmark", "test_simple.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009363638237118721, "outcome": "passed" }, "call": { "duration": 3.8085652778390795, "outcome": "passed", "stdout": "DEBUG: Starting simple test\nDEBUG: Creating issue with title: Simple Test Issue test-20250313010531-89a4caa2\nDEBUG: Issue created with number: 1713\nDEBUG: Cleaning up the issue\nDEBUG: Test completed successfully\n" }, "teardown": { "duration": 0.0005790989380329847, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_simple.py::test_simple_list_issues", "lineno": 60, "outcome": "passed", "keywords": [ "test_simple_list_issues", "integration", "pytestmark", "test_simple.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009176069870591164, "outcome": "passed" }, "call": { "duration": 75.96246257401071, "outcome": "passed", "stdout": "DEBUG: Starting simple list issues test\nDEBUG: Creating issue with title: List Test Issue test-20250313010535-587f22e5\nDEBUG: Issue created with number: 1714\nDEBUG: Listing issues\nDEBUG: Listed 87 issues\nDEBUG: Found our test issue in the list\nDEBUG: Issue verification successful\nDEBUG: Cleaning up the issue\nDEBUG: Test completed successfully\n" }, "teardown": { "duration": 0.0006088819354772568, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_simple.py::test_list_issues_with_state", "lineno": 115, "outcome": "passed", "keywords": [ "test_list_issues_with_state", "integration", "pytestmark", "test_simple.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009490731172263622, "outcome": "passed" }, "call": { "duration": 62.59583245078102, "outcome": "passed", "stdout": "\n--- DEBUG: Starting test_list_issues_with_state ---\nDEBUG: Creating open issue with title: Open Issue test-20250313010651-80428e3b\nDEBUG: Open issue created with number: 1715\nDEBUG: Creating closed issue with title: Closed Issue test-20250313010651-80428e3b\nDEBUG: Closed issue created with number: 1716\nDEBUG: Closing issue 1716\nDEBUG: Issue 1716 closed successfully\nDEBUG: Waiting for API to process state changes...\nDEBUG: Listing limited issues without state filter\nDEBUG: Listed 10 issues without state filter\nDEBUG: Listing open issues\nDEBUG: Listed 10 open issues\nDEBUG: Found our open issue in open issues list\nDEBUG: Listing closed issues (limited)\nDEBUG: Listed 20 closed issues\nDEBUG: Found our closed issue in closed issues list\nDEBUG: Listing 'all' issues (limited)\nDEBUG: Listed 20 issues with 'all' state\nDEBUG: All state filter tests completed successfully\nDEBUG: Cleaning up issues\nDEBUG: Cleanup completed successfully\n" }, "teardown": { "duration": 0.0005970359779894352, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_title", "lineno": 16, "outcome": "passed", "keywords": [ "test_update_issue_title", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009594601579010487, "outcome": "passed" }, "call": { "duration": 7.061542939161882, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue (attempt 1/3)\nDEBUG: Executing get_test_issue (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005773920565843582, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_body", "lineno": 83, "outcome": "passed", "keywords": [ "test_update_issue_body", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000925589120015502, "outcome": "passed" }, "call": { "duration": 7.1767033650539815, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue (attempt 1/3)\nDEBUG: Executing get_test_issue (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005533620715141296, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_state", "lineno": 152, "outcome": "passed", "keywords": [ "test_update_issue_state", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009311391040682793, "outcome": "passed" }, "call": { "duration": 10.867717029992491, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing close_test_issue (attempt 1/3)\nDEBUG: Executing get_closed_issue (attempt 1/3)\nDEBUG: Executing reopen_test_issue (attempt 1/3)\nDEBUG: Executing get_reopened_issue (attempt 1/3)\nDEBUG: Executing ensure_closed (attempt 1/3)\n" }, "teardown": { "duration": 0.0009561099577695131, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_labels", "lineno": 244, "outcome": "passed", "keywords": [ "test_update_issue_labels", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0015833950601518154, "outcome": "passed" }, "call": { "duration": 8.586814611917362, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue_labels (attempt 1/3)\nDEBUG: Executing update_test_issue_labels_again (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005900762043893337, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_multiple_fields", "lineno": 314, "outcome": "passed", "keywords": [ "test_update_issue_multiple_fields", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009397270623594522, "outcome": "passed" }, "call": { "duration": 6.454925299854949, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue_multiple (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0005452360492199659, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/issues/test_update.py::test_update_issue_no_changes", "lineno": 374, "outcome": "passed", "keywords": [ "test_update_issue_no_changes", "integration", "pytestmark", "test_update.py", "issues", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000930379843339324, "outcome": "passed" }, "call": { "duration": 4.987639229046181, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing update_test_issue_no_changes (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0008671360556036234, "outcome": "passed" } }, { "nodeid": "tests/integration/converters/common/test_pagination_integration.py::test_pagination_with_real_api", "lineno": 17, "outcome": "passed", "keywords": [ "test_pagination_with_real_api", "integration", "pytestmark", "test_pagination_integration.py", "common", "converters", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.003719477914273739, "outcome": "passed" }, "call": { "duration": 10.416318193078041, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing get_paginated_issues (attempt 1/3)\nDEBUG: Executing get_all_issues (attempt 1/3)\nDEBUG: Executing get_page_issues (attempt 1/3)\nDEBUG: Executing get_filtered_issues (attempt 1/3)\nDEBUG: Executing get_empty_results (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0007253270596265793, "outcome": "passed" } }, { "nodeid": "tests/integration/converters/common/test_pagination_integration.py::test_pagination_with_converted_items", "lineno": 107, "outcome": "passed", "keywords": [ "test_pagination_with_converted_items", "integration", "pytestmark", "test_pagination_integration.py", "common", "converters", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009326820727437735, "outcome": "passed" }, "call": { "duration": 76.14624694408849, "outcome": "passed", "stdout": "DEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing create_test_issue (attempt 1/3)\nDEBUG: Executing get_paginated_issues (attempt 1/3)\nDEBUG: Executing get_and_convert_issues (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\nDEBUG: Executing close_issue (attempt 1/3)\n" }, "teardown": { "duration": 0.0008395721670240164, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_singleton_pattern", "lineno": 22, "outcome": "passed", "keywords": [ "test_singleton_pattern", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0027437240350991488, "outcome": "passed" }, "call": { "duration": 0.0005552740767598152, "outcome": "passed" }, "teardown": { "duration": 0.0005910429172217846, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_direct_instantiation", "lineno": 37, "outcome": "passed", "keywords": [ "test_direct_instantiation", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0004881399217993021, "outcome": "passed" }, "call": { "duration": 0.0008834539912641048, "outcome": "passed" }, "teardown": { "duration": 0.0004303308669477701, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_github_property", "lineno": 45, "outcome": "passed", "keywords": [ "test_github_property", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005237481091171503, "outcome": "passed" }, "call": { "duration": 0.11323310597799718, "outcome": "passed" }, "teardown": { "duration": 0.00047627417370676994, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_get_repo_success", "lineno": 59, "outcome": "passed", "keywords": [ "test_get_repo_success", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010372200049459934, "outcome": "passed" }, "call": { "duration": 0.40531498403288424, "outcome": "passed", "stdout": "DEBUG: Executing get_test_repo (attempt 1/3)\n" }, "teardown": { "duration": 0.0005665300413966179, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_get_repo_not_found", "lineno": 73, "outcome": "passed", "keywords": [ "test_get_repo_not_found", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007362260948866606, "outcome": "passed" }, "call": { "duration": 0.34096295409835875, "outcome": "passed", "stdout": "DEBUG: Executing get_nonexistent_repo (attempt 1/3)\n", "stderr": "2025-03-13 00:57:50,372 - pygithub_mcp_server.client.client - ERROR - GitHub exception when getting repo AstroMined/nonexistent-repo-20250313005750: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}\n2025-03-13 00:57:50,373 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}\n2025-03-13 00:57:50,373 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n", "log": [ { "name": "pygithub_mcp_server.client.client", "msg": "GitHub exception when getting repo AstroMined/nonexistent-repo-20250313005750: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/client/client.py", "filename": "client.py", "module": "client", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 144, "funcName": "get_repo", "created": 1741841870.3722615, "msecs": 372.0, "relativeCreated": 2447.7379322052, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741841870.3731232, "msecs": 373.0, "relativeCreated": 2448.5995769500732, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741841870.3735576, "msecs": 373.0, "relativeCreated": 2449.0339756011963, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" } ] }, "teardown": { "duration": 0.0005052399355918169, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_client.py::test_get_repo_invalid_name", "lineno": 91, "outcome": "passed", "keywords": [ "test_get_repo_invalid_name", "integration", "pytestmark", "test_client.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006506210193037987, "outcome": "passed" }, "call": { "duration": 0.3458192718680948, "outcome": "passed", "stdout": "DEBUG: Executing get_invalid_repo (attempt 1/3)\n", "stderr": "2025-03-13 00:57:50,720 - pygithub_mcp_server.client.client - ERROR - GitHub exception when getting repo invalid/repo/name: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest\", \"status\": \"404\"}\n2025-03-13 00:57:50,721 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest', 'status': '404'}\n2025-03-13 00:57:50,721 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n", "log": [ { "name": "pygithub_mcp_server.client.client", "msg": "GitHub exception when getting repo invalid/repo/name: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/client/client.py", "filename": "client.py", "module": "client", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 144, "funcName": "get_repo", "created": 1741841870.7206857, "msecs": 720.0, "relativeCreated": 2796.1621284484863, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741841870.7214818, "msecs": 721.0, "relativeCreated": 2796.9582080841064, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741841870.7218933, "msecs": 721.0, "relativeCreated": 2797.3697185516357, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:50" } ] }, "teardown": { "duration": 0.0005665738135576248, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_check_rate_limit_real_api", "lineno": 30, "outcome": "passed", "keywords": [ "test_check_rate_limit_real_api", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005518968682736158, "outcome": "passed" }, "call": { "duration": 0.36396862589754164, "outcome": "passed" }, "teardown": { "duration": 0.0004884309601038694, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_exponential_backoff", "lineno": 44, "outcome": "passed", "keywords": [ "test_exponential_backoff", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005157941486686468, "outcome": "passed" }, "call": { "duration": 0.000584576977416873, "outcome": "passed" }, "teardown": { "duration": 0.0004255198873579502, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_exponential_backoff_max_attempts", "lineno": 64, "outcome": "passed", "keywords": [ "test_exponential_backoff_max_attempts", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0004842530470341444, "outcome": "passed" }, "call": { "duration": 0.000965955900028348, "outcome": "passed" }, "teardown": { "duration": 0.0004253129009157419, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_wait_for_rate_limit_reset_past_time", "lineno": 70, "outcome": "passed", "keywords": [ "test_wait_for_rate_limit_reset_past_time", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0004905539099127054, "outcome": "passed" }, "call": { "duration": 0.10102150100283325, "outcome": "passed" }, "teardown": { "duration": 0.0004610358737409115, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_wait_for_rate_limit_reset_future_time", "lineno": 85, "outcome": "passed", "keywords": [ "test_wait_for_rate_limit_reset_future_time", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005039798561483622, "outcome": "passed" }, "call": { "duration": 0.3012988760601729, "outcome": "passed" }, "teardown": { "duration": 0.0005020580720156431, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_handle_rate_limit_with_backoff_test_mode", "lineno": 99, "outcome": "passed", "keywords": [ "test_handle_rate_limit_with_backoff_test_mode", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000527665950357914, "outcome": "passed" }, "call": { "duration": 0.10098705207929015, "outcome": "passed" }, "teardown": { "duration": 0.00042229797691106796, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_handle_rate_limit_with_backoff_max_attempts", "lineno": 123, "outcome": "passed", "keywords": [ "test_handle_rate_limit_with_backoff_max_attempts", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005089279729872942, "outcome": "passed" }, "call": { "duration": 0.0013858340680599213, "outcome": "passed", "stderr": "2025-03-13 00:57:51,610 - pygithub_mcp_server.client.rate_limit - ERROR - Maximum retry attempts (5) exceeded for rate limit\n", "log": [ { "name": "pygithub_mcp_server.client.rate_limit", "msg": "Maximum retry attempts (5) exceeded for rate limit", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/client/rate_limit.py", "filename": "rate_limit.py", "module": "rate_limit", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 110, "funcName": "handle_rate_limit_with_backoff", "created": 1741841871.610197, "msecs": 610.0, "relativeCreated": 3685.673475265503, "thread": 133735657873408, "threadName": "MainThread", "processName": "MainProcess", "process": 1495323, "asctime": "2025-03-13 00:57:51" } ] }, "teardown": { "duration": 0.00043724896386265755, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_handle_rate_limit_with_exception_reset_time", "lineno": 143, "outcome": "passed", "keywords": [ "test_handle_rate_limit_with_exception_reset_time", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000707132974639535, "outcome": "passed" }, "call": { "duration": 0.10086924186907709, "outcome": "passed" }, "teardown": { "duration": 0.0004944449756294489, "outcome": "passed" } }, { "nodeid": "tests/integration/client/test_rate_limit.py::TestRateLimit::test_handle_rate_limit_without_reset_time", "lineno": 192, "outcome": "passed", "keywords": [ "test_handle_rate_limit_without_reset_time", "TestRateLimit", "integration", "test_rate_limit.py", "client", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006587908137589693, "outcome": "passed" }, "call": { "duration": 0.010772905079647899, "outcome": "passed" }, "teardown": { "duration": 0.0007914900779724121, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_create_issue_missing_required_params", "lineno": 33, "outcome": "passed", "keywords": [ "test_create_issue_missing_required_params", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.002841580891981721, "outcome": "passed" }, "call": { "duration": 0.0016612280160188675, "outcome": "passed", "stderr": "2025-03-13 01:09:05,284 - pygithub_mcp_server.tools.issues.tools - ERROR - Failed to convert dict to CreateIssueParams: 1 validation error for CreateIssueParams\ntitle\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing\n", "log": [ { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Failed to convert dict to CreateIssueParams: 1 validation error for CreateIssueParams\ntitle\n Field required [type=missing, input_value={'owner': 'AstroMined', 'repo': 'mcp-testing'}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.10/v/missing", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 57, "funcName": "create_issue", "created": 1741842545.2842546, "msecs": 284.0, "relativeCreated": 1670.8173751831055, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:05" } ] }, "teardown": { "duration": 0.0005976969841867685, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_create_issue_invalid_repo", "lineno": 49, "outcome": "passed", "keywords": [ "test_create_issue_invalid_repo", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005360760260373354, "outcome": "passed" }, "call": { "duration": 0.09638599515892565, "outcome": "passed", "stderr": "2025-03-13 01:09:05,382 - pygithub_mcp_server.client.client - ERROR - GitHub exception when getting repo AstroMined/non-existent-repo-12345: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}\n2025-03-13 01:09:05,382 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}\n2025-03-13 01:09:05,383 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:05,383 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Repository not found\n", "log": [ { "name": "pygithub_mcp_server.client.client", "msg": "GitHub exception when getting repo AstroMined/non-existent-repo-12345: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/repos/repos#get-a-repository\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/client/client.py", "filename": "client.py", "module": "client", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 144, "funcName": "get_repo", "created": 1741842545.3821754, "msecs": 382.0, "relativeCreated": 1768.7382698059082, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:05" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/repos/repos#get-a-repository', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842545.3829944, "msecs": 382.0, "relativeCreated": 1769.557237625122, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:05" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842545.3834157, "msecs": 383.0, "relativeCreated": 1769.9785232543945, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:05" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Repository not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 70, "funcName": "create_issue", "created": 1741842545.3838198, "msecs": 383.0, "relativeCreated": 1770.3826427459717, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:05" } ] }, "teardown": { "duration": 0.0004850819241255522, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_get_issue_invalid_number", "lineno": 65, "outcome": "passed", "keywords": [ "test_get_issue_invalid_number", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005692951381206512, "outcome": "passed" }, "call": { "duration": 0.7446620739065111, "outcome": "passed", "stderr": "2025-03-13 01:09:06,129 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}\n2025-03-13 01:09:06,130 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:06,131 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842546.1298203, "msecs": 129.0, "relativeCreated": 2516.383171081543, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842546.1306677, "msecs": 130.0, "relativeCreated": 2517.23051071167, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 147, "funcName": "get_issue", "created": 1741842546.1311007, "msecs": 131.0, "relativeCreated": 2517.6634788513184, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" } ] }, "teardown": { "duration": 0.0004940340295433998, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_update_issue_nonexistent", "lineno": 81, "outcome": "passed", "keywords": [ "test_update_issue_nonexistent", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005575479008257389, "outcome": "passed" }, "call": { "duration": 0.7664988560136408, "outcome": "passed", "stderr": "2025-03-13 01:09:06,899 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}\n2025-03-13 01:09:06,899 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:06,900 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842546.8990858, "msecs": 899.0, "relativeCreated": 3285.6485843658447, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842546.899939, "msecs": 899.0, "relativeCreated": 3286.501884460449, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 188, "funcName": "update_issue", "created": 1741842546.9003587, "msecs": 900.0, "relativeCreated": 3286.921501159668, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:06" } ] }, "teardown": { "duration": 0.000494346022605896, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_update_issue_empty_values", "lineno": 96, "outcome": "passed", "keywords": [ "test_update_issue_empty_values", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0011505289003252983, "outcome": "passed" }, "call": { "duration": 3.7548668819945306, "outcome": "passed" }, "teardown": { "duration": 2.406926338095218, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_add_issue_comment_invalid_issue", "lineno": 126, "outcome": "passed", "keywords": [ "test_add_issue_comment_invalid_issue", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006083180196583271, "outcome": "passed" }, "call": { "duration": 0.7820778388995677, "outcome": "passed", "stderr": "2025-03-13 01:09:13,849 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}\n2025-03-13 01:09:13,849 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:13,850 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842553.8490274, "msecs": 849.0, "relativeCreated": 10235.59021949768, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:13" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842553.8498883, "msecs": 849.0, "relativeCreated": 10236.451148986816, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:13" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 224, "funcName": "add_issue_comment", "created": 1741842553.8503332, "msecs": 850.0, "relativeCreated": 10236.89603805542, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:13" } ] }, "teardown": { "duration": 0.0004996028728783131, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issue_comments_invalid_issue", "lineno": 141, "outcome": "passed", "keywords": [ "test_list_issue_comments_invalid_issue", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005303418729454279, "outcome": "passed" }, "call": { "duration": 0.7884129760786891, "outcome": "passed", "stderr": "2025-03-13 01:09:14,639 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}\n2025-03-13 01:09:14,640 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:14,641 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842554.6399746, "msecs": 639.0, "relativeCreated": 11026.537418365479, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:14" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842554.6408672, "msecs": 640.0, "relativeCreated": 11027.430057525635, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:14" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 262, "funcName": "list_issue_comments", "created": 1741842554.6413667, "msecs": 641.0, "relativeCreated": 11027.929544448853, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:14" } ] }, "teardown": { "duration": 0.0004860600456595421, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issue_comments_pagination", "lineno": 155, "outcome": "passed", "keywords": [ "test_list_issue_comments_pagination", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009514549747109413, "outcome": "passed" }, "call": { "duration": 7.2830758050549775, "outcome": "passed" }, "teardown": { "duration": 2.4655720780137926, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_update_comment_nonexistent", "lineno": 196, "outcome": "passed", "keywords": [ "test_update_comment_nonexistent", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010280839633196592, "outcome": "passed" }, "call": { "duration": 2.517949116183445, "outcome": "passed", "stderr": "2025-03-13 01:09:26,912 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/comments#get-an-issue-comment', 'status': '404'}\n2025-03-13 01:09:26,913 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:26,914 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/comments#get-an-issue-comment', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842566.9127085, "msecs": 912.0, "relativeCreated": 23299.27134513855, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:26" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842566.9135659, "msecs": 913.0, "relativeCreated": 23300.128698349, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:26" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 299, "funcName": "update_issue_comment", "created": 1741842566.9140172, "msecs": 914.0, "relativeCreated": 23300.58002471924, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:26" } ] }, "teardown": { "duration": 2.452298315940425, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_delete_comment_nonexistent", "lineno": 226, "outcome": "passed", "keywords": [ "test_delete_comment_nonexistent", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010375950951129198, "outcome": "passed" }, "call": { "duration": 2.508570801001042, "outcome": "passed", "stderr": "2025-03-13 01:09:31,876 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/comments#get-an-issue-comment', 'status': '404'}\n2025-03-13 01:09:31,877 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:31,877 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/comments#get-an-issue-comment', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842571.8765051, "msecs": 876.0, "relativeCreated": 28263.067960739136, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:31" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842571.8773682, "msecs": 877.0, "relativeCreated": 28263.931035995483, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:31" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 335, "funcName": "delete_issue_comment", "created": 1741842571.8777971, "msecs": 877.0, "relativeCreated": 28264.359951019287, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:31" } ] }, "teardown": { "duration": 2.5979348809923977, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_add_labels_nonexistent_issue", "lineno": 255, "outcome": "passed", "keywords": [ "test_add_labels_nonexistent_issue", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005876331124454737, "outcome": "passed" }, "call": { "duration": 0.7433478890452534, "outcome": "passed", "stderr": "2025-03-13 01:09:35,220 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}\n2025-03-13 01:09:35,221 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n2025-03-13 01:09:35,221 - pygithub_mcp_server.tools.issues.tools - ERROR - GitHub error: Not Found\n", "log": [ { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/issues/issues#get-an-issue', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842575.2202783, "msecs": 220.0, "relativeCreated": 31606.84108734131, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:35" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842575.2211466, "msecs": 221.0, "relativeCreated": 31607.709407806396, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:35" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "GitHub error: Not Found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 371, "funcName": "add_issue_labels", "created": 1741842575.2215588, "msecs": 221.0, "relativeCreated": 31608.121633529663, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:35" } ] }, "teardown": { "duration": 0.0004869680851697922, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_remove_label_nonexistent_issue", "lineno": 270, "outcome": "passed", "keywords": [ "test_remove_label_nonexistent_issue", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005509450566023588, "outcome": "passed" }, "call": { "duration": 0.7648788811638951, "outcome": "passed", "stderr": "2025-03-13 01:09:35,985 - pygithub_mcp_server.tools.issues.tools - ERROR - Unexpected error: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/issues#get-an-issue\", \"status\": \"404\"}\n2025-03-13 01:09:35,988 - pygithub_mcp_server.tools.issues.tools - ERROR - Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 406, in remove_issue_label\n issue = repository.get_issue(params.issue_number)\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Repository.py\", line 3087, in get_issue\n headers, data = self._requester.requestJsonAndCheck(\"GET\", f\"{self.url}/issues/{number}\")\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Requester.py\", line 624, in requestJsonAndCheck\n return self.__check(\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Requester.py\", line 792, in __check\n raise self.createException(status, responseHeaders, data)\ngithub.GithubException.UnknownObjectException: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/issues#get-an-issue\", \"status\": \"404\"}\n\n", "log": [ { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Unexpected error: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/issues#get-an-issue\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 431, "funcName": "remove_issue_label", "created": 1741842575.985226, "msecs": 985.0, "relativeCreated": 32371.78874015808, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:35" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 406, in remove_issue_label\n issue = repository.get_issue(params.issue_number)\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Repository.py\", line 3087, in get_issue\n headers, data = self._requester.requestJsonAndCheck(\"GET\", f\"{self.url}/issues/{number}\")\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Requester.py\", line 624, in requestJsonAndCheck\n return self.__check(\n File \"/code/python-mcp-servers/pygithub-mcp-server/.venv/lib/python3.10/site-packages/github/Requester.py\", line 792, in __check\n raise self.createException(status, responseHeaders, data)\ngithub.GithubException.UnknownObjectException: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/issues/issues#get-an-issue\", \"status\": \"404\"}\n", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 432, "funcName": "remove_issue_label", "created": 1741842575.9889977, "msecs": 988.0, "relativeCreated": 32375.560522079468, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:35" } ] }, "teardown": { "duration": 0.000503412215039134, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_remove_nonexistent_label", "lineno": 285, "outcome": "passed", "keywords": [ "test_remove_nonexistent_label", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009699899237602949, "outcome": "passed" }, "call": { "duration": 2.240819641156122, "outcome": "passed", "stderr": "2025-03-13 01:09:38,232 - pygithub_mcp_server.tools.issues.tools - WARNING - Label 'nonexistent-label-test-c5a1fa74' does not exist on issue #1727\n", "log": [ { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Label 'nonexistent-label-test-c5a1fa74' does not exist on issue #1727", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 414, "funcName": "remove_issue_label", "created": 1741842578.2326267, "msecs": 232.0, "relativeCreated": 34619.189500808716, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:38" } ] }, "teardown": { "duration": 2.402647300157696, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issues_pagination", "lineno": 316, "outcome": "passed", "keywords": [ "test_list_issues_pagination", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005867111030966043, "outcome": "passed" }, "call": { "duration": 2.8928480178583413, "outcome": "passed" }, "teardown": { "duration": 0.0005785441026091576, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issues_invalid_params", "lineno": 333, "outcome": "passed", "keywords": [ "test_list_issues_invalid_params", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000577322905883193, "outcome": "passed" }, "call": { "duration": 0.006633823970332742, "outcome": "passed", "stderr": "2025-03-13 01:09:43,535 - pygithub_mcp_server.tools - ERROR - Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nstate\n Value error, Invalid state: invalid_state. Must be one of: open, closed, all [type=value_error, input_value='invalid_state', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error\n2025-03-13 01:09:43,536 - pygithub_mcp_server.tools.issues.tools - ERROR - Unexpected error: 'dict' object has no attribute 'owner'\n2025-03-13 01:09:43,538 - pygithub_mcp_server.tools.issues.tools - ERROR - Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n\n2025-03-13 01:09:43,539 - pygithub_mcp_server.tools - ERROR - Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nsort\n Value error, Invalid sort value: invalid_sort. Must be one of: created, updated, comments [type=value_error, input_value='invalid_sort', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error\n2025-03-13 01:09:43,539 - pygithub_mcp_server.tools.issues.tools - ERROR - Unexpected error: 'dict' object has no attribute 'owner'\n2025-03-13 01:09:43,541 - pygithub_mcp_server.tools.issues.tools - ERROR - Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n\n", "log": [ { "name": "pygithub_mcp_server.tools", "msg": "Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nstate\n Value error, Invalid state: invalid_state. Must be one of: open, closed, all [type=value_error, input_value='invalid_state', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/__init__.py", "filename": "__init__.py", "module": "__init__", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 65, "funcName": "wrapper", "created": 1741842583.535709, "msecs": 535.0, "relativeCreated": 39922.271728515625, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Unexpected error: 'dict' object has no attribute 'owner'", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 118, "funcName": "list_issues", "created": 1741842583.536469, "msecs": 536.0, "relativeCreated": 39923.0318069458, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 119, "funcName": "list_issues", "created": 1741842583.5384774, "msecs": 538.0, "relativeCreated": 39925.04024505615, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools", "msg": "Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nsort\n Value error, Invalid sort value: invalid_sort. Must be one of: created, updated, comments [type=value_error, input_value='invalid_sort', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/__init__.py", "filename": "__init__.py", "module": "__init__", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 65, "funcName": "wrapper", "created": 1741842583.5390253, "msecs": 539.0, "relativeCreated": 39925.58813095093, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Unexpected error: 'dict' object has no attribute 'owner'", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 118, "funcName": "list_issues", "created": 1741842583.5394583, "msecs": 539.0, "relativeCreated": 39926.021099090576, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 119, "funcName": "list_issues", "created": 1741842583.5411072, "msecs": 541.0, "relativeCreated": 39927.67000198364, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" } ] }, "teardown": { "duration": 0.00046380492858588696, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issues_invalid_since", "lineno": 361, "outcome": "passed", "keywords": [ "test_list_issues_invalid_since", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005593548994511366, "outcome": "passed" }, "call": { "duration": 0.0034716969821602106, "outcome": "passed", "stderr": "2025-03-13 01:09:43,544 - pygithub_mcp_server.tools - ERROR - Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nsince\n Value error, Invalid ISO format datetime: not-a-date. Must include date, time with 'T' separator, and timezone. [type=value_error, input_value='not-a-date', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error\n2025-03-13 01:09:43,545 - pygithub_mcp_server.tools.issues.tools - ERROR - Unexpected error: 'dict' object has no attribute 'owner'\n2025-03-13 01:09:43,547 - pygithub_mcp_server.tools.issues.tools - ERROR - Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n\n", "log": [ { "name": "pygithub_mcp_server.tools", "msg": "Failed to convert dict to ListIssuesParams: 1 validation error for ListIssuesParams\nsince\n Value error, Invalid ISO format datetime: not-a-date. Must include date, time with 'T' separator, and timezone. [type=value_error, input_value='not-a-date', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/__init__.py", "filename": "__init__.py", "module": "__init__", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 65, "funcName": "wrapper", "created": 1741842583.5448132, "msecs": 544.0, "relativeCreated": 39931.3759803772, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Unexpected error: 'dict' object has no attribute 'owner'", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 118, "funcName": "list_issues", "created": 1741842583.5454414, "msecs": 545.0, "relativeCreated": 39932.00421333313, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 106, in list_issues\n result = issues.list_issues(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 187, in list_issues\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 119, "funcName": "list_issues", "created": 1741842583.547147, "msecs": 547.0, "relativeCreated": 39933.70985984802, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:43" } ] }, "teardown": { "duration": 0.0004974589683115482, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_error_cases.py::TestIssueToolsErrorHandling::test_list_issue_comments_invalid_since", "lineno": 375, "outcome": "passed", "keywords": [ "test_list_issue_comments_invalid_since", "TestIssueToolsErrorHandling", "integration", "test_error_cases.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010177139192819595, "outcome": "passed" }, "call": { "duration": 1.4137614250648767, "outcome": "passed", "stderr": "2025-03-13 01:09:44,960 - pygithub_mcp_server.tools - ERROR - Failed to convert dict to ListIssueCommentsParams: 1 validation error for ListIssueCommentsParams\nsince\n Value error, Invalid ISO format datetime: not-a-date. Must include date, time with 'T' separator, and timezone. [type=value_error, input_value='not-a-date', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error\n2025-03-13 01:09:44,961 - pygithub_mcp_server.tools.issues.tools - ERROR - Unexpected error: 'dict' object has no attribute 'owner'\n2025-03-13 01:09:44,963 - pygithub_mcp_server.tools.issues.tools - ERROR - Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 258, in list_issue_comments\n result = issues.list_issue_comments(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 285, in list_issue_comments\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n\n", "log": [ { "name": "pygithub_mcp_server.tools", "msg": "Failed to convert dict to ListIssueCommentsParams: 1 validation error for ListIssueCommentsParams\nsince\n Value error, Invalid ISO format datetime: not-a-date. Must include date, time with 'T' separator, and timezone. [type=value_error, input_value='not-a-date', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/value_error", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/__init__.py", "filename": "__init__.py", "module": "__init__", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 65, "funcName": "wrapper", "created": 1741842584.9600468, "msecs": 960.0, "relativeCreated": 41346.609592437744, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:44" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Unexpected error: 'dict' object has no attribute 'owner'", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 268, "funcName": "list_issue_comments", "created": 1741842584.9615211, "msecs": 961.0, "relativeCreated": 41348.08397293091, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:44" }, { "name": "pygithub_mcp_server.tools.issues.tools", "msg": "Traceback (most recent call last):\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py\", line 258, in list_issue_comments\n result = issues.list_issue_comments(params)\n File \"/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/issues.py\", line 285, in list_issue_comments\n repository = client.get_repo(f\"{params.owner}/{params.repo}\")\nAttributeError: 'dict' object has no attribute 'owner'\n", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/tools/issues/tools.py", "filename": "tools.py", "module": "tools", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 269, "funcName": "list_issue_comments", "created": 1741842584.963554, "msecs": 963.0, "relativeCreated": 41350.11672973633, "thread": 137510112464896, "threadName": "MainThread", "processName": "MainProcess", "process": 1501385, "asctime": "2025-03-13 01:09:44" } ] }, "teardown": { "duration": 2.456584489904344, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_issue_tools.py::TestIssueTools::test_issue_lifecycle", "lineno": 40, "outcome": "passed", "keywords": [ "test_issue_lifecycle", "TestIssueTools", "integration", "test_issue_tools.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0014699678868055344, "outcome": "passed" }, "call": { "duration": 20.52879438898526, "outcome": "passed" }, "teardown": { "duration": 2.175072647863999, "outcome": "passed" } }, { "nodeid": "tests/integration/tools/issues/test_issue_tools.py::TestIssueTools::test_list_issues", "lineno": 212, "outcome": "passed", "keywords": [ "test_list_issues", "TestIssueTools", "integration", "test_issue_tools.py", "issues", "tools", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010378179140388966, "outcome": "passed" }, "call": { "duration": 100.63523008511402, "outcome": "passed" }, "teardown": { "duration": 2.314816629048437, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_branch_operations_integration.py::test_create_branch_integration", "lineno": 24, "outcome": "passed", "keywords": [ "test_create_branch_integration", "integration", "pytestmark", "test_branch_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0037205000407993793, "outcome": "passed" }, "call": { "duration": 1.0607327921316028, "outcome": "passed", "stdout": "DEBUG: Executing create_branch_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0017975640948861837, "outcome": "passed", "stderr": "2025-03-13 01:08:42,760 - integration_tests - INFO - Skipping branch cleanup for AstroMined/mcp-testing:test-branch-test-20250313010841-a604004d (not implemented)\n", "log": [ { "name": "integration_tests", "msg": "Skipping branch cleanup for AstroMined/mcp-testing:test-branch-test-20250313010841-a604004d (not implemented)", "args": null, "levelname": "INFO", "levelno": 20, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/tests/integration/conftest.py", "filename": "conftest.py", "module": "conftest", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 186, "funcName": "cleanup_all", "created": 1741842522.7603917, "msecs": 760.0, "relativeCreated": 2758.5654258728027, "thread": 133109550063616, "threadName": "MainThread", "processName": "MainProcess", "process": 1501170, "asctime": "2025-03-13 01:08:42" } ] } }, { "nodeid": "tests/integration/operations/repositories/test_branch_operations_integration.py::test_create_branch_error_handling", "lineno": 54, "outcome": "passed", "keywords": [ "test_create_branch_error_handling", "integration", "pytestmark", "test_branch_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0007563859689980745, "outcome": "passed" }, "call": { "duration": 0.7872189171612263, "outcome": "passed", "stdout": "DEBUG: Executing create_branch_with_invalid_source (attempt 1/3)\nDEBUG: Unexpected exception in create_branch_with_invalid_source: GitHubResourceNotFoundError: Git Ref not found\n", "stderr": "2025-03-13 01:08:43,548 - pygithub_mcp_server.operations.repositories - ERROR - GitHub exception when creating branch: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/git/refs#get-all-references-in-a-namespace\", \"status\": \"404\"}\n2025-03-13 01:08:43,549 - pygithub_mcp_server.errors.handlers - ERROR - Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/git/refs#get-all-references-in-a-namespace', 'status': '404'}\n2025-03-13 01:08:43,549 - pygithub_mcp_server.errors.handlers - ERROR - Resource not found\n", "log": [ { "name": "pygithub_mcp_server.operations.repositories", "msg": "GitHub exception when creating branch: 404 {\"message\": \"Not Found\", \"documentation_url\": \"https://docs.github.com/rest/git/refs#get-all-references-in-a-namespace\", \"status\": \"404\"}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/operations/repositories.py", "filename": "repositories.py", "module": "repositories", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 420, "funcName": "create_branch", "created": 1741842523.5483422, "msecs": 548.0, "relativeCreated": 3546.515941619873, "thread": 133109550063616, "threadName": "MainThread", "processName": "MainProcess", "process": 1501170, "asctime": "2025-03-13 01:08:43" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Handling GitHub exception: status=404, data={'message': 'Not Found', 'documentation_url': 'https://docs.github.com/rest/git/refs#get-all-references-in-a-namespace', 'status': '404'}", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 82, "funcName": "handle_github_exception", "created": 1741842523.549164, "msecs": 549.0, "relativeCreated": 3547.337770462036, "thread": 133109550063616, "threadName": "MainThread", "processName": "MainProcess", "process": 1501170, "asctime": "2025-03-13 01:08:43" }, { "name": "pygithub_mcp_server.errors.handlers", "msg": "Resource not found", "args": null, "levelname": "ERROR", "levelno": 40, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/src/pygithub_mcp_server/errors/handlers.py", "filename": "handlers.py", "module": "handlers", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 130, "funcName": "handle_github_exception", "created": 1741842523.549571, "msecs": 549.0, "relativeCreated": 3547.7447509765625, "thread": 133109550063616, "threadName": "MainThread", "processName": "MainProcess", "process": 1501170, "asctime": "2025-03-13 01:08:43" } ] }, "teardown": { "duration": 0.0005390509031713009, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_branch_operations_integration.py::test_create_branch_and_list_commits", "lineno": 87, "outcome": "passed", "keywords": [ "test_create_branch_and_list_commits", "integration", "pytestmark", "test_branch_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010684109292924404, "outcome": "passed" }, "call": { "duration": 2.5128957498818636, "outcome": "passed", "stdout": "DEBUG: Executing create_branch_with_retry (attempt 1/3)\nDEBUG: Executing list_commits_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.001353672007098794, "outcome": "passed", "stderr": "2025-03-13 01:08:46,067 - integration_tests - INFO - Skipping branch cleanup for AstroMined/mcp-testing:test-branch-commits-test-20250313010843-370f8eb1 (not implemented)\n", "log": [ { "name": "integration_tests", "msg": "Skipping branch cleanup for AstroMined/mcp-testing:test-branch-commits-test-20250313010843-370f8eb1 (not implemented)", "args": null, "levelname": "INFO", "levelno": 20, "pathname": "/code/python-mcp-servers/pygithub-mcp-server/tests/integration/conftest.py", "filename": "conftest.py", "module": "conftest", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 186, "funcName": "cleanup_all", "created": 1741842526.067898, "msecs": 67.0, "relativeCreated": 6066.0717487335205, "thread": 133109550063616, "threadName": "MainThread", "processName": "MainProcess", "process": 1501170, "asctime": "2025-03-13 01:08:46" } ] } }, { "nodeid": "tests/integration/operations/repositories/test_files_operations_integration.py::test_create_file_integration", "lineno": 26, "outcome": "passed", "keywords": [ "test_create_file_integration", "integration", "pytestmark", "test_files_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010928038973361254, "outcome": "passed" }, "call": { "duration": 1.1595288352109492, "outcome": "passed", "stdout": "DEBUG: Executing create_file_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0006517190486192703, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_files_operations_integration.py::test_update_file_integration", "lineno": 64, "outcome": "passed", "keywords": [ "test_update_file_integration", "integration", "pytestmark", "test_files_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0010583270341157913, "outcome": "passed" }, "call": { "duration": 3.719026613049209, "outcome": "passed", "stdout": "DEBUG: Executing create_initial_file (attempt 1/3)\nDEBUG: Executing update_file_with_retry (attempt 1/3)\nDEBUG: Executing get_file_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.00062183802947402, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_files_operations_integration.py::test_push_files_integration", "lineno": 137, "outcome": "passed", "keywords": [ "test_push_files_integration", "integration", "pytestmark", "test_files_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.001044966047629714, "outcome": "passed" }, "call": { "duration": 5.236946288030595, "outcome": "passed", "stdout": "DEBUG: Executing push_files_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0006921340245753527, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_files_operations_integration.py::test_push_files_error_handling", "lineno": 194, "outcome": "passed", "keywords": [ "test_push_files_error_handling", "integration", "pytestmark", "test_files_operations_integration.py", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0009653528686612844, "outcome": "passed" }, "call": { "duration": 0.0008262100163847208, "outcome": "passed", "stdout": "DEBUG: Executing push_invalid_files (attempt 1/3)\nDEBUG: Unexpected exception in push_invalid_files: GitHubError: File content cannot be empty\n" }, "teardown": { "duration": 0.0005035961512476206, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_repositories_integration.py::test_get_repository_integration", "lineno": 22, "outcome": "passed", "keywords": [ "test_get_repository_integration", "test_repositories_integration.py", "integration", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006791518535465002, "outcome": "passed" }, "call": { "duration": 0.3961674808524549, "outcome": "passed", "stdout": "DEBUG: Executing get_repo_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0005329821724444628, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_repositories_integration.py::test_search_repositories_integration", "lineno": 40, "outcome": "passed", "keywords": [ "test_search_repositories_integration", "test_repositories_integration.py", "integration", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006910038646310568, "outcome": "passed" }, "call": { "duration": 1.4414684840012342, "outcome": "passed", "stdout": "DEBUG: Executing search_repos_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0005249399691820145, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_repositories_integration.py::test_get_file_contents_integration", "lineno": 70, "outcome": "passed", "keywords": [ "test_get_file_contents_integration", "test_repositories_integration.py", "integration", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006892490200698376, "outcome": "passed" }, "call": { "duration": 0.7649056590162218, "outcome": "passed", "stdout": "DEBUG: Executing get_contents_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.000523329945281148, "outcome": "passed" } }, { "nodeid": "tests/integration/operations/repositories/test_repositories_integration.py::test_list_commits_integration", "lineno": 108, "outcome": "passed", "keywords": [ "test_list_commits_integration", "test_repositories_integration.py", "integration", "repositories", "operations", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.000719808042049408, "outcome": "passed" }, "call": { "duration": 1.1980833671987057, "outcome": "passed", "stdout": "DEBUG: Executing list_commits_with_retry (attempt 1/3)\n" }, "teardown": { "duration": 0.0007817470468580723, "outcome": "passed" } }, { "nodeid": "tests/integration/test_server.py::TestServer::test_create_server_basic", "lineno": 44, "outcome": "passed", "keywords": [ "test_create_server_basic", "TestServer", "integration", "test_server.py", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.001903046853840351, "outcome": "passed" }, "call": { "duration": 0.08779235789552331, "outcome": "passed" }, "teardown": { "duration": 0.0006041720043867826, "outcome": "passed" } }, { "nodeid": "tests/integration/test_server.py::TestServer::test_server_tools_callable", "lineno": 61, "outcome": "passed", "keywords": [ "test_server_tools_callable", "TestServer", "integration", "test_server.py", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005120730493217707, "outcome": "passed" }, "call": { "duration": 0.07559185894206166, "outcome": "passed" }, "teardown": { "duration": 0.00046745012514293194, "outcome": "passed" } }, { "nodeid": "tests/integration/test_server.py::TestServer::test_server_metadata", "lineno": 82, "outcome": "passed", "keywords": [ "test_server_metadata", "TestServer", "integration", "test_server.py", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0005115619860589504, "outcome": "passed" }, "call": { "duration": 0.10805089003406465, "outcome": "passed" }, "teardown": { "duration": 0.000433565117418766, "outcome": "passed" } }, { "nodeid": "tests/integration/test_server.py::TestServer::test_server_with_custom_env", "lineno": 94, "outcome": "passed", "keywords": [ "test_server_with_custom_env", "TestServer", "integration", "test_server.py", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.0006745799910277128, "outcome": "passed" }, "call": { "duration": 0.02499342104420066, "outcome": "passed" }, "teardown": { "duration": 0.0005328019615262747, "outcome": "passed" } }, { "nodeid": "tests/integration/test_server.py::TestServer::test_server_logging_initialization", "lineno": 115, "outcome": "passed", "keywords": [ "test_server_logging_initialization", "TestServer", "integration", "test_server.py", "tests", "pygithub-mcp-server", "" ], "setup": { "duration": 0.004344149027019739, "outcome": "passed" }, "call": { "duration": 0.002062931889668107, "outcome": "passed" }, "teardown": { "duration": 0.0007009960245341063, "outcome": "passed" } } ], "warnings": [] }

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/AstroMined/pygithub-mcp-server'

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