quickcall-integrations 0.3.8__tar.gz → 0.3.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. quickcall_integrations-0.3.9/.github/ISSUE_TEMPLATE/bug_report.yml +24 -0
  2. quickcall_integrations-0.3.9/.github/ISSUE_TEMPLATE/feature_request.yml +16 -0
  3. quickcall_integrations-0.3.9/.github/ISSUE_TEMPLATE/task.yml +19 -0
  4. quickcall_integrations-0.3.9/.quickcall-issue-template.yaml +23 -0
  5. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/PKG-INFO +105 -6
  6. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/README.md +104 -5
  7. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/auth_tools.py +30 -13
  8. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/github_tools.py +1 -1
  9. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/.claude-plugin/plugin.json +1 -1
  10. quickcall_integrations-0.3.9/plugins/quickcall/commands/connect-github-pat.md +37 -0
  11. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/pyproject.toml +1 -1
  12. quickcall_integrations-0.3.8/.quickcall-issue-template.yaml +0 -38
  13. quickcall_integrations-0.3.8/plugins/quickcall/commands/connect-github-pat.md +0 -43
  14. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/.claude-plugin/marketplace.json +0 -0
  15. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/.github/workflows/publish-pypi.yml +0 -0
  16. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/.gitignore +0 -0
  17. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/.pre-commit-config.yaml +0 -0
  18. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/Dockerfile +0 -0
  19. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/assets/logo.png +0 -0
  20. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/__init__.py +0 -0
  21. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/api_clients/__init__.py +0 -0
  22. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/api_clients/github_client.py +0 -0
  23. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/api_clients/slack_client.py +0 -0
  24. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/auth/__init__.py +0 -0
  25. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/auth/credentials.py +0 -0
  26. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/auth/device_flow.py +0 -0
  27. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/resources/__init__.py +0 -0
  28. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/resources/github_resources.py +0 -0
  29. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/resources/slack_resources.py +0 -0
  30. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/server.py +0 -0
  31. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/__init__.py +0 -0
  32. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/git_tools.py +0 -0
  33. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/slack_tools.py +0 -0
  34. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/mcp_server/tools/utility_tools.py +0 -0
  35. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/commands/appraisal.md +0 -0
  36. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/commands/connect.md +0 -0
  37. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/commands/slack-summary.md +0 -0
  38. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/commands/status.md +0 -0
  39. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/plugins/quickcall/commands/updates.md +0 -0
  40. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/requirements.txt +0 -0
  41. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/README.md +0 -0
  42. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/appraisal/__init__.py +0 -0
  43. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/appraisal/setup_test_data.py +0 -0
  44. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/test_appraisal_integration.py +0 -0
  45. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/test_appraisal_tools.py +0 -0
  46. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/test_integrations.py +0 -0
  47. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/tests/test_tools.py +0 -0
  48. {quickcall_integrations-0.3.8 → quickcall_integrations-0.3.9}/uv.lock +0 -0
@@ -0,0 +1,24 @@
1
+ name: Bug Report
2
+ description: Report a bug
3
+ labels: [bug]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Description
9
+ description: What happened?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: steps
14
+ attributes:
15
+ label: Steps to Reproduce
16
+ description: How can we reproduce this?
17
+ placeholder: |
18
+ 1. Run '...'
19
+ 2. See error
20
+ - type: textarea
21
+ id: expected
22
+ attributes:
23
+ label: Expected Behavior
24
+ description: What should have happened?
@@ -0,0 +1,16 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature
3
+ labels: [enhancement]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem
9
+ description: What problem does this solve?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: solution
14
+ attributes:
15
+ label: Proposed Solution
16
+ description: How should it work?
@@ -0,0 +1,19 @@
1
+ name: Task
2
+ description: A general task or todo item
3
+ labels: [task]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Description
9
+ description: What needs to be done?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: acceptance
14
+ attributes:
15
+ label: Acceptance Criteria
16
+ description: How do we know it's done?
17
+ placeholder: |
18
+ - [ ] Criteria 1
19
+ - [ ] Criteria 2
@@ -0,0 +1,23 @@
1
+ defaults:
2
+ labels: ["triage"]
3
+ body: |
4
+ ## Description
5
+
6
+ ## Details
7
+
8
+ templates:
9
+ docs:
10
+ labels: ["documentation"]
11
+ title_prefix: "[Docs QC] "
12
+ body: |
13
+ ## Documentation Update
14
+
15
+ ## What needs to be documented?
16
+
17
+ chore:
18
+ labels: ["chore"]
19
+ title_prefix: "[Chore QC] "
20
+ body: |
21
+ ## Task
22
+
23
+ ## Why is this needed?
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quickcall-integrations
3
- Version: 0.3.8
3
+ Version: 0.3.9
4
4
  Summary: MCP server with developer integrations for Claude Code and Cursor
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: fastmcp>=2.13.0
@@ -90,7 +90,7 @@ Add to MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
90
90
  | **Slack** | Read/send messages, threads, channels | Yes |
