rowan-mcp 0.1.0__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 +14 -0
- rowan_mcp/__main__.py +14 -0
- rowan_mcp/functions/admet.py +94 -0
- rowan_mcp/functions/bde.py +113 -0
- rowan_mcp/functions/calculation_retrieve.py +89 -0
- rowan_mcp/functions/conformers.py +135 -0
- rowan_mcp/functions/descriptors.py +92 -0
- rowan_mcp/functions/docking.py +340 -0
- rowan_mcp/functions/docking_enhanced.py +174 -0
- rowan_mcp/functions/electronic_properties.py +263 -0
- rowan_mcp/functions/folder_management.py +137 -0
- rowan_mcp/functions/fukui.py +355 -0
- rowan_mcp/functions/hydrogen_bond_basicity.py +94 -0
- rowan_mcp/functions/irc.py +125 -0
- rowan_mcp/functions/macropka.py +195 -0
- rowan_mcp/functions/molecular_converter.py +423 -0
- rowan_mcp/functions/molecular_dynamics.py +191 -0
- rowan_mcp/functions/molecule_cache.db +0 -0
- rowan_mcp/functions/molecule_lookup.py +446 -0
- rowan_mcp/functions/multistage_opt.py +171 -0
- rowan_mcp/functions/pdb_handler.py +200 -0
- rowan_mcp/functions/pka.py +137 -0
- rowan_mcp/functions/redox_potential.py +352 -0
- rowan_mcp/functions/scan.py +536 -0
- rowan_mcp/functions/scan_analyzer.py +347 -0
- rowan_mcp/functions/solubility.py +277 -0
- rowan_mcp/functions/spin_states.py +747 -0
- rowan_mcp/functions/system_management.py +368 -0
- rowan_mcp/functions/tautomers.py +91 -0
- rowan_mcp/functions/workflow_management.py +422 -0
- rowan_mcp/server.py +169 -0
- rowan_mcp-0.1.0.dist-info/METADATA +216 -0
- rowan_mcp-0.1.0.dist-info/RECORD +35 -0
- rowan_mcp-0.1.0.dist-info/WHEEL +4 -0
- rowan_mcp-0.1.0.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rowan-mcp
|
|
3
|
+
Version: 0.1.0
|
|
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 <katherineyenko@example.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.10
|
|
17
|
+
Requires-Dist: fastapi>=0.104.0
|
|
18
|
+
Requires-Dist: fastmcp>=0.2.0
|
|
19
|
+
Requires-Dist: pubchempy>=1.0.4
|
|
20
|
+
Requires-Dist: pydantic>=2.0.0
|
|
21
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
22
|
+
Requires-Dist: rdkit>=2025.3.2
|
|
23
|
+
Requires-Dist: rowan-python>=0.1.0
|
|
24
|
+
Requires-Dist: typing-extensions>=4.0.0
|
|
25
|
+
Requires-Dist: uvicorn>=0.24.0
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: isort>=5.0.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# Rowan MCP Server
|
|
34
|
+
|
|
35
|
+
This project wraps an MCP (Model Context Protocol) around Rowan's tools, making it easy for users to submit complex quantum chemistry calculations in natural everyday language.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## **Quick Install - Desktop Extension**
|
|
40
|
+
|
|
41
|
+
**For Claude Desktop users - this is the easiest way:**
|
|
42
|
+
|
|
43
|
+
1. **Download** the extension: [`rowan-dxt.dxt`](./rowan-dxt.dxt)
|
|
44
|
+
2. **Drag and drop** the file into **Claude Desktop > Settings > Extensions**
|
|
45
|
+
3. **Enter your API key** from [labs.rowansci.com](https://labs.rowansci.com)
|
|
46
|
+
4. **Enable** the MCP tool in the extension settings
|
|
47
|
+
5. **Start chatting** Try: *"Using the Rowan MCP tool, calculate the pKa of aspirin"*
|
|
48
|
+
|
|
49
|
+
That's it - no command line setup needed!
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## **Manual Installation**
|
|
54
|
+
|
|
55
|
+
**For developers or users who prefer command-line setup:**
|
|
56
|
+
|
|
57
|
+
### **1. Clone and Setup**
|
|
58
|
+
```bash
|
|
59
|
+
git clone https://github.com/k-yenko/rowan-mcp.git
|
|
60
|
+
cd rowan-mcp
|
|
61
|
+
uv sync
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### **2. Get API Key**
|
|
65
|
+
- Visit [labs.rowansci.com](https://labs.rowansci.com)
|
|
66
|
+
- Create free account → Generate API key
|
|
67
|
+
|
|
68
|
+
### **3. Configure Your MCP Client**
|
|
69
|
+
|
|
70
|
+
**Claude Desktop Example:**
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"mcpServers": {
|
|
74
|
+
"rowan": {
|
|
75
|
+
"command": "uv",
|
|
76
|
+
"args": ["run", "python", "-m", "rowan_mcp"],
|
|
77
|
+
"cwd": "/path/to/rowan-mcp",
|
|
78
|
+
"env": {
|
|
79
|
+
"ROWAN_API_KEY": "your_api_key_here"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
*Replace `/path/to/rowan-mcp` with the actual path where you cloned the repository*
|
|
87
|
+
|
|
88
|
+
**To find your path:**
|
|
89
|
+
```bash
|
|
90
|
+
# After cloning, run this in the rowan-mcp directory:
|
|
91
|
+
pwd
|
|
92
|
+
# Copy the output and use it as your "cwd" value
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### **4. Start Using**
|
|
96
|
+
Ask your AI: *"Calculate the pKa of aspirin"* or *"Optimize the geometry of caffeine"*
|
|
97
|
+
|
|
98
|
+
### **Alternative: Use .env file**
|
|
99
|
+
Instead of putting your API key in the MCP config, create a `.env` file:
|
|
100
|
+
```bash
|
|
101
|
+
# In the rowan-mcp directory:
|
|
102
|
+
echo "ROWAN_API_KEY=your_actual_api_key_here" > .env
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Then use this simpler config (no env section needed):
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"mcpServers": {
|
|
109
|
+
"rowan": {
|
|
110
|
+
"command": "uv",
|
|
111
|
+
"args": ["run", "python", "-m", "rowan_mcp"],
|
|
112
|
+
"cwd": "/path/to/rowan-mcp"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## **What You Can Do**
|
|
121
|
+
|
|
122
|
+
Ask the LLM to:
|
|
123
|
+
- **Calculate drug properties**: *"Predict drug-likeness of aspirin"*
|
|
124
|
+
- **Optimize molecular structures**: *"Optimize the geometry of aspirin"*
|
|
125
|
+
- **Predict chemical behavior**: *"What's the pKa of acetic acid?"*
|
|
126
|
+
- **Run calculations**: *"Calculate the HOMO and LUMO of benzene"*
|
|
127
|
+
|
|
128
|
+
## **System Requirements**
|
|
129
|
+
|
|
130
|
+
- **Python 3.10+** (Python 3.11+ recommended)
|
|
131
|
+
- **[uv](https://docs.astral.sh/uv/) package manager**
|
|
132
|
+
- **Rowan API key** (free at [labs.rowansci.com](https://labs.rowansci.com))
|
|
133
|
+
- **MCP-compatible client** (Claude Desktop, Continue, etc.)
|
|
134
|
+
|
|
135
|
+
## **Testing Your Setup**
|
|
136
|
+
|
|
137
|
+
You can test the server directly:
|
|
138
|
+
```bash
|
|
139
|
+
# In the rowan-mcp directory:
|
|
140
|
+
uv run python -m rowan_mcp --help
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## **Development**
|
|
144
|
+
|
|
145
|
+
The installation above is the same for development! Additional commands:
|
|
146
|
+
```bash
|
|
147
|
+
# Run server in HTTP/SSE mode
|
|
148
|
+
uv run python -m rowan_mcp --http
|
|
149
|
+
|
|
150
|
+
# Run server in STDIO mode (default)
|
|
151
|
+
uv run python -m rowan_mcp
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Available Tools
|
|
157
|
+
|
|
158
|
+
### Chemistry Calculations
|
|
159
|
+
- `rowan_basic_calculation` - Energy, optimization, frequencies
|
|
160
|
+
- `rowan_multistage_opt` - geometry optimization
|
|
161
|
+
- `rowan_electronic_properties` - HOMO/LUMO, orbitals
|
|
162
|
+
- `rowan_molecular_dynamics` - MD simulations
|
|
163
|
+
|
|
164
|
+
### Molecular Properties
|
|
165
|
+
- `rowan_pka` - Acid/base strength
|
|
166
|
+
- `rowan_conformers` - Conformational search
|
|
167
|
+
- `rowan_tautomers` - Tautomer enumeration
|
|
168
|
+
- `rowan_descriptors` - ML-ready molecular features
|
|
169
|
+
- `rowan_solubility` - Aqueous solubility
|
|
170
|
+
- `rowan_redox_potential` - Electrochemical potentials
|
|
171
|
+
|
|
172
|
+
### Drug Discovery
|
|
173
|
+
- `rowan_admet` - ADME-Tox properties
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
### Reactivity Analysis
|
|
177
|
+
- `rowan_fukui` - Reactivity sites
|
|
178
|
+
- `rowan_spin_states` - Spin multiplicities
|
|
179
|
+
|
|
180
|
+
### Project Management
|
|
181
|
+
- `rowan_folder_create/list/update/delete` - Organize calculations
|
|
182
|
+
- `rowan_workflow_create/list/status/stop` - Manage workflows
|
|
183
|
+
|
|
184
|
+
## Requirements
|
|
185
|
+
|
|
186
|
+
- Python 3.10+
|
|
187
|
+
- Rowan API key
|
|
188
|
+
- MCP-compatible AI assistant (Claude Desktop, etc.)
|
|
189
|
+
|
|
190
|
+
## Getting Help
|
|
191
|
+
|
|
192
|
+
- **Documentation**: [docs.rowansci.com](https://docs.rowansci.com/)
|
|
193
|
+
- or ping me!
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## **Todo**
|
|
198
|
+
|
|
199
|
+
- [ ] Remove unnecessary AI spaghetti formatting 🙃
|
|
200
|
+
- [ ] Some complex conformer searches hang on "running"
|
|
201
|
+
- [ ] Edit MCP one-liner context
|
|
202
|
+
- [ ] Transition state finding and IRC
|
|
203
|
+
- [X] `rowan_scan` - Potential energy surfaces
|
|
204
|
+
- [ ] `rowan_docking` - Protein-ligand docking
|
|
205
|
+
- [X] add in h-bond, BDE and macroscopic pka, logD, BBB
|
|
206
|
+
- [ ] Folder listing API bug (returns 500 error) - Rowan side?
|
|
207
|
+
- [ ] Multistage optimization sometimes shows unexpected imaginary frequencies
|
|
208
|
+
- [ ] Some calculations show as finished in logs but not in Rowan UI
|
|
209
|
+
|
|
210
|
+
## Citation
|
|
211
|
+
|
|
212
|
+
If you use this MCP tool in your research, please cite the underlying Rowan platform:
|
|
213
|
+
|
|
214
|
+
Rowan Scientific. https://www.rowansci.com (accessed 2025-07-01).
|
|
215
|
+
|
|
216
|
+
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).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
rowan_mcp/__init__.py,sha256=5aKQpVtWYO9EkP3ohOtYwQhdDQPAlD_pcrdDA4eTabk,381
|
|
2
|
+
rowan_mcp/__main__.py,sha256=I7wCpoCPLrCx_tWozFBtCtnoL65lmgDiZnEumj3vijM,388
|
|
3
|
+
rowan_mcp/server.py,sha256=47MsJchxzqRVd4mFQXR81wYXBX8B8fFUkl7wDYB5uMs,7702
|
|
4
|
+
rowan_mcp/functions/admet.py,sha256=m_RD7OJ8GDocEInHw4zOmk4tBf2mWBGTL3LVt-vo_mU,2438
|
|
5
|
+
rowan_mcp/functions/bde.py,sha256=x6Wmnqzy3zRDvSM_AlxSm_0ksg9lI2zV1PiBzXjU_sU,3634
|
|
6
|
+
rowan_mcp/functions/calculation_retrieve.py,sha256=jL28RKvZX3QUeZ_qDlBfLdGG_Lsk6LyA1xjsHvPM-mg,3376
|
|
7
|
+
rowan_mcp/functions/conformers.py,sha256=tzMMeZ44Vw5ZmD9wZtGxyFlwoeu1izr6wdAFNwwwGKA,5171
|
|
8
|
+
rowan_mcp/functions/descriptors.py,sha256=HJXsMZmgx-PdqfSe39D0BcMxzRYmR38gt98fXIMc69w,2747
|
|
9
|
+
rowan_mcp/functions/docking.py,sha256=J-bcgig_68x07eCpVPG1ZJKdUFsPVeDuvhoeM9Y9V9I,13954
|
|
10
|
+
rowan_mcp/functions/docking_enhanced.py,sha256=lwviIWg_26VW8VlITIlHd-Lbw8E25tnvNrLfzK6fLJs,5528
|
|
11
|
+
rowan_mcp/functions/electronic_properties.py,sha256=qJpn-iEXTsk_wVcHYVq-7TLK7_T3JP-z7viHxg2L434,11741
|
|
12
|
+
rowan_mcp/functions/folder_management.py,sha256=qPZ6cjC2AFxr1BhXpRsJk2AZAF7GV5ojy6oJDQjYKbw,4874
|
|
13
|
+
rowan_mcp/functions/fukui.py,sha256=HvR8qC_eBJ2ojGhf50DIGVr9luowMvfPnU8txyfCVaQ,15339
|
|
14
|
+
rowan_mcp/functions/hydrogen_bond_basicity.py,sha256=xH7czHEF_stKnQoh-F93b8G8936DCTYjkf6nTa7kmKo,3081
|
|
15
|
+
rowan_mcp/functions/irc.py,sha256=ulMfkpVTXoQDwFVzAJRcEbyZpFxM2LucO7Mq-XkgNTs,4096
|
|
16
|
+
rowan_mcp/functions/macropka.py,sha256=CreAYpGKpJ9pQBgpEHXnN3kCH33qbm08Xa7jKhPkMic,8219
|
|
17
|
+
rowan_mcp/functions/molecular_converter.py,sha256=j9YeCnaHZahwkhG2EZNPu5VVmGy2sqIHPB_qf1ojoec,17349
|
|
18
|
+
rowan_mcp/functions/molecular_dynamics.py,sha256=yzA03LeFv8K59Cg1SAnavWwmodl4_KW667pRHJQTXNw,6990
|
|
19
|
+
rowan_mcp/functions/molecule_cache.db,sha256=Fq1LLzSFPy4f7MrZPLhMhU3yA_gE10YQUPLhIQcfHQU,28672
|
|
20
|
+
rowan_mcp/functions/molecule_lookup.py,sha256=I0infAB-9zN6LNCEyEQNDvLvlQ5L5nOrVJGWF6jLD9s,18466
|
|
21
|
+
rowan_mcp/functions/multistage_opt.py,sha256=lWwgXZgpXnWsjgonkA1toks4t01Cdxo822xmT2EOssM,6185
|
|
22
|
+
rowan_mcp/functions/pdb_handler.py,sha256=EnhRqxStnke5kiSnDaWOzcJT8fAHW6VVIhTaH6ODkWE,6241
|
|
23
|
+
rowan_mcp/functions/pka.py,sha256=EFGIFtq2HrtNzcU5-3-ncgmpiwIGnOE-vROjr_eC1Nk,5014
|
|
24
|
+
rowan_mcp/functions/redox_potential.py,sha256=NXU1sEkMqI-2-LD9qv7qaBhkmAvwU3dFGLQ988DG4cc,13114
|
|
25
|
+
rowan_mcp/functions/scan.py,sha256=LWr6YKwCG3gv0ZtyCbPaJ81NlQyFTHFZ4WnXvSRxmVg,24235
|
|
26
|
+
rowan_mcp/functions/scan_analyzer.py,sha256=vnAokCFOxYbv3Px3p9dEIxQXL7ot6UMjeUfMb_ZF6Ug,13479
|
|
27
|
+
rowan_mcp/functions/solubility.py,sha256=-duTeVLEhnhNtNkA0L_cBk8Xjqw5bbAXrrEFqtElg4I,11112
|
|
28
|
+
rowan_mcp/functions/spin_states.py,sha256=NG7uJjTi_Fx-E4Qr7RzjNhfFmKlHfIGMD0Uhyo7sKT4,31895
|
|
29
|
+
rowan_mcp/functions/system_management.py,sha256=UwdKD46FNEJh1zEPpvFW7-JBD6g8x-xSbmH7lrcubx0,20089
|
|
30
|
+
rowan_mcp/functions/tautomers.py,sha256=oXFUpMgCVtXy2JnyCb8G04vYj_anJj4WThD26ZGOsZ0,2694
|
|
31
|
+
rowan_mcp/functions/workflow_management.py,sha256=EqXRqj0EuJz7h2igqOHBpq23Qyo-KT9geWp39URacxw,21130
|
|
32
|
+
rowan_mcp-0.1.0.dist-info/METADATA,sha256=TfHD5ogfzGBMh3oUjSrj-HuUWBerl31bhlca61Gtgug,6336
|
|
33
|
+
rowan_mcp-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
34
|
+
rowan_mcp-0.1.0.dist-info/entry_points.txt,sha256=QkmK3GHkTNA6gqyTIFrl2V2eVBm-VBdRAlDNsvi4Rl0,52
|
|
35
|
+
rowan_mcp-0.1.0.dist-info/RECORD,,
|