second-opinion-mcp 0.3.3__py3-none-any.whl → 0.3.4__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.
- second_opinion_mcp/__init__.py +1 -1
- second_opinion_mcp/cli.py +2 -2
- {second_opinion_mcp-0.3.3.dist-info → second_opinion_mcp-0.3.4.dist-info}/METADATA +8 -8
- second_opinion_mcp-0.3.4.dist-info/RECORD +9 -0
- second_opinion_mcp-0.3.3.dist-info/RECORD +0 -9
- {second_opinion_mcp-0.3.3.dist-info → second_opinion_mcp-0.3.4.dist-info}/WHEEL +0 -0
- {second_opinion_mcp-0.3.3.dist-info → second_opinion_mcp-0.3.4.dist-info}/entry_points.txt +0 -0
- {second_opinion_mcp-0.3.3.dist-info → second_opinion_mcp-0.3.4.dist-info}/licenses/LICENSE +0 -0
second_opinion_mcp/__init__.py
CHANGED
second_opinion_mcp/cli.py
CHANGED
|
@@ -149,12 +149,12 @@ def print_manual_setup_instructions(providers: list[str] | None = None):
|
|
|
149
149
|
for provider in target_providers:
|
|
150
150
|
config = PROVIDERS[provider]
|
|
151
151
|
print(f" # {config['name']} - Get key at {config['key_hint']}")
|
|
152
|
-
print(f"
|
|
152
|
+
print(f" python3 -c \"import keyring; keyring.set_password('{config['keyring_service']}', '{config['keyring_name']}', 'YOUR_API_KEY')\"")
|
|
153
153
|
print()
|
|
154
154
|
|
|
155
155
|
print("To verify your keys are stored:")
|
|
156
156
|
print()
|
|
157
|
-
print("
|
|
157
|
+
print(" python3 -c \"import keyring; print('deepseek:', bool(keyring.get_password('second-opinion', 'deepseek'))); print('moonshot:', bool(keyring.get_password('second-opinion', 'moonshot')))\"")
|
|
158
158
|
print()
|
|
159
159
|
print("After configuring keys, register with Claude Code:")
|
|
160
160
|
print()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: second-opinion-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: Multi-model AI analysis for Claude - get second opinions from DeepSeek, Kimi, and OpenRouter
|
|
5
5
|
Project-URL: Homepage, https://github.com/MarvinFS/second-opinion-mcp
|
|
6
6
|
Project-URL: Repository, https://github.com/MarvinFS/second-opinion-mcp
|
|
@@ -233,19 +233,19 @@ Or manually set each provider's key:
|
|
|
233
233
|
|
|
234
234
|
```bash
|
|
235
235
|
# DeepSeek (key starts with sk-)
|
|
236
|
-
|
|
236
|
+
python3 -c "import keyring; keyring.set_password('second-opinion', 'deepseek', 'sk-YOUR_DEEPSEEK_KEY')"
|
|
237
237
|
|
|
238
238
|
# Moonshot/Kimi
|
|
239
|
-
|
|
239
|
+
python3 -c "import keyring; keyring.set_password('second-opinion', 'moonshot', 'YOUR_MOONSHOT_KEY')"
|
|
240
240
|
|
|
241
241
|
# OpenRouter (key starts with sk-or-)
|
|
242
|
-
|
|
242
|
+
python3 -c "import keyring; keyring.set_password('second-opinion', 'openrouter', 'sk-or-YOUR_OPENROUTER_KEY')"
|
|
243
243
|
```
|
|
244
244
|
|
|
245
245
|
Verify keys are configured:
|
|
246
246
|
|
|
247
247
|
```bash
|
|
248
|
-
|
|
248
|
+
python3 -c "import keyring; print('deepseek:', bool(keyring.get_password('second-opinion', 'deepseek'))); print('moonshot:', bool(keyring.get_password('second-opinion', 'moonshot'))); print('openrouter:', bool(keyring.get_password('second-opinion', 'openrouter')))"
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
### Claude Desktop Configuration
|
|
@@ -371,9 +371,9 @@ claude mcp remove second-opinion
|
|
|
371
371
|
pipx uninstall second-opinion-mcp
|
|
372
372
|
|
|
373
373
|
# Optional: remove stored API keys
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
374
|
+
python3 -c "import keyring; keyring.delete_password('second-opinion', 'deepseek')"
|
|
375
|
+
python3 -c "import keyring; keyring.delete_password('second-opinion', 'moonshot')"
|
|
376
|
+
python3 -c "import keyring; keyring.delete_password('second-opinion', 'openrouter')"
|
|
377
377
|
```
|
|
378
378
|
|
|
379
379
|
## Security
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
second_opinion_mcp/__init__.py,sha256=25qP5ShltFWoa09KfMQFCSGb6nOssroCDdNp8fEXQ6g,373
|
|
2
|
+
second_opinion_mcp/__main__.py,sha256=WDv19O6nvIH69GR_DUfXqDt-wm8bgsHNqvPm1LEIKzs,509
|
|
3
|
+
second_opinion_mcp/cli.py,sha256=KCT8-wEqMWzrjiLAYgwEdFUqWnkDDYgFm-eXCze4jDE,15281
|
|
4
|
+
second_opinion_mcp/server.py,sha256=46cHbK0GgL0VBCGI3gmTA1-vQ1jRDdQ6MsCCqWw3LVk,62237
|
|
5
|
+
second_opinion_mcp-0.3.4.dist-info/METADATA,sha256=IjrDmJyD6Z6WwHAxACRHQTIu6p7xBD3rbwD4rW4YAKI,10822
|
|
6
|
+
second_opinion_mcp-0.3.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
7
|
+
second_opinion_mcp-0.3.4.dist-info/entry_points.txt,sha256=-E8BA2gFyU4qW-kJL8SV9Pg1Cc7glOCmraJoZH0PZP8,72
|
|
8
|
+
second_opinion_mcp-0.3.4.dist-info/licenses/LICENSE,sha256=dPx2Jy-Ejearvfh6IlF2PN4Srt-nZW8M4bW5EW7RPAg,1065
|
|
9
|
+
second_opinion_mcp-0.3.4.dist-info/RECORD,,
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
second_opinion_mcp/__init__.py,sha256=6U4p4K4W9gGMT_T_lyVbgmKDFAR0fSl93hO8ALABO2Y,373
|
|
2
|
-
second_opinion_mcp/__main__.py,sha256=WDv19O6nvIH69GR_DUfXqDt-wm8bgsHNqvPm1LEIKzs,509
|
|
3
|
-
second_opinion_mcp/cli.py,sha256=A88Y0TZQ_B38YliHKzohAOLTZuGdMZzH4bEjyC1Tv_A,15279
|
|
4
|
-
second_opinion_mcp/server.py,sha256=46cHbK0GgL0VBCGI3gmTA1-vQ1jRDdQ6MsCCqWw3LVk,62237
|
|
5
|
-
second_opinion_mcp-0.3.3.dist-info/METADATA,sha256=yapnby2rQe1S9uJeNIjPeyDNLNMo5saW04hqEK4GAws,10815
|
|
6
|
-
second_opinion_mcp-0.3.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
7
|
-
second_opinion_mcp-0.3.3.dist-info/entry_points.txt,sha256=-E8BA2gFyU4qW-kJL8SV9Pg1Cc7glOCmraJoZH0PZP8,72
|
|
8
|
-
second_opinion_mcp-0.3.3.dist-info/licenses/LICENSE,sha256=dPx2Jy-Ejearvfh6IlF2PN4Srt-nZW8M4bW5EW7RPAg,1065
|
|
9
|
-
second_opinion_mcp-0.3.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|