quickcall-integrations 0.3.1__py3-none-any.whl → 0.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mcp_server/tools/github_tools.py +17 -101
- {quickcall_integrations-0.3.1.dist-info → quickcall_integrations-0.3.3.dist-info}/METADATA +1 -1
- {quickcall_integrations-0.3.1.dist-info → quickcall_integrations-0.3.3.dist-info}/RECORD +5 -5
- {quickcall_integrations-0.3.1.dist-info → quickcall_integrations-0.3.3.dist-info}/WHEEL +0 -0
- {quickcall_integrations-0.3.1.dist-info → quickcall_integrations-0.3.3.dist-info}/entry_points.txt +0 -0
mcp_server/tools/github_tools.py
CHANGED
|
@@ -164,10 +164,8 @@ def create_github_tools(mcp: FastMCP) -> None:
|
|
|
164
164
|
List pull requests for a GitHub repository.
|
|
165
165
|
|
|
166
166
|
Returns PRs sorted by last updated.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
Use detail_level='summary' (default) to avoid context overflow with large result sets.
|
|
170
|
-
Use get_pr(number) to get full details for specific PRs when needed.
|
|
167
|
+
Use detail_level='summary' (default) to avoid context overflow.
|
|
168
|
+
Use get_prs() to fetch full details for specific PRs.
|
|
171
169
|
"""
|
|
172
170
|
try:
|
|
173
171
|
client = _get_client()
|
|
@@ -286,10 +284,8 @@ def create_github_tools(mcp: FastMCP) -> None:
|
|
|
286
284
|
List commits for a GitHub repository.
|
|
287
285
|
|
|
288
286
|
Returns commits sorted by date (newest first).
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
Use detail_level='summary' (default) to avoid context overflow with large result sets.
|
|
292
|
-
Use get_commit(sha) to get full details for specific commits when needed.
|
|
287
|
+
Use detail_level='summary' (default) to avoid context overflow.
|
|
288
|
+
Use get_commit(sha) for full details on a specific commit.
|
|
293
289
|
"""
|
|
294
290
|
try:
|
|
295
291
|
client = _get_client()
|
|
@@ -393,84 +389,6 @@ def create_github_tools(mcp: FastMCP) -> None:
|
|
|
393
389
|
except Exception as e:
|
|
394
390
|
raise ToolError(f"Failed to list branches: {str(e)}")
|
|
395
391
|
|
|
396
|
-
@mcp.tool(tags={"github", "prs"})
|
|
397
|
-
def search_merged_prs(
|
|
398
|
-
author: Optional[str] = Field(
|
|
399
|
-
default=None,
|
|
400
|
-
description="GitHub username to filter by. Defaults to authenticated user if not specified.",
|
|
401
|
-
),
|
|
402
|
-
days: int = Field(
|
|
403
|
-
default=180,
|
|
404
|
-
description="Number of days to look back (default: 180 for ~6 months)",
|
|
405
|
-
),
|
|
406
|
-
org: Optional[str] = Field(
|
|
407
|
-
default=None,
|
|
408
|
-
description="GitHub org to search within. If not specified, searches all accessible repos.",
|
|
409
|
-
),
|
|
410
|
-
repo: Optional[str] = Field(
|
|
411
|
-
default=None,
|
|
412
|
-
description="Specific repo in 'owner/repo' format (e.g., 'revolving-org/supabase'). Overrides org if specified.",
|
|
413
|
-
),
|
|
414
|
-
limit: int = Field(
|
|
415
|
-
default=100,
|
|
416
|
-
description="Maximum PRs to return (default: 100)",
|
|
417
|
-
),
|
|
418
|
-
detail_level: str = Field(
|
|
419
|
-
default="summary",
|
|
420
|
-
description="'summary' for minimal fields (number, title, merged_at, repo, owner, html_url, author), "
|
|
421
|
-
"'full' adds body and labels. Use 'summary' for large result sets.",
|
|
422
|
-
),
|
|
423
|
-
) -> dict:
|
|
424
|
-
"""
|
|
425
|
-
Search for merged pull requests by author within a time period.
|
|
426
|
-
|
|
427
|
-
NOTE: For appraisals/performance reviews, use prepare_appraisal_data instead!
|
|
428
|
-
It fetches all PRs with full stats in parallel and avoids context overflow.
|
|
429
|
-
|
|
430
|
-
This tool returns basic PR info without stats (additions, deletions).
|
|
431
|
-
Use detail_level='summary' (default) for large result sets.
|
|
432
|
-
|
|
433
|
-
Requires QuickCall authentication with GitHub connected.
|
|
434
|
-
"""
|
|
435
|
-
try:
|
|
436
|
-
client = _get_client()
|
|
437
|
-
|
|
438
|
-
# Calculate since_date from days
|
|
439
|
-
from datetime import datetime, timedelta, timezone
|
|
440
|
-
|
|
441
|
-
since_date = (datetime.now(timezone.utc) - timedelta(days=days)).strftime(
|
|
442
|
-
"%Y-%m-%d"
|
|
443
|
-
)
|
|
444
|
-
|
|
445
|
-
# Use authenticated user if author not specified
|
|
446
|
-
if not author:
|
|
447
|
-
creds = get_credential_store().get_api_credentials()
|
|
448
|
-
if creds and creds.github_username:
|
|
449
|
-
author = creds.github_username
|
|
450
|
-
|
|
451
|
-
prs = client.search_merged_prs(
|
|
452
|
-
author=author,
|
|
453
|
-
since_date=since_date,
|
|
454
|
-
org=org,
|
|
455
|
-
repo=repo,
|
|
456
|
-
limit=limit,
|
|
457
|
-
detail_level=detail_level,
|
|
458
|
-
)
|
|
459
|
-
|
|
460
|
-
return {
|
|
461
|
-
"count": len(prs),
|
|
462
|
-
"detail_level": detail_level,
|
|
463
|
-
"period": f"Last {days} days",
|
|
464
|
-
"author": author,
|
|
465
|
-
"org": org,
|
|
466
|
-
"repo": repo,
|
|
467
|
-
"prs": prs,
|
|
468
|
-
}
|
|
469
|
-
except ToolError:
|
|
470
|
-
raise
|
|
471
|
-
except Exception as e:
|
|
472
|
-
raise ToolError(f"Failed to search merged PRs: {str(e)}")
|
|
473
|
-
|
|
474
392
|
@mcp.tool(tags={"github", "prs", "appraisal"})
|
|
475
393
|
def prepare_appraisal_data(
|
|
476
394
|
author: Optional[str] = Field(
|
|
@@ -491,18 +409,17 @@ def create_github_tools(mcp: FastMCP) -> None:
|
|
|
491
409
|
),
|
|
492
410
|
) -> dict:
|
|
493
411
|
"""
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
USE THIS TOOL FOR APPRAISALS AND PERFORMANCE REVIEWS!
|
|
412
|
+
Fetch all merged PRs for appraisals/performance reviews.
|
|
497
413
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
4. Then use get_appraisal_pr_details(file_path, pr_numbers) for selected PRs
|
|
414
|
+
Returns:
|
|
415
|
+
- file_path: temp file with full PR data (additions, deletions, files)
|
|
416
|
+
- pr_titles: list of {number, title, repo} for Claude to review
|
|
417
|
+
- count: total PRs found
|
|
503
418
|
|
|
504
|
-
|
|
505
|
-
|
|
419
|
+
Workflow:
|
|
420
|
+
1. Call this tool → get file_path and pr_titles
|
|
421
|
+
2. Review pr_titles, pick significant PRs
|
|
422
|
+
3. Call get_appraisal_pr_details(file_path, [pr_numbers]) for full details
|
|
506
423
|
"""
|
|
507
424
|
import json
|
|
508
425
|
import tempfile
|
|
@@ -611,13 +528,12 @@ def create_github_tools(mcp: FastMCP) -> None:
|
|
|
611
528
|
),
|
|
612
529
|
) -> dict:
|
|
613
530
|
"""
|
|
614
|
-
|
|
531
|
+
Read full PR details from the appraisal data file.
|
|
615
532
|
|
|
616
|
-
|
|
617
|
-
|
|
533
|
+
Call this after prepare_appraisal_data with selected PR numbers.
|
|
534
|
+
Reads from the cached file - no API calls made.
|
|
618
535
|
|
|
619
|
-
|
|
620
|
-
that Claude has identified as important for the appraisal.
|
|
536
|
+
Returns: additions, deletions, files changed, body for selected PRs.
|
|
621
537
|
"""
|
|
622
538
|
import json
|
|
623
539
|
|
|
@@ -11,10 +11,10 @@ mcp_server/resources/slack_resources.py,sha256=b_CPxAicwkF3PsBXIat4QoLbDUHM2g_iP
|
|
|
11
11
|
mcp_server/tools/__init__.py,sha256=vIR2ujAaTXm2DgpTsVNz3brI4G34p-Jeg44Qe0uvWc0,405
|
|
12
12
|
mcp_server/tools/auth_tools.py,sha256=kCPjPC1jrVz0XaRAwPea-ue8ybjLLTxyILplBDJ9Mv4,24477
|
|
13
13
|
mcp_server/tools/git_tools.py,sha256=jyCTQR2eSzUFXMt0Y8x66758-VY8YCY14DDUJt7GY2U,13957
|
|
14
|
-
mcp_server/tools/github_tools.py,sha256=
|
|
14
|
+
mcp_server/tools/github_tools.py,sha256=HEp0YoihI3te4l-6bWb-trtQySuCo73-2ZWLc70Of6Y,22531
|
|
15
15
|
mcp_server/tools/slack_tools.py,sha256=-HVE_x3Z1KMeYGi1xhyppEwz5ZF-I-ZD0-Up8yBeoYE,11796
|
|
16
16
|
mcp_server/tools/utility_tools.py,sha256=1WiOpJivu6Ug9OLajm77lzsmFfBPgWHs8e1hNCEX_Aw,3359
|
|
17
|
-
quickcall_integrations-0.3.
|
|
18
|
-
quickcall_integrations-0.3.
|
|
19
|
-
quickcall_integrations-0.3.
|
|
20
|
-
quickcall_integrations-0.3.
|
|
17
|
+
quickcall_integrations-0.3.3.dist-info/METADATA,sha256=fd1nVZVj0hMuDBgCERVn-DQxkWv43Yr3otNZ2oJQ4PE,7043
|
|
18
|
+
quickcall_integrations-0.3.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
19
|
+
quickcall_integrations-0.3.3.dist-info/entry_points.txt,sha256=kkcunmJUzncYvQ1rOR35V2LPm2HcFTKzdI2l3n7NwiM,66
|
|
20
|
+
quickcall_integrations-0.3.3.dist-info/RECORD,,
|
|
File without changes
|
{quickcall_integrations-0.3.1.dist-info → quickcall_integrations-0.3.3.dist-info}/entry_points.txt
RENAMED
|
File without changes
|