rowan-mcp 2.3.2__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 (59) hide show
  1. rowan_mcp-2.3.2/.gitignore +44 -0
  2. rowan_mcp-2.3.2/PKG-INFO +272 -0
  3. rowan_mcp-2.3.2/Procfile +1 -0
  4. rowan_mcp-2.3.2/README.md +235 -0
  5. rowan_mcp-2.3.2/nixpacks.toml +10 -0
  6. rowan_mcp-2.3.2/pyproject.toml +79 -0
  7. rowan_mcp-2.3.2/railway_start.py +18 -0
  8. rowan_mcp-2.3.2/rowan_mcp/__init__.py +14 -0
  9. rowan_mcp-2.3.2/rowan_mcp/__main__.py +12 -0
  10. rowan_mcp-2.3.2/rowan_mcp/functions_v2/BENCHMARK.md +86 -0
  11. rowan_mcp-2.3.2/rowan_mcp/functions_v2/molecule_lookup.py +232 -0
  12. rowan_mcp-2.3.2/rowan_mcp/functions_v2/protein_management.py +141 -0
  13. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_admet_workflow.py +69 -0
  14. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_basic_calculation_workflow.py +194 -0
  15. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_batch_docking_workflow.py +173 -0
  16. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_batch_workflow.py +184 -0
  17. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_bde_workflow.py +94 -0
  18. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_conformer_search_workflow.py +145 -0
  19. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_conformers_workflow.py +87 -0
  20. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_descriptors_workflow.py +59 -0
  21. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_docking_workflow.py +254 -0
  22. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_double_ended_ts_search_workflow.py +107 -0
  23. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_fukui_workflow.py +115 -0
  24. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_hydrogen_bond_basicity_workflow.py +83 -0
  25. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_ion_mobility_workflow.py +66 -0
  26. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_irc_workflow.py +59 -0
  27. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_macropka_workflow.py +79 -0
  28. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_msa_workflow.py +98 -0
  29. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_multistage_opt_workflow.py +112 -0
  30. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_pka_workflow.py +81 -0
  31. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_pose_analysis_md_workflow.py +118 -0
  32. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_protein_cofolding_workflow.py +102 -0
  33. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_redox_potential_workflow.py +59 -0
  34. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_scan_workflow.py +89 -0
  35. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_solubility_workflow.py +162 -0
  36. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_spin_states_workflow.py +113 -0
  37. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_strain_workflow.py +53 -0
  38. rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_tautomer_search_workflow.py +50 -0
  39. rowan_mcp-2.3.2/rowan_mcp/functions_v2/workflow_management_v2.py +425 -0
  40. rowan_mcp-2.3.2/rowan_mcp/server.py +182 -0
  41. rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_from_json.py +0 -0
  42. rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_with_constraint.py +33 -0
  43. rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_with_solvent.py +0 -0
  44. rowan_mcp-2.3.2/rowan_mcp/tests/bde.py +37 -0
  45. rowan_mcp-2.3.2/rowan_mcp/tests/benchmark_queries.md +120 -0
  46. rowan_mcp-2.3.2/rowan_mcp/tests/cofolding_screen.py +131 -0
  47. rowan_mcp-2.3.2/rowan_mcp/tests/conformer_dependent_redox.py +37 -0
  48. rowan_mcp-2.3.2/rowan_mcp/tests/conformers.py +31 -0
  49. rowan_mcp-2.3.2/rowan_mcp/tests/data.json +189 -0
  50. rowan_mcp-2.3.2/rowan_mcp/tests/docking_screen.py +157 -0
  51. rowan_mcp-2.3.2/rowan_mcp/tests/irc.py +24 -0
  52. rowan_mcp-2.3.2/rowan_mcp/tests/macropka.py +13 -0
  53. rowan_mcp-2.3.2/rowan_mcp/tests/multistage_opt.py +13 -0
  54. rowan_mcp-2.3.2/rowan_mcp/tests/optimization.py +21 -0
  55. rowan_mcp-2.3.2/rowan_mcp/tests/phenol_pka.py +36 -0
  56. rowan_mcp-2.3.2/rowan_mcp/tests/pka.py +36 -0
  57. rowan_mcp-2.3.2/rowan_mcp/tests/protein_cofolding.py +17 -0
  58. rowan_mcp-2.3.2/rowan_mcp/tests/scan.py +28 -0
  59. rowan_mcp-2.3.2/uv.lock +1964 -0
