rowan-mcp 1.0.1__py3-none-any.whl → 1.0.2__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.

Potentially problematic release.


This version of rowan-mcp might be problematic. Click here for more details.

rowan_mcp/__init__.py CHANGED
@@ -6,7 +6,7 @@ for integrating with Rowan's computational chemistry platform.
6
6
  """
7
7
 
8
8
  __version__ = "1.0.0"
9
- __author__ = "Rowan MCP Team"
9
+ __author__ = "Kat Yenko"
10
10
  __description__ = "MCP server for Rowan computational chemistry platform"
11
11
 
12
12
  from .server import main
@@ -15,7 +15,7 @@ if not hasattr(rowan, 'api_key') or not rowan.api_key:
15
15
  api_key = os.getenv("ROWAN_API_KEY")
16
16
  if api_key:
17
17
  rowan.api_key = api_key
18
- logger.info("🔑 Rowan API key configured")
18
+ logger.info("Rowan API key configured")
19
19
  else:
20
20
  logger.error("No ROWAN_API_KEY found in environment")
21
21
 
@@ -39,7 +39,7 @@ def rowan_pka(
39
39
 
40
40
  Args:
41
41
  name: Name for the calculation
42
- molecule: Molecule SMILES string or common name
42
+ molecule: Molecule SMILES string
43
43
  folder_uuid: UUID of folder to organize calculation in
44
44
  blocking: Whether to wait for completion (default: True)
45
45
  ping_interval: How often to check status in seconds (default: 5)
@@ -57,56 +57,7 @@ def rowan_pka(
57
57
  ping_interval=ping_interval
58
58
  )
59
59
 
60
- # Format results based on whether we waited or not
61
- if blocking:
62
- # We waited for completion - format actual results
63
- status = result.get('status', result.get('object_status', 'Unknown'))
64
-
65
- if status == 2: # Completed successfully
66
- formatted = f" pKa calculation for '{name}' completed successfully!\n\n"
67
- elif status == 3: # Failed
68
- formatted = f" pKa calculation for '{name}' failed!\n\n"
69
- else:
70
- formatted = f" pKa calculation for '{name}' finished with status {status}\n\n"
71
-
72
- formatted += f" Molecule: {molecule}\n"
73
- formatted += f" Job UUID: {result.get('uuid', 'N/A')}\n"
74
- formatted += f" Status: {status}\n"
75
-
76
- # Try to extract pKa results
77
- if isinstance(result, dict) and 'object_data' in result and result['object_data']:
78
- data = result['object_data']
79
-
80
- # Extract pKa values
81
- if 'strongest_acid' in data:
82
- if data['strongest_acid'] is not None:
83
- formatted += f" Strongest Acid pKa: {data['strongest_acid']:.2f}\n"
84
- else:
85
- formatted += f" Strongest Acid pKa: N/A (no acidic sites found)\n"
86
-
87
- if 'strongest_base' in data:
88
- if data['strongest_base'] is not None:
89
- formatted += f" Strongest Base pKa: {data['strongest_base']:.2f}\n"
90
- else:
91
- formatted += f" Strongest Base pKa: N/A (no basic sites found)\n"
92
- if 'pka_values' in data and isinstance(data['pka_values'], list):
93
- formatted += f" All pKa values: {', '.join([f'{val:.2f}' for val in data['pka_values']])}\n"
94
-
95
- # Additional properties if available
96
- if 'ionizable_sites' in data:
97
- formatted += f" Ionizable sites found: {data['ionizable_sites']}\n"
98
-
99
- # Basic guidance
100
- if status == 2:
101
- formatted += f"\n Use rowan_workflow_management(action='retrieve', workflow_uuid='{result.get('uuid')}') for detailed data\n"
102
- else:
103
- # Non-blocking mode - just submission confirmation
104
- formatted = f" pKa calculation for '{name}' submitted!\n\n"
105
- formatted += f" Molecule: {molecule}\n"
106
- formatted += f" Job UUID: {result.get('uuid', 'N/A')}\n"
107
- formatted += f" Status: {result.get('status', 'Submitted')}\n"
108
-
109
- return formatted
60
+ return str(result)
110
61
 
111
62
  except Exception as e:
112
63
  error_response = {
@@ -125,7 +76,7 @@ def test_rowan_pka():
125
76
  name="test_pka_water",
126
77
  molecule="O"
127
78
  )
128
- print("pKa test successful!")
79
+ print("pKa test successful")
129
80
  print(f"Result: {result}")
130
81
  return True
131
82
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-mcp
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Model Context Protocol server for Rowan computational chemistry platform
5
5
  Project-URL: Homepage, https://github.com/k-yenko/rowan-mcp
6
6
  Author-email: Katherine Yenko <katherineayenko@gmail.com>
@@ -225,3 +225,11 @@ uv publish
225
225
  # Or publish to TestPyPI first
226
226
  uv publish --index-url https://test.pypi.org/simple/
227
227
  ```
228
+
229
+ To update the dxt file:
230
+ ```bash
231
+ # After updating the PyPI package, update all changed tools/functions
232
+
233
+ # Then update the desktop extension
234
+ dxt pack rowan-dxt
235
+ ```
@@ -1,4 +1,4 @@
1
- rowan_mcp/__init__.py,sha256=P0K_WQJCQuyQtG4fNFto6Wutijtle32lG9sFB96cYiw,381
1
+ rowan_mcp/__init__.py,sha256=VDEcimR-BO3hPSxH-0R-dDQBCR2AKvWllMBaiVV2Zfc,376
2
2
  rowan_mcp/__main__.py,sha256=I7wCpoCPLrCx_tWozFBtCtnoL65lmgDiZnEumj3vijM,388
3
3
  rowan_mcp/server.py,sha256=47MsJchxzqRVd4mFQXR81wYXBX8B8fFUkl7wDYB5uMs,7702
4
4
  rowan_mcp/functions/admet.py,sha256=m_RD7OJ8GDocEInHw4zOmk4tBf2mWBGTL3LVt-vo_mU,2438
@@ -19,7 +19,7 @@ rowan_mcp/functions/molecular_dynamics.py,sha256=yzA03LeFv8K59Cg1SAnavWwmodl4_KW
19
19
  rowan_mcp/functions/molecule_lookup.py,sha256=Ff3ARljNbLlGgSinREl6OFxoJ-HVXtbXPxy-r_6CMKs,1467
20
20
  rowan_mcp/functions/multistage_opt.py,sha256=lWwgXZgpXnWsjgonkA1toks4t01Cdxo822xmT2EOssM,6185
21
21
  rowan_mcp/functions/pdb_handler.py,sha256=EnhRqxStnke5kiSnDaWOzcJT8fAHW6VVIhTaH6ODkWE,6241
22
- rowan_mcp/functions/pka.py,sha256=EFGIFtq2HrtNzcU5-3-ncgmpiwIGnOE-vROjr_eC1Nk,5014
22
+ rowan_mcp/functions/pka.py,sha256=9Ne2mBxX1wryyVJm-T66o6_KPfARHnab6sKqLXpt3oU,2335
23
23
  rowan_mcp/functions/redox_potential.py,sha256=NXU1sEkMqI-2-LD9qv7qaBhkmAvwU3dFGLQ988DG4cc,13114
24
24
  rowan_mcp/functions/scan.py,sha256=LWr6YKwCG3gv0ZtyCbPaJ81NlQyFTHFZ4WnXvSRxmVg,24235
25
25
  rowan_mcp/functions/scan_analyzer.py,sha256=vnAokCFOxYbv3Px3p9dEIxQXL7ot6UMjeUfMb_ZF6Ug,13479
@@ -28,7 +28,7 @@ rowan_mcp/functions/spin_states.py,sha256=NG7uJjTi_Fx-E4Qr7RzjNhfFmKlHfIGMD0Uhyo
28
28
  rowan_mcp/functions/system_management.py,sha256=UwdKD46FNEJh1zEPpvFW7-JBD6g8x-xSbmH7lrcubx0,20089
29
29
  rowan_mcp/functions/tautomers.py,sha256=oXFUpMgCVtXy2JnyCb8G04vYj_anJj4WThD26ZGOsZ0,2694
30
30
  rowan_mcp/functions/workflow_management.py,sha256=EqXRqj0EuJz7h2igqOHBpq23Qyo-KT9geWp39URacxw,21130
31
- rowan_mcp-1.0.1.dist-info/METADATA,sha256=LMlceF8ZjrMjgaJdx7sxCEskrF7E2jMBQsnCyOVFZl0,6262
32
- rowan_mcp-1.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
33
- rowan_mcp-1.0.1.dist-info/entry_points.txt,sha256=QkmK3GHkTNA6gqyTIFrl2V2eVBm-VBdRAlDNsvi4Rl0,52
34
- rowan_mcp-1.0.1.dist-info/RECORD,,
31
+ rowan_mcp-1.0.2.dist-info/METADATA,sha256=YnmsMhwW2K0VHeU30HuBNOV-vCKo1eoqGdBpw50XxtQ,6425
32
+ rowan_mcp-1.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
33
+ rowan_mcp-1.0.2.dist-info/entry_points.txt,sha256=QkmK3GHkTNA6gqyTIFrl2V2eVBm-VBdRAlDNsvi4Rl0,52
34
+ rowan_mcp-1.0.2.dist-info/RECORD,,