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.
- rowan_mcp-2.3.2/.gitignore +44 -0
- rowan_mcp-2.3.2/PKG-INFO +272 -0
- rowan_mcp-2.3.2/Procfile +1 -0
- rowan_mcp-2.3.2/README.md +235 -0
- rowan_mcp-2.3.2/nixpacks.toml +10 -0
- rowan_mcp-2.3.2/pyproject.toml +79 -0
- rowan_mcp-2.3.2/railway_start.py +18 -0
- rowan_mcp-2.3.2/rowan_mcp/__init__.py +14 -0
- rowan_mcp-2.3.2/rowan_mcp/__main__.py +12 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/BENCHMARK.md +86 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/molecule_lookup.py +232 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/protein_management.py +141 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_admet_workflow.py +69 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_basic_calculation_workflow.py +194 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_batch_docking_workflow.py +173 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_batch_workflow.py +184 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_bde_workflow.py +94 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_conformer_search_workflow.py +145 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_conformers_workflow.py +87 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_descriptors_workflow.py +59 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_docking_workflow.py +254 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_double_ended_ts_search_workflow.py +107 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_fukui_workflow.py +115 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_hydrogen_bond_basicity_workflow.py +83 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_ion_mobility_workflow.py +66 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_irc_workflow.py +59 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_macropka_workflow.py +79 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_msa_workflow.py +98 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_multistage_opt_workflow.py +112 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_pka_workflow.py +81 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_pose_analysis_md_workflow.py +118 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_protein_cofolding_workflow.py +102 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_redox_potential_workflow.py +59 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_scan_workflow.py +89 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_solubility_workflow.py +162 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_spin_states_workflow.py +113 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_strain_workflow.py +53 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/submit_tautomer_search_workflow.py +50 -0
- rowan_mcp-2.3.2/rowan_mcp/functions_v2/workflow_management_v2.py +425 -0
- rowan_mcp-2.3.2/rowan_mcp/server.py +182 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_from_json.py +0 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_with_constraint.py +33 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/basic_calculation_with_solvent.py +0 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/bde.py +37 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/benchmark_queries.md +120 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/cofolding_screen.py +131 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/conformer_dependent_redox.py +37 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/conformers.py +31 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/data.json +189 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/docking_screen.py +157 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/irc.py +24 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/macropka.py +13 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/multistage_opt.py +13 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/optimization.py +21 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/phenol_pka.py +36 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/pka.py +36 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/protein_cofolding.py +17 -0
- rowan_mcp-2.3.2/rowan_mcp/tests/scan.py +28 -0
- 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
|
rowan_mcp-2.3.2/PKG-INFO
ADDED
|
@@ -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
|
+
```
|
rowan_mcp-2.3.2/Procfile
ADDED
|
@@ -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,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"]
|