@@ -0,0 +1,44 @@
1
+ /.venv
2
+ /rowan-dxt
3
+ .env
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+ *.so
8
+ .DS_Store
9
+
10
+ .claude
11
+ CLAUDE.md
12
+ /dist
13
+
14
+ # MCP configuration (may contain tokens)
15
+ .mcp.json
16
+
17
+ # Test and example files
18
+ /tests/
19
+ /example_docs/
20
+ test_*.py
21
+ *_test.py
22
+ test_*.txt
23
+ debug_*.py
24
+ *_debug.py
25
+
26
+ # Log files
27
+ *.log
28
+ logs/
29
+
30
+ # Personal compatibility notes
31
+ GEMINI_MCP_COMPATIBILITY.md
32
+ MCP_CHATGPT_GEMINI_COMPATIBILITY_ANALYSIS.md
33
+ ROWAN_MCP_TEST_QUERIES.md
34
+ ROWAN_MCP_TOOLS.md
35
+ TOOLS_DOCUMENTATION.md
36
+
37
+ # Large archive/data files
38
+ *.dxt
39
+ *.dxz
40
+
41
+ # OpenRouter experimental clients (not part of core MCP server)
42
+ openrouter_client.py
43
+ openrouter_stdio_client.py
44
+ setup_openrouter.py
@@ -0,0 +1,272 @@
1
+ Metadata-Version: 2.4
2
+ Name: rowan-mcp
3
+ Version: 2.3.2
4
+ Summary: Model Context Protocol server for Rowan computational chemistry platform
5
+ Project-URL: Homepage, https://github.com/k-yenko/rowan-mcp
6
+ Author-email: Katherine Yenko <katherineayenko@gmail.com>
7
+ License: MIT
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Science/Research
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: aiohttp>=3.12.15
18
+ Requires-Dist: fastapi>=0.104.0
19
+ Requires-Dist: fastmcp>=2.11.3
20
+ Requires-Dist: httpx>=0.25.0
21
+ Requires-Dist: mcp>=1.0.0
22
+ Requires-Dist: openai>=1.107.2
23
+ Requires-Dist: pubchempy>=1.0.4
24
+ Requires-Dist: pydantic>=2.0.0
25
+ Requires-Dist: python-dotenv>=1.0.0
26
+ Requires-Dist: rdkit>=2025.3.2
27
+ Requires-Dist: rowan-python>=2.1.9
28
+ Requires-Dist: stjames>=0.0.125
29
+ Requires-Dist: typing-extensions>=4.0.0
30
+ Requires-Dist: uvicorn>=0.24.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: black>=23.0.0; extra == 'dev'
33
+ Requires-Dist: isort>=5.0.0; extra == 'dev'
34
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
35
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
36
+ Description-Content-Type: text/markdown
37
+
38
+ # Rowan MCP Server
39
+
40
+ MCP server for making it easy to run Rowan's molecular design and simulation tools.
41
+
42
+ ---
43
+
44
+ ## **Installation**
45
+
46
+ ### **Option 1: Auto-Install (No manual installation needed!)**
47
+
48
+ Just add this to your MCP configuration and it will automatically install and run:
49
+
50
+ **HTTP/SSE configuration:**
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "rowan": {
55
+ "type": "http",
56
+ "url": "http://127.0.0.1:6276/sse"
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ Then start the server:
63
+ ```bash
64
+ # Set your API key
65
+ export ROWAN_API_KEY="your_api_key_here"
66
+
67
+ # Start the HTTP server
68
+ uvx --from rowan-mcp rowan-mcp
69
+ ```
70
+
71
+ ### **Option 2: Manual Installation**
72
+
73
+ If you prefer to install the package first:
74
+
75
+ **Using uv:**
76
+ ```bash
77
+ uv add rowan-mcp
78
+ ```
79
+
80
+ **Using pip:**
81
+ ```bash
82
+ pip install rowan-mcp
83
+ ```
84
+
85
+ Then configure and start:
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "rowan": {
90
+ "type": "http",
91
+ "url": "http://127.0.0.1:6276/sse"
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ ```bash
98
+ # Set API key and start server
99
+ export ROWAN_API_KEY="your_api_key_here"
100
+ rowan-mcp
101
+ ```
102
+
103
+ ### **Get API Key**
104
+
105
+ Visit [labs.rowansci.com](https://labs.rowansci.com) → Create account → Generate API key
106
+
107
+ ### **Start Using**
108
+
109
+ Ask your AI: *"Calculate the pKa of aspirin"* or *"Optimize the geometry of caffeine"*
110
+
111
+ ---
112
+
113
+ ## **What You Can Do**
114
+
115
+ Ask the LLM to:
116
+ - **Calculate drug properties**: *"Predict drug-likeness of aspirin"*
117
+ - **Optimize molecular structures**: *"Optimize the geometry of aspirin"*
118
+ - **Predict chemical behavior**: *"What's the pKa of acetic acid?"*
119
+ - **Run calculations**: *"Calculate the HOMO and LUMO of benzene"*
120
+
121
+ ## **System Requirements**
122
+
123
+ - **Python 3.11+**
124
+ - **Package manager**: [uv](https://docs.astral.sh/uv/) (recommended) or pip
125
+ - **Rowan API key** (free at [labs.rowansci.com](https://labs.rowansci.com))
126
+ - **MCP-compatible client** (Claude Desktop, etc.)
127
+
128
+ **Development commands** (if you cloned the repo):
129
+ ```bash
130
+ # Run from source
131
+ export ROWAN_API_KEY="your_api_key_here"
132
+ uv run python -m rowan_mcp
133
+ ```
134
+
135
+ ---
136
+
137
+ ## **Available Tools**
138
+
139
+ **Total: 48 MCP Tools**
140
+ - 28 Dedicated Workflow Functions (all workflows from Rowan v2.1.9)
141
+ - 1 Batch Workflow Function
142
+ - 3 Molecule Lookup Tools
143
+ - 10 Workflow Management Tools
144
+ - 6 Protein Management Tools
145
+
146
+ ---
147
+
148
+ ### Chemistry Calculations
149
+ - `submit_basic_calculation_workflow` - Energy, optimization, frequencies with multiple engines (omol25, xtb, psi4)
150
+ - `submit_conformer_search_workflow` - Conformational search with multiple search modes (rapid/careful/meticulous)
151
+ - `submit_conformers_workflow` - Conformer generation and enumeration (different from conformer_search)
152
+ - `submit_multistage_opt_workflow` - Multi-stage geometry optimization with sequential accuracy levels
153
+ - `submit_scan_workflow` - Molecular scans (dihedral, bond, angle) with wavefront propagation
154
+ - `submit_irc_workflow` - Intrinsic reaction coordinate calculations for transition states
155
+
156
+ ### Molecular Properties
157
+ - `submit_pka_workflow` - Microscopic pKa calculations with customizable pH ranges and elements
158
+ - `submit_macropka_workflow` - Macroscopic pKa calculations across pH and charge ranges
159
+ - `submit_solubility_workflow` - Solubility predictions across multiple solvents and temperatures
160
+ - `submit_redox_potential_workflow` - Electrochemical reduction/oxidation potentials
161
+ - `submit_descriptors_workflow` - ML-ready molecular descriptors and features
162
+ - `submit_tautomer_search_workflow` - Tautomer enumeration
163
+ - `submit_admet_workflow` - ADME/Tox property predictions for drug discovery
164
+ - `submit_hydrogen_bond_basicity_workflow` - Hydrogen bond basicity (pKBHX) predictions
165
+
166
+ ### Reactivity Analysis
167
+ - `submit_fukui_workflow` - Fukui indices for electrophilic/nucleophilic reactivity sites
168
+
169
+ ### Electronic Structure
170
+ - `submit_spin_states_workflow` - Spin state energy calculations for different multiplicities
171
+
172
+ ### Spectroscopy & Analysis
173
+ - `submit_ion_mobility_workflow` - Ion mobility mass spectrometry collision cross-section (CCS) predictions
174
+ - `submit_strain_workflow` - Molecular strain energy calculations for rings and cages
175
+
176
+ ### Transition States & Reactions
177
+ - `submit_double_ended_ts_search_workflow` - Transition state search from reactant and product structures
178
+ - `submit_pose_analysis_md_workflow` - Molecular dynamics simulations on docked protein-ligand complexes
179
+
180
+ ### Protein & Drug Discovery
181
+ - `submit_docking_workflow` - Protein-ligand docking with multiple executables (Vina, QVina2, Smina)
182
+ - `submit_batch_docking_workflow` - High-throughput docking for virtual screening campaigns
183
+ - `submit_protein_cofolding_workflow` - Multi-protein and protein-ligand cofolding predictions
184
+ - `submit_msa_workflow` - Multiple sequence alignment for protein structure prediction
185
+
186
+ ### Batch Processing
187
+ - `batch_submit_workflow` - Submit multiple molecules through any workflow type for high-throughput processing
188
+
189
+ ---
190
+
191
+ ### Molecule Management
192
+ - `molecule_lookup` - Convert molecule names, CAS numbers, IUPAC names to SMILES
193
+ - `batch_molecule_lookup` - Bulk molecule name to SMILES conversion
194
+ - `validate_smiles` - Validate and standardize SMILES strings
195
+
196
+ ### Protein Management
197
+ - `create_protein_from_pdb_id` - Create protein from PDB ID (e.g., '1HCK')
198
+ - `retrieve_protein` - Get protein data by UUID
199
+ - `list_proteins` - List all available proteins
200
+ - `upload_protein` - Upload custom protein structures
201
+ - `delete_protein` - Remove protein from workspace
202
+ - `sanitize_protein` - Clean and validate protein structures
203
+
204
+ ### Workflow Management
205
+ - `workflow_get_status` - Check workflow status with detailed progress information
206
+ - `workflow_stop` - Stop running workflows
207
+ - `workflow_delete` - Remove workflows from workspace
208
+ - `retrieve_workflow` - Get complete workflow data and results
209
+ - `retrieve_calculation_molecules` - Extract molecular structures from calculations
210
+ - `list_workflows` - List all workflows with filtering options
211
+ - `workflow_update` - Modify workflow parameters
212
+ - `workflow_is_finished` - Check if workflow is complete
213
+ - `workflow_delete_data` - Remove workflow data while keeping metadata
214
+ - `workflow_fetch_latest` - Get most recent workflow results
215
+
216
+ ## **Requirements**
217
+
218
+ - Python 3.11+
219
+ - Rowan API key
220
+ - MCP-compatible AI assistant (Claude Desktop, etc.)
221
+
222
+ ---
223
+
224
+ ## **Experimental: Desktop Extension (Work in Progress)**
225
+
226
+ Working on a one-click desktop extension (.dxt) for Claude Desktop that eliminates command-line setup! This feature is currently being refined for compatibility with the MCP extension system.
227
+
228
+ For now, use the standard Package Installation method above, which is fully tested and reliable.
229
+
230
+ ---
231
+
232
+ ## **Getting Help**
233
+
234
+ - **Documentation**: [docs.rowansci.com](https://docs.rowansci.com/)
235
+ - or ping me!
236
+
237
+ ---
238
+
239
+ ## **Citation**
240
+
241
+ If you use this MCP tool in your research, please cite the underlying Rowan platform:
242
+
243
+ Rowan Scientific. https://www.rowansci.com (accessed 2025-07-01).
244
+
245
+ For complete citation information including specific computational engines, methods, and workflows used in your calculations, please refer to [Rowan's citation guidelines](https://docs.rowansci.com/citations).
246
+
247
+ ---
248
+
249
+ ## **Publishing (Maintainer Notes)**
250
+
251
+ To publish a new version to PyPI:
252
+
253
+ ```bash
254
+ # Update version in pyproject.toml and rowan_mcp/__init__.py
255
+ # Build the package
256
+ uv build
257
+
258
+ # Publish to PyPI (requires API token)
259
+ uv publish
260
+
261
+ # Or publish to TestPyPI first
262
+ uv publish --index-url https://test.pypi.org/simple/
263
+ ```
264
+ ### MCP inspector
265
+ ```bash
266
+ # Start the server first
267
+ export ROWAN_API_KEY="your_api_key_here"
268
+ uv run python -m rowan_mcp &
269
+
270
+ # Then inspect
271
+ npx @modelcontextprotocol/inspector http://127.0.0.1:6276/sse
272
+ ```
@@ -0,0 +1 @@
1
+ web: python railway_start.py
@@ -0,0 +1,235 @@
1
+ # Rowan MCP Server
2
+
3
+ MCP server for making it easy to run Rowan's molecular design and simulation tools.
4
+
5
+ ---
6
+
7
+ ## **Installation**
8
+
9
+ ### **Option 1: Auto-Install (No manual installation needed!)**
10
+
11
+ Just add this to your MCP configuration and it will automatically install and run:
12
+
13
+ **HTTP/SSE configuration:**
14
+ ```json
15
+ {
16
+ "mcpServers": {
17
+ "rowan": {
18
+ "type": "http",
19
+ "url": "http://127.0.0.1:6276/sse"
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ Then start the server:
26
+ ```bash
27
+ # Set your API key
28
+ export ROWAN_API_KEY="your_api_key_here"
29
+
30
+ # Start the HTTP server
31
+ uvx --from rowan-mcp rowan-mcp
32
+ ```
33
+
34
+ ### **Option 2: Manual Installation**
35
+
36
+ If you prefer to install the package first:
37
+
38
+ **Using uv:**
39
+ ```bash
40
+ uv add rowan-mcp
41
+ ```
42
+
43
+ **Using pip:**
44
+ ```bash
45
+ pip install rowan-mcp
46
+ ```
47
+
48
+ Then configure and start:
49
+ ```json
50
+ {
51
+ "mcpServers": {
52
+ "rowan": {
53
+ "type": "http",
54
+ "url": "http://127.0.0.1:6276/sse"
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ```bash
61
+ # Set API key and start server
62
+ export ROWAN_API_KEY="your_api_key_here"
63
+ rowan-mcp
64
+ ```
65
+
66
+ ### **Get API Key**
67
+
68
+ Visit [labs.rowansci.com](https://labs.rowansci.com) → Create account → Generate API key
69
+
70
+ ### **Start Using**
71
+
72
+ Ask your AI: *"Calculate the pKa of aspirin"* or *"Optimize the geometry of caffeine"*
73
+
74
+ ---
75
+
76
+ ## **What You Can Do**
77
+
78
+ Ask the LLM to:
79
+ - **Calculate drug properties**: *"Predict drug-likeness of aspirin"*
80
+ - **Optimize molecular structures**: *"Optimize the geometry of aspirin"*
81
+ - **Predict chemical behavior**: *"What's the pKa of acetic acid?"*
82
+ - **Run calculations**: *"Calculate the HOMO and LUMO of benzene"*
83
+
84
+ ## **System Requirements**
85
+
86
+ - **Python 3.11+**
87
+ - **Package manager**: [uv](https://docs.astral.sh/uv/) (recommended) or pip
88
+ - **Rowan API key** (free at [labs.rowansci.com](https://labs.rowansci.com))
89
+ - **MCP-compatible client** (Claude Desktop, etc.)
90
+
91
+ **Development commands** (if you cloned the repo):
92
+ ```bash
93
+ # Run from source
94
+ export ROWAN_API_KEY="your_api_key_here"
95
+ uv run python -m rowan_mcp
96
+ ```
97
+
98
+ ---
99
+
100
+ ## **Available Tools**
101
+
102
+ **Total: 48 MCP Tools**
103
+ - 28 Dedicated Workflow Functions (all workflows from Rowan v2.1.9)
104
+ - 1 Batch Workflow Function
105
+ - 3 Molecule Lookup Tools
106
+ - 10 Workflow Management Tools
107
+ - 6 Protein Management Tools
108
+
109
+ ---
110
+
111
+ ### Chemistry Calculations
112
+ - `submit_basic_calculation_workflow` - Energy, optimization, frequencies with multiple engines (omol25, xtb, psi4)
113
+ - `submit_conformer_search_workflow` - Conformational search with multiple search modes (rapid/careful/meticulous)
114
+ - `submit_conformers_workflow` - Conformer generation and enumeration (different from conformer_search)
115
+ - `submit_multistage_opt_workflow` - Multi-stage geometry optimization with sequential accuracy levels
116
+ - `submit_scan_workflow` - Molecular scans (dihedral, bond, angle) with wavefront propagation
117
+ - `submit_irc_workflow` - Intrinsic reaction coordinate calculations for transition states
118
+
119
+ ### Molecular Properties
120
+ - `submit_pka_workflow` - Microscopic pKa calculations with customizable pH ranges and elements
121
+ - `submit_macropka_workflow` - Macroscopic pKa calculations across pH and charge ranges
122
+ - `submit_solubility_workflow` - Solubility predictions across multiple solvents and temperatures
123
+ - `submit_redox_potential_workflow` - Electrochemical reduction/oxidation potentials
124
+ - `submit_descriptors_workflow` - ML-ready molecular descriptors and features
125
+ - `submit_tautomer_search_workflow` - Tautomer enumeration
126
+ - `submit_admet_workflow` - ADME/Tox property predictions for drug discovery
127
+ - `submit_hydrogen_bond_basicity_workflow` - Hydrogen bond basicity (pKBHX) predictions
128
+
129
+ ### Reactivity Analysis
130
+ - `submit_fukui_workflow` - Fukui indices for electrophilic/nucleophilic reactivity sites
131
+
132
+ ### Electronic Structure
133
+ - `submit_spin_states_workflow` - Spin state energy calculations for different multiplicities
134
+
135
+ ### Spectroscopy & Analysis
136
+ - `submit_ion_mobility_workflow` - Ion mobility mass spectrometry collision cross-section (CCS) predictions
137
+ - `submit_strain_workflow` - Molecular strain energy calculations for rings and cages
138
+
139
+ ### Transition States & Reactions
140
+ - `submit_double_ended_ts_search_workflow` - Transition state search from reactant and product structures
141
+ - `submit_pose_analysis_md_workflow` - Molecular dynamics simulations on docked protein-ligand complexes
142
+
143
+ ### Protein & Drug Discovery
144
+ - `submit_docking_workflow` - Protein-ligand docking with multiple executables (Vina, QVina2, Smina)
145
+ - `submit_batch_docking_workflow` - High-throughput docking for virtual screening campaigns
146
+ - `submit_protein_cofolding_workflow` - Multi-protein and protein-ligand cofolding predictions
147
+ - `submit_msa_workflow` - Multiple sequence alignment for protein structure prediction
148
+
149
+ ### Batch Processing
150
+ - `batch_submit_workflow` - Submit multiple molecules through any workflow type for high-throughput processing
151
+
152
+ ---
153
+
154
+ ### Molecule Management
155
+ - `molecule_lookup` - Convert molecule names, CAS numbers, IUPAC names to SMILES
156
+ - `batch_molecule_lookup` - Bulk molecule name to SMILES conversion
157
+ - `validate_smiles` - Validate and standardize SMILES strings
158
+
159
+ ### Protein Management
160
+ - `create_protein_from_pdb_id` - Create protein from PDB ID (e.g., '1HCK')
161
+ - `retrieve_protein` - Get protein data by UUID
162
+ - `list_proteins` - List all available proteins
163
+ - `upload_protein` - Upload custom protein structures
164
+ - `delete_protein` - Remove protein from workspace
165
+ - `sanitize_protein` - Clean and validate protein structures
166
+
167
+ ### Workflow Management
168
+ - `workflow_get_status` - Check workflow status with detailed progress information
169
+ - `workflow_stop` - Stop running workflows
170
+ - `workflow_delete` - Remove workflows from workspace
171
+ - `retrieve_workflow` - Get complete workflow data and results
172
+ - `retrieve_calculation_molecules` - Extract molecular structures from calculations
173
+ - `list_workflows` - List all workflows with filtering options
174
+ - `workflow_update` - Modify workflow parameters
175
+ - `workflow_is_finished` - Check if workflow is complete
176
+ - `workflow_delete_data` - Remove workflow data while keeping metadata
177
+ - `workflow_fetch_latest` - Get most recent workflow results
178
+
179
+ ## **Requirements**
180
+
181
+ - Python 3.11+
182
+ - Rowan API key
183
+ - MCP-compatible AI assistant (Claude Desktop, etc.)
184
+
185
+ ---
186
+
187
+ ## **Experimental: Desktop Extension (Work in Progress)**
188
+
189
+ Working on a one-click desktop extension (.dxt) for Claude Desktop that eliminates command-line setup! This feature is currently being refined for compatibility with the MCP extension system.
190
+
191
+ For now, use the standard Package Installation method above, which is fully tested and reliable.
192
+
193
+ ---
194
+
195
+ ## **Getting Help**
196
+
197
+ - **Documentation**: [docs.rowansci.com](https://docs.rowansci.com/)
198
+ - or ping me!
199
+
200
+ ---
201
+
202
+ ## **Citation**
203
+
204
+ If you use this MCP tool in your research, please cite the underlying Rowan platform:
205
+
206
+ Rowan Scientific. https://www.rowansci.com (accessed 2025-07-01).
207
+
208
+ For complete citation information including specific computational engines, methods, and workflows used in your calculations, please refer to [Rowan's citation guidelines](https://docs.rowansci.com/citations).
209
+
210
+ ---
211
+
212
+ ## **Publishing (Maintainer Notes)**
213
+
214
+ To publish a new version to PyPI:
215
+
216
+ ```bash
217
+ # Update version in pyproject.toml and rowan_mcp/__init__.py
218
+ # Build the package
219
+ uv build
220
+
221
+ # Publish to PyPI (requires API token)
222
+ uv publish
223
+
224
+ # Or publish to TestPyPI first
225
+ uv publish --index-url https://test.pypi.org/simple/
226
+ ```
227
+ ### MCP inspector
228
+ ```bash
229
+ # Start the server first
230
+ export ROWAN_API_KEY="your_api_key_here"
231
+ uv run python -m rowan_mcp &
232
+
233
+ # Then inspect
234
+ npx @modelcontextprotocol/inspector http://127.0.0.1:6276/sse
235
+ ```
@@ -0,0 +1,10 @@
1
+ # Railway Nixpacks configuration for Rowan MCP
2
+ # Python-based MCP server
3
+
4
+ [phases.install]
5
+ cmds = [
6
+ "pip install -e ."
7
+ ]
8
+
9
+ [start]
10
+ cmd = "python railway_start.py"
@@ -0,0 +1,79 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "rowan-mcp"
7
+ version = "2.3.2"
8
+ description = "Model Context Protocol server for Rowan computational chemistry platform"
9
+ authors = [
10
+ {name = "Katherine Yenko", email = "katherineayenko@gmail.com"}
11
+ ]
12
+ license = {text = "MIT"}
13
+ readme = "README.md"
14
+ requires-python = ">=3.11"
15
+ urls = {Homepage = "https://github.com/k-yenko/rowan-mcp"}
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Intended Audience :: Science/Research",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Topic :: Scientific/Engineering :: Chemistry",
25
+ ]
26
+ dependencies = [
27
+ "fastmcp>=2.11.3",
28
+ "rowan-python>=2.1.9",
29
+ "stjames>=0.0.125",
30
+ "pydantic>=2.0.0",
31
+ "typing-extensions>=4.0.0",
32
+ "uvicorn>=0.24.0",
33
+ "fastapi>=0.104.0",
34
+ "python-dotenv>=1.0.0",
35
+ "pubchempy>=1.0.4",
36
+ "rdkit>=2025.3.2",
37
+ "aiohttp>=3.12.15",
38
+ "openai>=1.107.2",
39
+ "httpx>=0.25.0",
40
+ "mcp>=1.0.0",
41
+ ]
42
+
43
+ [project.optional-dependencies]
44
+ dev = [
45
+ "pytest>=7.0.0",
46
+ "black>=23.0.0",
47
+ "isort>=5.0.0",
48
+ "mypy>=1.0.0",
49
+ ]
50
+
51
+ [project.scripts]
52
+ rowan-mcp = "rowan_mcp.server:main"
53
+
54
+ [tool.hatch.build.targets.wheel]
55
+ packages = ["rowan_mcp"]
56
+
57
+ [tool.hatch.build.targets.sdist]
58
+ exclude = [
59
+ "rowan-dxt/",
60
+ "dxt/",
61
+ "*.log",
62
+ "test_*.py",
63
+ ".venv/",
64
+ "*.dxt"
65
+ ]
66
+
67
+ [tool.black]
68
+ line-length = 88
69
+ target-version = ['py38']
70
+
71
+ [tool.isort]
72
+ profile = "black"
73
+ multi_line_output = 3
74
+
75
+ [tool.mypy]
76
+ python_version = "3.8"
77
+ warn_return_any = true
78
+ warn_unused_configs = true
79
+ disallow_untyped_defs = true
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env python3
2
+ """Railway startup script for Rowan MCP server"""
3
+ import os
4
+ import sys
5
+
6
+ # Add current directory to path to ensure rowan_mcp can be imported
7
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
8
+
9
+ from rowan_mcp.server import mcp
10
+
11
+ if __name__ == "__main__":
12
+ # Get port from Railway's PORT environment variable
13
+ port = int(os.getenv("PORT", 6276))
14
+
15
+ print(f"Starting Rowan MCP Server on 0.0.0.0:{port}", file=sys.stderr)
16
+
17
+ # Start server with 0.0.0.0 binding (required for Railway)
18
+ mcp.run(transport="http", host="0.0.0.0", port=port)
@@ -0,0 +1,14 @@
1
+ """
2
+ Rowan MCP Server - Computational Chemistry Platform Integration
3
+
4
+ This package provides MCP (Model Context Protocol) server functionality
5
+ for integrating with Rowan's computational chemistry platform.
6
+ """
7
+
8
+ __version__ = "2.3.2"
9
+ __author__ = "Kat Yenko"
10
+ __description__ = "MCP server for Rowan computational chemistry platform"
11
+
12
+ from .server import main
13
+
14
+ __all__ = ["main"]
@@ -0,0 +1,12 @@
1
+ """
2
+ Main entry point for Rowan MCP Server when run as a module.
3
+
4
+ Usage:
5
+ python -m rowan_mcp # STDIO mode
6
+ python -m rowan_mcp --help # Show help
7
+ """
8
+
9
+ if __name__ == "__main__":
10
+ # STDIO transport
11
+ from .server import main
12
+ main()