quickcall-integrations 0.1.5__tar.gz → 0.1.7__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 (38) hide show
  1. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/.gitignore +4 -0
  2. quickcall_integrations-0.1.7/PKG-INFO +238 -0
  3. quickcall_integrations-0.1.7/README.md +226 -0
  4. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/__init__.py +1 -1
  5. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/api_clients/github_client.py +26 -4
  6. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/api_clients/slack_client.py +189 -9
  7. quickcall_integrations-0.1.7/mcp_server/resources/__init__.py +1 -0
  8. quickcall_integrations-0.1.7/mcp_server/resources/slack_resources.py +50 -0
  9. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/server.py +4 -0
  10. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/auth_tools.py +87 -3
  11. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/slack_tools.py +159 -3
  12. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/plugins/quickcall/.claude-plugin/plugin.json +1 -1
  13. quickcall_integrations-0.1.7/plugins/quickcall/commands/connect.md +31 -0
  14. quickcall_integrations-0.1.7/plugins/quickcall/commands/slack-summary.md +56 -0
  15. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/pyproject.toml +2 -1
  16. quickcall_integrations-0.1.5/tests/test_auth_flow.py → quickcall_integrations-0.1.7/tests/test_integrations.py +139 -7
  17. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/uv.lock +93 -1
  18. quickcall_integrations-0.1.5/PKG-INFO +0 -128
  19. quickcall_integrations-0.1.5/README.md +0 -117
  20. quickcall_integrations-0.1.5/plugins/quickcall/.mcp.json +0 -8
  21. quickcall_integrations-0.1.5/plugins/quickcall/commands/connect.md +0 -37
  22. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/.claude-plugin/marketplace.json +0 -0
  23. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/.github/workflows/publish-pypi.yml +0 -0
  24. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/Dockerfile +0 -0
  25. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/assets/logo.png +0 -0
  26. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/api_clients/__init__.py +0 -0
  27. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/auth/__init__.py +0 -0
  28. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/auth/credentials.py +0 -0
  29. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/auth/device_flow.py +0 -0
  30. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/__init__.py +0 -0
  31. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/git_tools.py +0 -0
  32. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/github_tools.py +0 -0
  33. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/mcp_server/tools/utility_tools.py +0 -0
  34. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/plugins/quickcall/commands/status.md +0 -0
  35. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/plugins/quickcall/commands/updates.md +0 -0
  36. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/requirements.txt +0 -0
  37. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/tests/README.md +0 -0
  38. {quickcall_integrations-0.1.5 → quickcall_integrations-0.1.7}/tests/test_tools.py +0 -0
@@ -1,4 +1,8 @@
1
1
  internal-docs/
2
+
3
+ # Local MCP config (for dev testing - not committed)
4
+ .mcp.json
5
+
2
6
  # Secrets and environment
3
7
  secrets/
4
8
  *.env