91
91
 
92
92
  <details>
93
- <summary><strong>Available Tools (23)</strong></summary>
93
+ <summary><strong>Available Tools (24)</strong></summary>
94
94
 
95
95
  ### Git
96
96
  | Tool | Description |
@@ -102,10 +102,11 @@ Add to MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
102
102
  |------|-------------|
103
103
  | `list_repos` | List accessible repositories |
104
104
  | `list_prs` | List pull requests (open/closed/all) |
105
- | `get_pr` | Get PR details (title, description, files changed) |
105
+ | `get_prs` | Get PR details (title, description, files changed) |
106
106
  | `list_commits` | List commits with optional filters |
107
107
  | `get_commit` | Get commit details (message, stats, files) |
108
108
  | `list_branches` | List repository branches |
109
+ | `manage_issues` | List, view, create, update, close, reopen, comment on issues + sub-issues |
109
110
  | `check_github_connection` | Verify GitHub connection |
110
111
 
111
112
  ### Slack
@@ -172,9 +173,13 @@ GITHUB_USERNAME=your-username # Optional: for better UX
172
173
 
173
174
  **Create a PAT at:** https://github.com/settings/tokens
174
175
 
175
- **Required scopes:**
176
- - `repo` - Full access to private repositories
177
- - `public_repo` - Access to public repositories only (if you don't need private repos)
176
+ **Required scopes (classic PAT):**
177
+
178
+ | Scope | Used For |
179
+ |-------|----------|
180
+ | `project` | GitHub Projects access |
181
+ | `read:user` | Read user profile data |
182
+ | `repo` | PRs, commits, branches, issues |
178
183
 
179
184
  **Note:** PAT mode provides access to GitHub tools only. For Slack integration, use QuickCall authentication.
180
185
 
@@ -228,6 +233,100 @@ List open PRs on [repo] and send titles to #updates channel
228
233
  What did I work on this week? Send summary to #standup
229
234
  ```
230
235
 
236
+ ## Issue Management
237
+
238
+ The `manage_issues` tool provides full issue lifecycle management:
239
+
240
+ ### Actions
241
+
242
+ | Action | Description |
243
+ |--------|-------------|
244
+ | `list` | List issues with filters |
245
+ | `view` | View issue details |
246
+ | `create` | Create new issue (with optional template) |
247
+ | `update` | Update issue title/body/labels |
248
+ | `close` | Close issue(s) |
249
+ | `reopen` | Reopen issue(s) |
250
+ | `comment` | Add comment to issue(s) |
251
+ | `add_sub_issue` | Add child issue to parent |
252
+ | `remove_sub_issue` | Remove child from parent |
253
+ | `list_sub_issues` | List sub-issues of a parent |
254
+
255
+ ### List Filters
256
+
257
+ | Filter | Description |
258
+ |--------|-------------|
259
+ | `state` | `'open'`, `'closed'`, or `'all'` (default: `'open'`) |
260
+ | `labels` | Filter by one or more labels |
261
+ | `assignees` | Filter by assignee |
262
+ | `creator` | Filter by issue creator username |
263
+ | `milestone` | Filter by milestone: number, title, `'*'` (any), or `'none'` |
264
+ | `sort` | Sort by: `'created'`, `'updated'`, or `'comments'` (default: `'updated'`) |
265
+ | `limit` | Max issues to return (default: 30) |
266
+
267
+ **Examples:**
268
+ ```
269
+ List open issues in milestone v1.0
270
+ List issues created by sagar
271
+ Show closed bugs sorted by comments
272
+ List issues without a milestone
273
+ ```
274
+
275
+ ### Issue Templates
276
+
277
+ QuickCall supports issue templates from two sources:
278
+
279
+ **1. GitHub Native Templates** (`.github/ISSUE_TEMPLATE/*.yml`)
280
+
281
+ Standard GitHub issue templates are automatically detected:
282
+ ```yaml
283
+ # .github/ISSUE_TEMPLATE/bug_report.yml
284
+ name: Bug Report
285
+ description: Report a bug
286
+ labels: [bug]
287
+ body:
288
+ - type: textarea
289
+ attributes:
290
+ label: Description
291
+ ```
292
+
293
+ **2. Custom Templates** (`.quickcall.env`)
294
+
295
+ Define custom templates in your project config:
296
+ ```bash
297
+ # .quickcall.env
298
+ ISSUE_TEMPLATE_PATH=/path/to/templates.yml
299
+ ```
300
+
301
+ ```yaml
302
+ # templates.yml
303
+ bug_report:
304
+ name: Bug Report
305
+ description: Report a bug
306
+ labels: [bug]
307
+ title_prefix: "[BUG] "
308
+ body: |
309
+ ## Description
310
+
311
+ ## Steps to Reproduce
312
+
313
+ ## Expected Behavior
314
+
315
+ feature_request:
316
+ name: Feature Request
317
+ labels: [enhancement]
318
+ body: |
319
+ ## Problem
320
+
321
+ ## Proposed Solution
322
+ ```
323
+
324
+ **Usage:**
325
+ ```
326
+ Create a bug report issue titled "Login fails on Safari"
327
+ Create issue with feature_request template
328
+ ```
329
+
231
330
  ## Troubleshooting
232
331
 
233
332
  ### Clean Reinstall
@@ -77,7 +77,7 @@ Add to MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
77
77
  | **Slack** | Read/send messages, threads, channels | Yes |
78
78
 
79
79
  <details>
80
- <summary><strong>Available Tools (23)</strong></summary>
80
+ <summary><strong>Available Tools (24)</strong></summary>
81
81
 
82
82
  ### Git
83
83
  | Tool | Description |
@@ -89,10 +89,11 @@ Add to MCP config (`~/.cursor/mcp.json` or `.cursor/mcp.json`):
89
89
  |------|-------------|
90
90
  | `list_repos` | List accessible repositories |
91
91
  | `list_prs` | List pull requests (open/closed/all) |
92
- | `get_pr` | Get PR details (title, description, files changed) |
92
+ | `get_prs` | Get PR details (title, description, files changed) |
93
93
  | `list_commits` | List commits with optional filters |
94
94
  | `get_commit` | Get commit details (message, stats, files) |
95
95
  | `list_branches` | List repository branches |
96
+ | `manage_issues` | List, view, create, update, close, reopen, comment on issues + sub-issues |
96
97
  | `check_github_connection` | Verify GitHub connection |
97
98
 
98
99
  ### Slack
@@ -159,9 +160,13 @@ GITHUB_USERNAME=your-username # Optional: for better UX
159
160
 
160
161
  **Create a PAT at:** https://github.com/settings/tokens
161
162
 
162
- **Required scopes:**
163
- - `repo` - Full access to private repositories
164
- - `public_repo` - Access to public repositories only (if you don't need private repos)
163
+ **Required scopes (classic PAT):**
164
+
165
+ | Scope | Used For |
166
+ |-------|----------|
167
+ | `project` | GitHub Projects access |
168
+ | `read:user` | Read user profile data |
169
+ | `repo` | PRs, commits, branches, issues |
165
170
 
166
171
  **Note:** PAT mode provides access to GitHub tools only. For Slack integration, use QuickCall authentication.
167
172
 
@@ -215,6 +220,100 @@ List open PRs on [repo] and send titles to #updates channel
215
220
  What did I work on this week? Send summary to #standup
216
221
  ```
217
222
 
223
+ ## Issue Management
224
+
225
+ The `manage_issues` tool provides full issue lifecycle management:
226
+
227
+ ### Actions
228
+
229
+ | Action | Description |
230
+ |--------|-------------|
231
+ | `list` | List issues with filters |
232
+ | `view` | View issue details |
233
+ | `create` | Create new issue (with optional template) |
234
+ | `update` | Update issue title/body/labels |
235
+ | `close` | Close issue(s) |
236
+ | `reopen` | Reopen issue(s) |
237
+ | `comment` | Add comment to issue(s) |
238
+ | `add_sub_issue` | Add child issue to parent |
239
+ | `remove_sub_issue` | Remove child from parent |
240
+ | `list_sub_issues` | List sub-issues of a parent |
241
+
242
+ ### List Filters
243
+
244
+ | Filter | Description |
245
+ |--------|-------------|
246
+ | `state` | `'open'`, `'closed'`, or `'all'` (default: `'open'`) |
247
+ | `labels` | Filter by one or more labels |
248
+ | `assignees` | Filter by assignee |
249
+ | `creator` | Filter by issue creator username |
250
+ | `milestone` | Filter by milestone: number, title, `'*'` (any), or `'none'` |
251
+ | `sort` | Sort by: `'created'`, `'updated'`, or `'comments'` (default: `'updated'`) |
252
+ | `limit` | Max issues to return (default: 30) |
253
+
254
+ **Examples:**
255
+ ```
256
+ List open issues in milestone v1.0
257
+ List issues created by sagar
258
+ Show closed bugs sorted by comments
259
+ List issues without a milestone
260
+ ```
261
+
262
+ ### Issue Templates
263
+
264
+ QuickCall supports issue templates from two sources:
265
+
266
+ **1. GitHub Native Templates** (`.github/ISSUE_TEMPLATE/*.yml`)
267
+
268
+ Standard GitHub issue templates are automatically detected:
269
+ ```yaml
270
+ # .github/ISSUE_TEMPLATE/bug_report.yml
271
+ name: Bug Report
272
+ description: Report a bug
273
+ labels: [bug]
274
+ body:
275
+ - type: textarea
276
+ attributes:
277
+ label: Description
278
+ ```
279
+
280
+ **2. Custom Templates** (`.quickcall.env`)
281
+
282
+ Define custom templates in your project config:
283
+ ```bash
284
+ # .quickcall.env
285
+ ISSUE_TEMPLATE_PATH=/path/to/templates.yml
286
+ ```
287
+
288
+ ```yaml
289
+ # templates.yml
290
+ bug_report:
291
+ name: Bug Report
292
+ description: Report a bug
293
+ labels: [bug]
294
+ title_prefix: "[BUG] "
295
+ body: |
296
+ ## Description
297
+
298
+ ## Steps to Reproduce
299
+
300
+ ## Expected Behavior
301
+
302
+ feature_request:
303
+ name: Feature Request
304
+ labels: [enhancement]
305
+ body: |
306
+ ## Problem
307
+
308
+ ## Proposed Solution
309
+ ```
310
+
311
+ **Usage:**
312
+ ```
313
+ Create a bug report issue titled "Login fails on Safari"
314
+ Create issue with feature_request template
315
+ ```
316
+
218
317
  ## Troubleshooting
219
318
 
220
319
  ### Clean Reinstall
@@ -10,7 +10,7 @@ Also provides GitHub PAT authentication for users who can't install the GitHub A
10
10
  import os
11
11
  import logging
12
12
  import webbrowser
13
- from typing import Dict, Any
13
+ from typing import Dict, Any, Optional
14
14
 
15
15
  import httpx
16
16
  from github import Github, Auth, GithubException
@@ -20,6 +20,7 @@ from pydantic import Field
20
20
  from mcp_server.auth import (
21
21
  get_credential_store,
22
22
  DeviceFlowAuth,
23
+ get_github_pat,
23
24
  )
24
25
 
25
26
  logger = logging.getLogger(__name__)
@@ -532,9 +533,10 @@ def create_auth_tools(mcp: FastMCP):
532
533
 
533
534
  @mcp.tool(tags={"auth", "github"})
534
535
  def connect_github_via_pat(
535
- token: str = Field(
536
- ...,
537
- description="GitHub Personal Access Token (ghp_xxx or github_pat_xxx)",
536
+ token: Optional[str] = Field(
537
+ default=None,
538
+ description="GitHub Personal Access Token (ghp_xxx or github_pat_xxx). "
539
+ "If not provided, auto-detects from .quickcall.env or GITHUB_TOKEN env var.",
538
540
  ),
539
541
  ) -> Dict[str, Any]:
540
542
  """
@@ -543,17 +545,13 @@ def create_auth_tools(mcp: FastMCP):
543
545
  Use this if your organization can't install the QuickCall GitHub App.
544
546
  This is an alternative to the standard connect_github flow.
545
547
 
546
- This command:
547
- 1. Validates your PAT by calling GitHub API
548
- 2. Auto-detects your GitHub username
549
- 3. Stores the PAT securely in ~/.quickcall/credentials.json
550
-
551
- After connecting, you can use GitHub tools like list_repos, list_prs, etc.
548
+ Token auto-detection locations (in order):
549
+ 1. GITHUB_TOKEN or GITHUB_PAT environment variable
550
+ 2. .quickcall.env in your project root (where .git is)
551
+ 3. ~/.quickcall.env in your home directory
552
552
 
553
553
  Create a PAT at: https://github.com/settings/tokens
554
- Required scopes:
555
- - repo (full access to private repos)
556
- - OR public_repo (public repos only)
554
+ Required scopes (classic PAT): project, read:user, repo
557
555
 
558
556
  Note: PAT mode works independently of QuickCall. You don't need
559
557
  to run connect_quickcall first. However, Slack tools still require
@@ -571,11 +569,29 @@ def create_auth_tools(mcp: FastMCP):
571
569
  "hint": "Use disconnect_github_pat to remove it, then connect again with a new token.",
572
570
  }
573
571
 
572
+ # Auto-detect token if not provided
573
+ token_source = "provided directly"
574
+ if not token:
575
+ token, token_source = get_github_pat()
576
+ if not token:
577
+ return {
578
+ "status": "error",
579
+ "message": "No token provided and none found automatically.",
580
+ "searched_locations": [
581
+ "GITHUB_TOKEN / GITHUB_PAT environment variables",
582
+ ".quickcall.env in project root (where .git is located)",
583
+ "~/.quickcall.env in home directory",
584
+ ],
585
+ "hint": "Either provide the token directly, set GITHUB_TOKEN env var, "
586
+ "or create .quickcall.env with GITHUB_TOKEN=ghp_xxx",
587
+ }
588
+
574
589
  # Validate token format
575
590
  if not token.startswith(("ghp_", "github_pat_")):
576
591
  return {
577
592
  "status": "error",
578
593
  "message": "Invalid token format. GitHub PATs start with 'ghp_' or 'github_pat_'",
594
+ "token_source": token_source,
579
595
  "hint": "Create a new token at https://github.com/settings/tokens",
580
596
  }
581
597
 
@@ -619,6 +635,7 @@ def create_auth_tools(mcp: FastMCP):
619
635
  "message": f"Successfully connected GitHub as {username}!",
620
636
  "username": username,
621
637
  "mode": "pat",
638
+ "token_source": token_source,
622
639
  "hint": "You can now use GitHub tools. Run check_github_connection to verify.",
623
640
  }
624
641
 
@@ -270,7 +270,7 @@ def _get_client() -> GitHubClient:
270
270
  "2. Run connect_quickcall to use QuickCall (GitHub App + Slack)\n"
271
271
  "3. Set GITHUB_TOKEN environment variable\n\n"
272
272
  "For PAT: Create token at https://github.com/settings/tokens\n"
273
- "Required scopes: repo (private) or public_repo (public only)"
273
+ "Required scopes (classic PAT): project, read:user, repo"
274
274
  )
275
275
 
276
276
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quickcall",
3
3
  "description": "Integrate quickcall into dev workflows - eliminate interruptions for developers. Ask about your work, get instant answers. No more context switching.",
4
- "version": "0.6.7",
4
+ "version": "0.6.8",
5
5
  "author": {
6
6
  "name": "Sagar Sarkale"
7
7
  }
@@ -0,0 +1,37 @@
1
+ ---
2
+ description: Connect GitHub using a Personal Access Token (for enterprise users)
3
+ ---
4
+
5
+ # Connect GitHub via PAT
6
+
7
+ Use this if your organization can't install the QuickCall GitHub App.
8
+
9
+ ## Steps
10
+
11
+ 1. **Call `connect_github_via_pat` (no arguments needed):**
12
+ - The tool auto-detects tokens from these locations (in order):
13
+ 1. `GITHUB_TOKEN` or `GITHUB_PAT` environment variable
14
+ 2. `.quickcall.env` in project root (where `.git` is located)
15
+ 3. `~/.quickcall.env` in home directory
16
+ - If a token is found, it validates and connects automatically
17
+ - If no token is found, it returns an error with helpful instructions
18
+
19
+ 2. **If no token found automatically:**
20
+ - Ask the user for their GitHub Personal Access Token
21
+ - Remind them: "Create a PAT at https://github.com/settings/tokens with scopes: project, read:user, repo"
22
+ - Or suggest: "Create a `.quickcall.env` file in your project root with `GITHUB_TOKEN=ghp_xxx`"
23
+ - Call `connect_github_via_pat` with the provided token
24
+
25
+ 3. **Show result:**
26
+ ```
27
+ GitHub connected via PAT!
28
+ Username: {username}
29
+ Token source: {token_source}
30
+ ```
31
+
32
+ ## Notes
33
+
34
+ - PAT mode works independently of QuickCall
35
+ - Slack tools still require QuickCall authentication (`/quickcall:connect`)
36
+ - To disconnect PAT: call `disconnect_github_pat`
37
+ - The `.quickcall.env` file should NOT be committed to git (it contains secrets)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "quickcall-integrations"
3
- version = "0.3.8"
3
+ version = "0.3.9"
4
4
  description = "MCP server with developer integrations for Claude Code and Cursor"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,38 +0,0 @@
1
- defaults:
2
- labels: ["triage"]
3
- body: |
4
- ## Description
5
-
6
- ## Details
7
-
8
- templates:
9
- bug:
10
- labels: ["bug", "triage"]
11
- body: |
12
- ## Bug Description
13
-
14
- ## Steps to Reproduce
15
- 1.
16
- 2.
17
-
18
- ## Expected Behavior
19
-
20
- ## Actual Behavior
21
-
22
- feature:
23
- labels: ["enhancement"]
24
- body: |
25
- ## Feature Request
26
-
27
- ## Problem Statement
28
-
29
- ## Proposed Solution
30
-
31
- ## Alternatives Considered
32
-
33
- docs:
34
- labels: ["documentation"]
35
- body: |
36
- ## Documentation Update
37
-
38
- ## What needs to be documented?
@@ -1,43 +0,0 @@
1
- ---
2
- description: Connect GitHub using a Personal Access Token (for enterprise users)
3
- ---
4
-
5
- # Connect GitHub via PAT
6
-
7
- Use this if your organization can't install the QuickCall GitHub App.
8
-
9
- ## Steps
10
-
11
- 1. **Check if PAT already configured:**
12
- - Call `check_quickcall_status`
13
- - If `github_pat.configured` is true, inform user and ask if they want to reconnect
14
-
15
- 2. **Auto-detect PAT from .quickcall.env (IMPORTANT):**
16
- - Use the Read tool to check if `.quickcall.env` exists in the current project directory
17
- - If found, read it and look for `GITHUB_TOKEN=...` or `GITHUB_PAT=...`
18
- - If a token is found in the file, use it automatically (do NOT ask the user)
19
- - Also check `~/.quickcall.env` if not found in project root
20
-
21
- 3. **Get PAT from user (only if not found in .quickcall.env):**
22
- - If no token was found in config files, ask the user for their GitHub Personal Access Token
23
- - Remind them: "Create a PAT at https://github.com/settings/tokens with `repo` scope"
24
- - Or suggest: "You can also create a `.quickcall.env` file with `GITHUB_TOKEN=your_token`"
25
-
26
- 4. **Connect:**
27
- - Call `connect_github_via_pat` with the token (from file or user input)
28
- - The tool validates the token and auto-detects username
29
-
30
- 5. **Show result:**
31
- ```
32
- GitHub connected via PAT!
33
- Username: {username}
34
- Mode: Personal Access Token
35
- Source: .quickcall.env (or "manually provided")
36
- ```
37
-
38
- ## Notes
39
-
40
- - PAT mode works independently of QuickCall
41
- - Slack tools still require QuickCall authentication (`/quickcall:connect`)
42
- - To disconnect PAT: call `disconnect_github_pat`
43
- - The `.quickcall.env` file should NOT be committed to git (it contains secrets)