@@ -0,0 +1,238 @@
1
+ Metadata-Version: 2.4
2
+ Name: quickcall-integrations
3
+ Version: 0.1.7
4
+ Summary: MCP server with developer integrations for Claude Code and Cursor
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: fastmcp>=2.13.0
7
+ Requires-Dist: httpx>=0.28.0
8
+ Requires-Dist: pydantic>=2.11.7
9
+ Requires-Dist: pygithub>=2.8.1
10
+ Requires-Dist: rapidfuzz>=3.0.0
11
+ Description-Content-Type: text/markdown
12
+
13
+ <p align="center">
14
+ <img src="https://quickcall.dev/assets/v1/qc-full-512px-white.png" alt="QuickCall" width="400">
15
+ </p>
16
+
17
+ <h3 align="center">Eliminate interruptions for developers</h3>
18
+
19
+ <p align="center">
20
+ <em>Ask about your work, get instant answers. No more context switching.</em>
21
+ </p>
22
+
23
+ <p align="center">
24
+ <a href="https://quickcall.dev"><img src="https://img.shields.io/badge/Web-quickcall.dev-000000?logo=googlechrome&logoColor=white" alt="Web"></a>
25
+ <a href="https://discord.gg/DtnMxuE35v"><img src="https://img.shields.io/badge/Discord-Join%20Us-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
26
+ </p>
27
+
28
+ <p align="center">
29
+ <a href="#integrations">Integrations</a> |
30
+ <a href="#install">Install</a> |
31
+ <a href="#authentication">Authentication</a> |
32
+ <a href="#commands">Commands</a> |
33
+ <a href="#troubleshooting">Troubleshooting</a>
34
+ </p>
35
+
36
+ ---
37
+
38
+ ## Capabilities
39
+
40
+ - **Get standup updates** from git history (commits, diffs, stats)
41
+ - **List PRs, commits, branches** from GitHub repos
42
+ - **Send messages to Slack** channels
43
+ - **Check connection status** for all integrations
44
+
45
+ ## Integrations
46
+
47
+ | Integration | Features | Auth Required |
48
+ |-------------|----------|---------------|
49
+ | **Git** | Commits, diffs, standup summaries | No |
50
+ | **GitHub** | Repos, PRs, commits, branches | Yes |
51
+ | **Slack** | Read/send messages, threads, channels | Yes |
52
+
53
+ <details>
54
+ <summary><strong>Available Tools (22)</strong></summary>
55
+
56
+ ### Git
57
+ | Tool | Description |
58
+ |------|-------------|
59
+ | `get_updates` | Get git commits, diff stats, and uncommitted changes |
60
+
61
+ ### GitHub
62
+ | Tool | Description |
63
+ |------|-------------|
64
+ | `list_repos` | List accessible repositories |
65
+ | `list_prs` | List pull requests (open/closed/all) |
66
+ | `get_pr` | Get PR details (title, description, files changed) |
67
+ | `list_commits` | List commits with optional filters |
68
+ | `get_commit` | Get commit details (message, stats, files) |
69
+ | `list_branches` | List repository branches |
70
+ | `check_github_connection` | Verify GitHub connection |
71
+
72
+ ### Slack
73
+ | Tool | Description |
74
+ |------|-------------|
75
+ | `list_slack_channels` | List channels bot has access to |
76
+ | `send_slack_message` | Send message to a channel |
77
+ | `read_slack_messages` | Read messages from a channel (with date filter) |
78
+ | `read_slack_thread` | Read replies in a thread |
79
+ | `list_slack_users` | List workspace users |
80
+ | `check_slack_connection` | Verify Slack connection |
81
+
82
+ ### Auth
83
+ | Tool | Description |
84
+ |------|-------------|
85
+ | `connect_quickcall` | Start device flow authentication |
86
+ | `check_quickcall_status` | Check connection status |
87
+ | `disconnect_quickcall` | Remove local credentials |
88
+ | `connect_github` | Install GitHub App |
89
+ | `connect_slack` | Authorize Slack App |
90
+
91
+ ### Utility
92
+ | Tool | Description |
93
+ |------|-------------|
94
+ | `get_current_datetime` | Get current UTC datetime |
95
+ | `calculate_date_range` | Calculate date range for queries |
96
+ | `calculate_date_offset` | Add/subtract time from a date |
97
+
98
+ </details>
99
+
100
+ ## Install
101
+
102
+ ### Claude Code
103
+
104
+ ```
105
+ /plugin marketplace add quickcall-dev/quickcall-integrations
106
+ /plugin install quickcall@quickcall-integrations
107
+ ```
108
+
109
+ <details>
110
+ <summary>MCP only (without plugin)</summary>
111
+
112
+ ```bash
113
+ claude mcp add quickcall -- uvx quickcall-integrations
114
+ ```
115
+ </details>
116
+
117
+ <details>
118
+ <summary>Update to latest version</summary>
119
+
120
+ ```
121
+ /plugin marketplace update quickcall-integrations
122
+ /plugin uninstall quickcall
123
+ /plugin install quickcall@quickcall-integrations
124
+ ```
125
+
126
+ After updating, restart Claude Code or open a new terminal.
127
+ </details>
128
+
129
+ ### Cursor
130
+
131
+ Add to your Cursor MCP config (`~/.cursor/mcp.json` for global, or `.cursor/mcp.json` for project):
132
+
133
+ ```json
134
+ {
135
+ "mcpServers": {
136
+ "quickcall": {
137
+ "command": "uvx",
138
+ "args": ["quickcall-integrations"]
139
+ }
140
+ }
141
+ }
142
+ ```
143
+
144
+ Then restart Cursor.
145
+
146
+ > Also works with [Antigravity](https://antigravity.dev) and any other IDE that supports MCP servers.
147
+
148
+ ## Authentication
149
+
150
+ To use GitHub and Slack integrations, connect your QuickCall account:
151
+
152
+ ```
153
+ /quickcall:connect
154
+ ```
155
+
156
+ This will guide you through:
157
+ 1. Sign in with Google
158
+ 2. Install GitHub App to your org/account
159
+ 3. Connect Slack workspace
160
+
161
+ Credentials are stored locally in `~/.quickcall/credentials.json`.
162
+
163
+ ## Commands
164
+
165
+ ### Claude Code
166
+
167
+ | Command | Description |
168
+ |---------|-------------|
169
+ | `/quickcall:connect` | Connect QuickCall, GitHub, and Slack |
170
+ | `/quickcall:status` | Show connection status |
171
+ | `/quickcall:updates` | Get git updates (default: 1 day) |
172
+ | `/quickcall:updates 7d` | Get updates for last 7 days |
173
+
174
+ ### Cursor / Other IDEs
175
+
176
+ Ask the AI naturally - see examples below.
177
+
178
+ ## Example Prompts
179
+
180
+ ### Git
181
+ ```
182
+ What did I work on today?
183
+ Give me a standup summary for the last 3 days
184
+ What changes are uncommitted?
185
+ ```
186
+
187
+ ### GitHub
188
+ ```
189
+ List my repos
190
+ Show open PRs on [repo-name]
191
+ What commits were made this week?
192
+ Get details of PR #123
193
+ List branches on [repo-name]
194
+ ```
195
+
196
+ ### Slack
197
+ ```
198
+ Send "Build completed" to #deployments
199
+ What messages were posted in #general today?
200
+ Show me the thread replies for that message
201
+ List channels I have access to
202
+ ```
203
+
204
+ ### Combined
205
+ ```
206
+ List open PRs on [repo] and send titles to #updates channel
207
+ What did I work on this week? Send summary to #standup
208
+ ```
209
+
210
+ ## Troubleshooting
211
+
212
+ ### Plugin Not Updating?
213
+
214
+ If new commands don't appear after updating, clear the cache:
215
+
216
+ ```bash
217
+ rm -rf ~/.claude/plugins/cache/quickcall-integrations
218
+ rm -rf ~/.claude/plugins/marketplaces/quickcall-integrations
219
+ ```
220
+
221
+ Then restart Claude Code and reinstall:
222
+
223
+ ```
224
+ /plugin marketplace add quickcall-dev/quickcall-integrations
225
+ /plugin install quickcall@quickcall-integrations
226
+ ```
227
+
228
+ ### Commands Not Showing?
229
+
230
+ Type `/quickcall:` - you should see `connect`, `status`, `updates`.
231
+
232
+ If only `updates` shows, run the cleanup above and reinstall.
233
+
234
+ ---
235
+
236
+ <p align="center">
237
+ Built with ❤️ by <a href="https://quickcall.dev">QuickCall</a>
238
+ </p>
@@ -0,0 +1,226 @@
1
+ <p align="center">
2
+ <img src="https://quickcall.dev/assets/v1/qc-full-512px-white.png" alt="QuickCall" width="400">
3
+ </p>
4
+
5
+ <h3 align="center">Eliminate interruptions for developers</h3>
6
+
7
+ <p align="center">
8
+ <em>Ask about your work, get instant answers. No more context switching.</em>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://quickcall.dev"><img src="https://img.shields.io/badge/Web-quickcall.dev-000000?logo=googlechrome&logoColor=white" alt="Web"></a>
13
+ <a href="https://discord.gg/DtnMxuE35v"><img src="https://img.shields.io/badge/Discord-Join%20Us-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="#integrations">Integrations</a> |
18
+ <a href="#install">Install</a> |
19
+ <a href="#authentication">Authentication</a> |
20
+ <a href="#commands">Commands</a> |
21
+ <a href="#troubleshooting">Troubleshooting</a>
22
+ </p>
23
+
24
+ ---
25
+
26
+ ## Capabilities
27
+
28
+ - **Get standup updates** from git history (commits, diffs, stats)
29
+ - **List PRs, commits, branches** from GitHub repos
30
+ - **Send messages to Slack** channels
31
+ - **Check connection status** for all integrations
32
+
33
+ ## Integrations
34
+
35
+ | Integration | Features | Auth Required |
36
+ |-------------|----------|---------------|
37
+ | **Git** | Commits, diffs, standup summaries | No |
38
+ | **GitHub** | Repos, PRs, commits, branches | Yes |
39
+ | **Slack** | Read/send messages, threads, channels | Yes |
40
+
41
+ <details>
42
+ <summary><strong>Available Tools (22)</strong></summary>
43
+
44
+ ### Git
45
+ | Tool | Description |
46
+ |------|-------------|
47
+ | `get_updates` | Get git commits, diff stats, and uncommitted changes |
48
+
49
+ ### GitHub
50
+ | Tool | Description |
51
+ |------|-------------|
52
+ | `list_repos` | List accessible repositories |
53
+ | `list_prs` | List pull requests (open/closed/all) |
54
+ | `get_pr` | Get PR details (title, description, files changed) |
55
+ | `list_commits` | List commits with optional filters |
56
+ | `get_commit` | Get commit details (message, stats, files) |
57
+ | `list_branches` | List repository branches |
58
+ | `check_github_connection` | Verify GitHub connection |
59
+
60
+ ### Slack
61
+ | Tool | Description |
62
+ |------|-------------|
63
+ | `list_slack_channels` | List channels bot has access to |
64
+ | `send_slack_message` | Send message to a channel |
65
+ | `read_slack_messages` | Read messages from a channel (with date filter) |
66
+ | `read_slack_thread` | Read replies in a thread |
67
+ | `list_slack_users` | List workspace users |
68
+ | `check_slack_connection` | Verify Slack connection |
69
+
70
+ ### Auth
71
+ | Tool | Description |
72
+ |------|-------------|
73
+ | `connect_quickcall` | Start device flow authentication |
74
+ | `check_quickcall_status` | Check connection status |
75
+ | `disconnect_quickcall` | Remove local credentials |
76
+ | `connect_github` | Install GitHub App |
77
+ | `connect_slack` | Authorize Slack App |
78
+
79
+ ### Utility
80
+ | Tool | Description |
81
+ |------|-------------|
82
+ | `get_current_datetime` | Get current UTC datetime |
83
+ | `calculate_date_range` | Calculate date range for queries |
84
+ | `calculate_date_offset` | Add/subtract time from a date |
85
+
86
+ </details>
87
+
88
+ ## Install
89
+
90
+ ### Claude Code
91
+
92
+ ```
93
+ /plugin marketplace add quickcall-dev/quickcall-integrations
94
+ /plugin install quickcall@quickcall-integrations
95
+ ```
96
+
97
+ <details>
98
+ <summary>MCP only (without plugin)</summary>
99
+
100
+ ```bash
101
+ claude mcp add quickcall -- uvx quickcall-integrations
102
+ ```
103
+ </details>
104
+
105
+ <details>
106
+ <summary>Update to latest version</summary>
107
+
108
+ ```
109
+ /plugin marketplace update quickcall-integrations
110
+ /plugin uninstall quickcall
111
+ /plugin install quickcall@quickcall-integrations
112
+ ```
113
+
114
+ After updating, restart Claude Code or open a new terminal.
115
+ </details>
116
+
117
+ ### Cursor
118
+
119
+ Add to your Cursor MCP config (`~/.cursor/mcp.json` for global, or `.cursor/mcp.json` for project):
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "quickcall": {
125
+ "command": "uvx",
126
+ "args": ["quickcall-integrations"]
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ Then restart Cursor.
133
+
134
+ > Also works with [Antigravity](https://antigravity.dev) and any other IDE that supports MCP servers.
135
+
136
+ ## Authentication
137
+
138
+ To use GitHub and Slack integrations, connect your QuickCall account:
139
+
140
+ ```
141
+ /quickcall:connect
142
+ ```
143
+
144
+ This will guide you through:
145
+ 1. Sign in with Google
146
+ 2. Install GitHub App to your org/account
147
+ 3. Connect Slack workspace
148
+
149
+ Credentials are stored locally in `~/.quickcall/credentials.json`.
150
+
151
+ ## Commands
152
+
153
+ ### Claude Code
154
+
155
+ | Command | Description |
156
+ |---------|-------------|
157
+ | `/quickcall:connect` | Connect QuickCall, GitHub, and Slack |
158
+ | `/quickcall:status` | Show connection status |
159
+ | `/quickcall:updates` | Get git updates (default: 1 day) |
160
+ | `/quickcall:updates 7d` | Get updates for last 7 days |
161
+
162
+ ### Cursor / Other IDEs
163
+
164
+ Ask the AI naturally - see examples below.
165
+
166
+ ## Example Prompts
167
+
168
+ ### Git
169
+ ```
170
+ What did I work on today?
171
+ Give me a standup summary for the last 3 days
172
+ What changes are uncommitted?
173
+ ```
174
+
175
+ ### GitHub
176
+ ```
177
+ List my repos
178
+ Show open PRs on [repo-name]
179
+ What commits were made this week?
180
+ Get details of PR #123
181
+ List branches on [repo-name]
182
+ ```
183
+
184
+ ### Slack
185
+ ```
186
+ Send "Build completed" to #deployments
187
+ What messages were posted in #general today?
188
+ Show me the thread replies for that message
189
+ List channels I have access to
190
+ ```
191
+
192
+ ### Combined
193
+ ```
194
+ List open PRs on [repo] and send titles to #updates channel
195
+ What did I work on this week? Send summary to #standup
196
+ ```
197
+
198
+ ## Troubleshooting
199
+
200
+ ### Plugin Not Updating?
201
+
202
+ If new commands don't appear after updating, clear the cache:
203
+
204
+ ```bash
205
+ rm -rf ~/.claude/plugins/cache/quickcall-integrations
206
+ rm -rf ~/.claude/plugins/marketplaces/quickcall-integrations
207
+ ```
208
+
209
+ Then restart Claude Code and reinstall:
210
+
211
+ ```
212
+ /plugin marketplace add quickcall-dev/quickcall-integrations
213
+ /plugin install quickcall@quickcall-integrations
214
+ ```
215
+
216
+ ### Commands Not Showing?
217
+
218
+ Type `/quickcall:` - you should see `connect`, `status`, `updates`.
219
+
220
+ If only `updates` shows, run the cleanup above and reinstall.
221
+
222
+ ---
223
+
224
+ <p align="center">
225
+ Built with ❤️ by <a href="https://quickcall.dev">QuickCall</a>
226
+ </p>
@@ -3,4 +3,4 @@ MCP Server for QuickCall
3
3
  GitHub integration tools for AI assistant
4
4
  """
5
5
 
6
- __version__ = "0.3.4"
6
+ __version__ = "0.1.7"
@@ -127,14 +127,36 @@ class GitHubClient:
127
127
  def health_check(self) -> bool:
128
128
  """Check if GitHub API is accessible with the token."""
129
129
  try:
130
- self.gh.get_user().login
131
- return True
130
+ # Use installation/repositories endpoint - works with GitHub App tokens
131
+ with httpx.Client() as client:
132
+ response = client.get(
133
+ "https://api.github.com/installation/repositories",
134
+ headers={
135
+ "Authorization": f"Bearer {self.token}",
136
+ "Accept": "application/vnd.github+json",
137
+ "X-GitHub-Api-Version": "2022-11-28",
138
+ },
139
+ params={"per_page": 1},
140
+ )
141
+ return response.status_code == 200
132
142
  except Exception:
133
143
  return False
134
144
 
135
145
  def get_authenticated_user(self) -> str:
136
- """Get the username of the authenticated user."""
137
- return self.gh.get_user().login
146
+ """
147
+ Get the GitHub username associated with this installation.
148
+
149
+ Note: GitHub App installation tokens can't access /user endpoint.
150
+ We return the installation owner instead.
151
+ """
152
+ # Try to get from first repo's owner
153
+ try:
154
+ repos = self.list_repos(limit=1)
155
+ if repos:
156
+ return repos[0].owner.login
157
+ except Exception:
158
+ pass
159
+ return "GitHub App" # Fallback
138
160
 
139
161
  def close(self):
140
162
  """Close GitHub API client."""