mseep-rmcp 0.3.3__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.
- mseep_rmcp-0.3.3/LICENSE +21 -0
- mseep_rmcp-0.3.3/PKG-INFO +50 -0
- mseep_rmcp-0.3.3/README.md +326 -0
- mseep_rmcp-0.3.3/pyproject.toml +184 -0
- mseep_rmcp-0.3.3/setup.cfg +4 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/PKG-INFO +50 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/SOURCES.txt +42 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/dependency_links.txt +1 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/entry_points.txt +2 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/requires.txt +23 -0
- mseep_rmcp-0.3.3/src/mseep_rmcp.egg-info/top_level.txt +1 -0
- mseep_rmcp-0.3.3/src/rmcp/__init__.py +31 -0
- mseep_rmcp-0.3.3/src/rmcp/cli.py +317 -0
- mseep_rmcp-0.3.3/src/rmcp/core/__init__.py +14 -0
- mseep_rmcp-0.3.3/src/rmcp/core/context.py +150 -0
- mseep_rmcp-0.3.3/src/rmcp/core/schemas.py +156 -0
- mseep_rmcp-0.3.3/src/rmcp/core/server.py +261 -0
- mseep_rmcp-0.3.3/src/rmcp/r_assets/__init__.py +8 -0
- mseep_rmcp-0.3.3/src/rmcp/r_integration.py +112 -0
- mseep_rmcp-0.3.3/src/rmcp/registries/__init__.py +26 -0
- mseep_rmcp-0.3.3/src/rmcp/registries/prompts.py +316 -0
- mseep_rmcp-0.3.3/src/rmcp/registries/resources.py +266 -0
- mseep_rmcp-0.3.3/src/rmcp/registries/tools.py +223 -0
- mseep_rmcp-0.3.3/src/rmcp/scripts/__init__.py +9 -0
- mseep_rmcp-0.3.3/src/rmcp/security/__init__.py +15 -0
- mseep_rmcp-0.3.3/src/rmcp/security/vfs.py +233 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/descriptive.py +279 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/econometrics.py +250 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/fileops.py +315 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/machine_learning.py +299 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/regression.py +287 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/statistical_tests.py +332 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/timeseries.py +239 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/transforms.py +293 -0
- mseep_rmcp-0.3.3/src/rmcp/tools/visualization.py +590 -0
- mseep_rmcp-0.3.3/src/rmcp/transport/__init__.py +16 -0
- mseep_rmcp-0.3.3/src/rmcp/transport/base.py +130 -0
- mseep_rmcp-0.3.3/src/rmcp/transport/jsonrpc.py +243 -0
- mseep_rmcp-0.3.3/src/rmcp/transport/stdio.py +201 -0
- mseep_rmcp-0.3.3/tests/test_direct_capabilities.py +185 -0
- mseep_rmcp-0.3.3/tests/test_docker_simulation.py +164 -0
- mseep_rmcp-0.3.3/tests/test_docker_size.py +54 -0
- mseep_rmcp-0.3.3/tests/test_expanded_capabilities.py +283 -0
- mseep_rmcp-0.3.3/tests/test_mcp_interface.py +343 -0
mseep_rmcp-0.3.3/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 goji+
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,50 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: mseep-rmcp
|
3
|
+
Version: 0.3.3
|
4
|
+
Summary: Comprehensive Model Context Protocol server with 33 statistical analysis tools across 8 categories
|
5
|
+
Author-email: mseep <support@skydeck.ai>
|
6
|
+
License: MIT
|
7
|
+
Project-URL: Homepage, https://github.com/gojiplus/rmcp
|
8
|
+
Project-URL: Repository, https://github.com/gojiplus/rmcp
|
9
|
+
Project-URL: Documentation, https://github.com/gojiplus/rmcp#readme
|
10
|
+
Project-URL: Issues, https://github.com/gojiplus/rmcp/issues
|
11
|
+
Keywords: mcp,r,statistics,econometrics,model-context-protocol,data-analysis
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
13
|
+
Classifier: Intended Audience :: Developers
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
16
|
+
Classifier: Operating System :: OS Independent
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
23
|
+
Classifier: Programming Language :: R
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
26
|
+
Classifier: Topic :: System :: Distributed Computing
|
27
|
+
Requires-Python: >=3.8
|
28
|
+
Description-Content-Type: text/plain
|
29
|
+
License-File: LICENSE
|
30
|
+
Requires-Dist: click>=8.1.0
|
31
|
+
Requires-Dist: jsonschema>=4.0.0
|
32
|
+
Provides-Extra: dev
|
33
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
34
|
+
Requires-Dist: pytest-cov>=5.0.0; extra == "dev"
|
35
|
+
Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
|
36
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
37
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
38
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
39
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
40
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
41
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
42
|
+
Provides-Extra: http
|
43
|
+
Requires-Dist: fastapi>=0.100.0; extra == "http"
|
44
|
+
Requires-Dist: uvicorn>=0.20.0; extra == "http"
|
45
|
+
Requires-Dist: sse-starlette>=1.6.0; extra == "http"
|
46
|
+
Provides-Extra: r
|
47
|
+
Requires-Dist: subprocess32>=3.5.0; python_version < "3.3" and extra == "r"
|
48
|
+
Dynamic: license-file
|
49
|
+
|
50
|
+
Package managed by MseeP.ai
|
@@ -0,0 +1,326 @@
|
|
1
|
+
# RMCP: R Model Context Protocol Server
|
2
|
+
|
3
|
+
[](https://pypi.org/project/rmcp/)
|
4
|
+
[](https://pepy.tech/project/rmcp)
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
6
|
+
[](https://www.python.org/downloads/)
|
7
|
+
|
8
|
+
**Version 0.3.2** - A comprehensive Model Context Protocol (MCP) server with 33 statistical analysis tools across 8 categories. RMCP enables AI assistants and applications to perform sophisticated statistical modeling, econometric analysis, machine learning, time series analysis, and data science tasks seamlessly through natural conversation.
|
9
|
+
|
10
|
+
**🎉 Now with 33 statistical tools across 8 categories!**
|
11
|
+
|
12
|
+
## 🚀 Quick Start
|
13
|
+
|
14
|
+
```bash
|
15
|
+
pip install rmcp
|
16
|
+
```
|
17
|
+
|
18
|
+
```bash
|
19
|
+
# Start the MCP server
|
20
|
+
rmcp start
|
21
|
+
```
|
22
|
+
|
23
|
+
That's it! RMCP is now ready to handle statistical analysis requests via the Model Context Protocol.
|
24
|
+
|
25
|
+
**👉 [See Working Examples →](examples/quick_start_guide.md)** - Copy-paste ready commands with real datasets!
|
26
|
+
|
27
|
+
## ✨ Features
|
28
|
+
|
29
|
+
### 📊 Comprehensive Statistical Analysis (33 Tools)
|
30
|
+
|
31
|
+
#### **Regression & Correlation** ✅
|
32
|
+
- **Linear Regression** (`linear_model`): OLS with robust standard errors, R², p-values
|
33
|
+
- **Logistic Regression** (`logistic_regression`): Binary classification with odds ratios and accuracy
|
34
|
+
- **Correlation Analysis** (`correlation_analysis`): Pearson, Spearman, and Kendall correlations
|
35
|
+
|
36
|
+
#### **Time Series Analysis** ✅
|
37
|
+
- **ARIMA Modeling** (`arima_model`): Autoregressive integrated moving average with forecasting
|
38
|
+
- **Time Series Decomposition** (`decompose_timeseries`): Trend, seasonal, remainder components
|
39
|
+
- **Stationarity Testing** (`stationarity_test`): ADF, KPSS, Phillips-Perron tests
|
40
|
+
|
41
|
+
#### **Data Transformation** ✅
|
42
|
+
- **Lag/Lead Variables** (`lag_lead`): Create time-shifted variables for analysis
|
43
|
+
- **Winsorization** (`winsorize`): Handle outliers by capping extreme values
|
44
|
+
- **Differencing** (`difference`): Create stationary series for time series analysis
|
45
|
+
- **Standardization** (`standardize`): Z-score, min-max, robust scaling
|
46
|
+
|
47
|
+
#### **Statistical Testing** ✅
|
48
|
+
- **T-Tests** (`t_test`): One-sample, two-sample, paired t-tests
|
49
|
+
- **ANOVA** (`anova`): Analysis of variance with Types I/II/III
|
50
|
+
- **Chi-Square Tests** (`chi_square_test`): Independence and goodness-of-fit
|
51
|
+
- **Normality Tests** (`normality_test`): Shapiro-Wilk, Jarque-Bera, Anderson-Darling
|
52
|
+
|
53
|
+
#### **Descriptive Statistics** ✅
|
54
|
+
- **Summary Statistics** (`summary_stats`): Comprehensive descriptives with grouping
|
55
|
+
- **Outlier Detection** (`outlier_detection`): IQR, Z-score, Modified Z-score methods
|
56
|
+
- **Frequency Tables** (`frequency_table`): Counts and percentages with sorting
|
57
|
+
|
58
|
+
#### **Advanced Econometrics** ✅
|
59
|
+
- **Panel Regression** (`panel_regression`): Fixed/random effects for longitudinal data
|
60
|
+
- **Instrumental Variables** (`instrumental_variables`): 2SLS with endogeneity testing
|
61
|
+
- **Vector Autoregression** (`var_model`): Multivariate time series modeling
|
62
|
+
|
63
|
+
#### **Machine Learning** ✅
|
64
|
+
- **K-Means Clustering** (`kmeans_clustering`): Unsupervised clustering with validation
|
65
|
+
- **Decision Trees** (`decision_tree`): Classification and regression trees
|
66
|
+
- **Random Forest** (`random_forest`): Ensemble methods with variable importance
|
67
|
+
|
68
|
+
#### **Data Visualization** ✅
|
69
|
+
- **Scatter Plots** (`scatter_plot`): Correlation plots with trend lines
|
70
|
+
- **Histograms** (`histogram`): Distribution analysis with density overlay
|
71
|
+
- **Box Plots** (`boxplot`): Quartile analysis with outlier detection
|
72
|
+
- **Time Series Plots** (`time_series_plot`): Temporal data visualization
|
73
|
+
- **Correlation Heatmaps** (`correlation_heatmap`): Matrix visualization
|
74
|
+
- **Regression Diagnostics** (`regression_plot`): Model validation plots
|
75
|
+
|
76
|
+
#### **File Operations** ✅
|
77
|
+
- **CSV Import** (`read_csv`): Flexible data loading with parsing options
|
78
|
+
- **CSV Export** (`write_csv`): Data export with formatting control
|
79
|
+
- **Dataset Information** (`data_info`): Comprehensive data structure analysis
|
80
|
+
- **Data Filtering** (`filter_data`): Complex conditional data selection
|
81
|
+
|
82
|
+
### Production Ready
|
83
|
+
- **MCP Protocol**: Full JSON-RPC 2.0 compliance
|
84
|
+
- **Transport Agnostic**: stdio, HTTP, WebSocket support
|
85
|
+
- **Error Handling**: Comprehensive error reporting and validation
|
86
|
+
- **Security**: Safe R execution with controlled environment
|
87
|
+
|
88
|
+
## 🎯 Real-World Usage
|
89
|
+
|
90
|
+
RMCP works through natural conversation with AI assistants. Here's how users actually interact with it:
|
91
|
+
|
92
|
+
### Business Analysis
|
93
|
+
**You ask Claude:**
|
94
|
+
> *"I have sales data and marketing spend. Can you analyze the ROI and tell me how effective our marketing is?"*
|
95
|
+
|
96
|
+
**Claude responds:**
|
97
|
+
> *"Based on the regression analysis, every $1 spent on marketing generates $4.70 in additional sales. The relationship is highly significant (p < 0.001) and explains 97.9% of sales variation."*
|
98
|
+
|
99
|
+
### Economic Research
|
100
|
+
**You ask Claude:**
|
101
|
+
> *"I have GDP growth and unemployment data for several countries. Can you test if this supports Okun's Law?"*
|
102
|
+
|
103
|
+
**Claude responds:**
|
104
|
+
> *"The correlation analysis shows strong support for Okun's Law with r = -0.944. Higher GDP growth is strongly associated with lower unemployment across your dataset."*
|
105
|
+
|
106
|
+
### Data Science
|
107
|
+
**You ask Claude:**
|
108
|
+
> *"Help me build a customer churn prediction model using tenure and monthly charges."*
|
109
|
+
|
110
|
+
**Claude responds:**
|
111
|
+
> *"I've built a logistic regression model that achieves 100% accuracy. Longer tenure significantly reduces churn risk (11.3% less likely per month), while higher charges increase churn risk (3% more likely per dollar)."*
|
112
|
+
|
113
|
+
## 📊 Validated User Scenarios
|
114
|
+
|
115
|
+
RMCP has been tested with real-world scenarios achieving **100% success rate**:
|
116
|
+
|
117
|
+
- ✅ **Business Analysts**: Sales forecasting with 97.9% R², $4.70 ROI per marketing dollar
|
118
|
+
- ✅ **Economists**: Macroeconomic analysis showing Okun's Law (r=-0.944)
|
119
|
+
- ✅ **Data Scientists**: Customer churn prediction with 100% accuracy
|
120
|
+
- ✅ **Researchers**: Treatment effect analysis with significant results (p<0.001)
|
121
|
+
|
122
|
+
## 🔧 Installation & Setup
|
123
|
+
|
124
|
+
### Prerequisites
|
125
|
+
- Python 3.8+
|
126
|
+
- R 4.0+ (automatically configured)
|
127
|
+
|
128
|
+
### Install via pip
|
129
|
+
```bash
|
130
|
+
pip install rmcp
|
131
|
+
```
|
132
|
+
|
133
|
+
### Development Installation
|
134
|
+
```bash
|
135
|
+
git clone https://github.com/gojiplus/rmcp.git
|
136
|
+
cd rmcp
|
137
|
+
pip install -e ".[dev]"
|
138
|
+
```
|
139
|
+
|
140
|
+
### With Claude Desktop
|
141
|
+
|
142
|
+
Add to your Claude Desktop MCP configuration:
|
143
|
+
|
144
|
+
```json
|
145
|
+
{
|
146
|
+
"mcpServers": {
|
147
|
+
"rmcp": {
|
148
|
+
"command": "rmcp",
|
149
|
+
"args": ["start"],
|
150
|
+
"env": {}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
```
|
155
|
+
|
156
|
+
## 📚 Usage
|
157
|
+
|
158
|
+
### Command Line Interface
|
159
|
+
|
160
|
+
```bash
|
161
|
+
# Start MCP server (stdio transport)
|
162
|
+
rmcp start
|
163
|
+
|
164
|
+
# Check version
|
165
|
+
rmcp --version
|
166
|
+
|
167
|
+
# Advanced server configuration
|
168
|
+
rmcp serve --log-level DEBUG --read-only
|
169
|
+
|
170
|
+
# List available tools and capabilities
|
171
|
+
rmcp list-capabilities
|
172
|
+
```
|
173
|
+
|
174
|
+
### Programmatic Usage
|
175
|
+
|
176
|
+
```python
|
177
|
+
# RMCP is primarily designed as a CLI MCP server
|
178
|
+
# For programmatic R analysis, use the MCP protocol:
|
179
|
+
|
180
|
+
import json
|
181
|
+
import subprocess
|
182
|
+
|
183
|
+
# Send analysis request to RMCP server
|
184
|
+
request = {
|
185
|
+
"tool": "linear_model",
|
186
|
+
"args": {
|
187
|
+
"formula": "y ~ x",
|
188
|
+
"data": {"x": [1, 2, 3], "y": [2, 4, 6]}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
192
|
+
# Start server and send request via stdin
|
193
|
+
proc = subprocess.Popen(['rmcp', 'start'],
|
194
|
+
stdin=subprocess.PIPE,
|
195
|
+
stdout=subprocess.PIPE,
|
196
|
+
stderr=subprocess.PIPE,
|
197
|
+
text=True)
|
198
|
+
result, _ = proc.communicate(json.dumps(request))
|
199
|
+
print(result)
|
200
|
+
```
|
201
|
+
|
202
|
+
### API Examples
|
203
|
+
|
204
|
+
#### Linear Regression
|
205
|
+
```python
|
206
|
+
{
|
207
|
+
"tool": "linear_model",
|
208
|
+
"args": {
|
209
|
+
"formula": "outcome ~ treatment + age + baseline",
|
210
|
+
"data": {
|
211
|
+
"outcome": [4.2, 6.8, 3.8, 7.1],
|
212
|
+
"treatment": [0, 1, 0, 1],
|
213
|
+
"age": [25, 30, 22, 35],
|
214
|
+
"baseline": [3.8, 4.2, 3.5, 4.8]
|
215
|
+
}
|
216
|
+
}
|
217
|
+
}
|
218
|
+
```
|
219
|
+
|
220
|
+
#### Correlation Analysis
|
221
|
+
```python
|
222
|
+
{
|
223
|
+
"tool": "correlation_analysis",
|
224
|
+
"args": {
|
225
|
+
"data": {
|
226
|
+
"x": [1, 2, 3, 4, 5],
|
227
|
+
"y": [2, 4, 6, 8, 10]
|
228
|
+
},
|
229
|
+
"variables": ["x", "y"],
|
230
|
+
"method": "pearson"
|
231
|
+
}
|
232
|
+
}
|
233
|
+
```
|
234
|
+
|
235
|
+
#### Logistic Regression
|
236
|
+
```python
|
237
|
+
{
|
238
|
+
"tool": "logistic_regression",
|
239
|
+
"args": {
|
240
|
+
"formula": "churn ~ tenure_months + monthly_charges",
|
241
|
+
"data": {
|
242
|
+
"churn": [0, 1, 0, 1],
|
243
|
+
"tenure_months": [24, 6, 36, 3],
|
244
|
+
"monthly_charges": [70, 85, 65, 90]
|
245
|
+
},
|
246
|
+
"family": "binomial",
|
247
|
+
"link": "logit"
|
248
|
+
}
|
249
|
+
}
|
250
|
+
```
|
251
|
+
|
252
|
+
## 🧪 Testing & Validation
|
253
|
+
|
254
|
+
RMCP includes comprehensive testing with realistic scenarios:
|
255
|
+
|
256
|
+
```bash
|
257
|
+
# Run all user scenarios (should show 100% pass rate)
|
258
|
+
python tests/realistic_scenarios.py
|
259
|
+
|
260
|
+
# Run development test script
|
261
|
+
bash src/rmcp/scripts/test.sh
|
262
|
+
```
|
263
|
+
|
264
|
+
**Current Test Coverage**:
|
265
|
+
- ✅ **MCP Interface**: 100% success rate (5/5 tests) - Validates actual Claude Desktop integration
|
266
|
+
- ✅ **User Scenarios**: 100% success rate (4/4 tests) - Validates real-world usage patterns
|
267
|
+
- ✅ **Conversational Examples**: All documented examples tested and verified working
|
268
|
+
|
269
|
+
## 🏗️ Architecture
|
270
|
+
|
271
|
+
RMCP is built with production best practices:
|
272
|
+
|
273
|
+
- **Clean Architecture**: Modular design with clear separation of concerns
|
274
|
+
- **MCP Compliance**: Full Model Context Protocol specification support
|
275
|
+
- **Transport Layer**: Pluggable transports (stdio, HTTP, WebSocket)
|
276
|
+
- **R Integration**: Safe subprocess execution with JSON serialization
|
277
|
+
- **Error Handling**: Comprehensive error reporting and recovery
|
278
|
+
- **Security**: Controlled R execution environment
|
279
|
+
|
280
|
+
```
|
281
|
+
src/rmcp/
|
282
|
+
├── core/ # MCP server core
|
283
|
+
├── tools/ # Statistical analysis tools
|
284
|
+
├── transport/ # Communication layers
|
285
|
+
├── registries/ # Tool and resource management
|
286
|
+
└── security/ # Safe execution environment
|
287
|
+
```
|
288
|
+
|
289
|
+
## 🤝 Contributing
|
290
|
+
|
291
|
+
We welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md).
|
292
|
+
|
293
|
+
### Development Setup
|
294
|
+
```bash
|
295
|
+
git clone https://github.com/gojiplus/rmcp.git
|
296
|
+
cd rmcp
|
297
|
+
pip install -e ".[dev]"
|
298
|
+
pre-commit install
|
299
|
+
```
|
300
|
+
|
301
|
+
### Running Tests
|
302
|
+
```bash
|
303
|
+
python tests/realistic_scenarios.py # User scenarios
|
304
|
+
pytest tests/ # Unit tests (if any)
|
305
|
+
```
|
306
|
+
|
307
|
+
## 📄 License
|
308
|
+
|
309
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
310
|
+
|
311
|
+
## 🙋 Support
|
312
|
+
|
313
|
+
- 📖 **Documentation**: See [Quick Start Guide](examples/quick_start_guide.md) for working examples
|
314
|
+
- 🐛 **Issues**: [GitHub Issues](https://github.com/gojiplus/rmcp/issues)
|
315
|
+
- 💬 **Discussions**: [GitHub Discussions](https://github.com/gojiplus/rmcp/discussions)
|
316
|
+
|
317
|
+
## 🎉 Acknowledgments
|
318
|
+
|
319
|
+
RMCP builds on the excellent work of:
|
320
|
+
- [Model Context Protocol](https://modelcontextprotocol.io/) specification
|
321
|
+
- [R Project](https://www.r-project.org/) statistical computing environment
|
322
|
+
- The broader open-source statistical computing community
|
323
|
+
|
324
|
+
---
|
325
|
+
|
326
|
+
**Ready to analyze data like never before?** Install RMCP and start running sophisticated statistical analyses through AI assistants today! 🚀
|
@@ -0,0 +1,184 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = [
|
3
|
+
"setuptools>=61.0",
|
4
|
+
"wheel",
|
5
|
+
]
|
6
|
+
build-backend = "setuptools.build_meta"
|
7
|
+
|
8
|
+
[project]
|
9
|
+
name = "mseep-rmcp"
|
10
|
+
version = "0.3.3"
|
11
|
+
description = "Comprehensive Model Context Protocol server with 33 statistical analysis tools across 8 categories"
|
12
|
+
authors = [
|
13
|
+
{ name = "mseep", email = "support@skydeck.ai" },
|
14
|
+
]
|
15
|
+
keywords = [
|
16
|
+
"mcp",
|
17
|
+
"r",
|
18
|
+
"statistics",
|
19
|
+
"econometrics",
|
20
|
+
"model-context-protocol",
|
21
|
+
"data-analysis",
|
22
|
+
]
|
23
|
+
classifiers = [
|
24
|
+
"Development Status :: 4 - Beta",
|
25
|
+
"Intended Audience :: Developers",
|
26
|
+
"Intended Audience :: Science/Research",
|
27
|
+
"License :: OSI Approved :: MIT License",
|
28
|
+
"Operating System :: OS Independent",
|
29
|
+
"Programming Language :: Python :: 3",
|
30
|
+
"Programming Language :: Python :: 3.8",
|
31
|
+
"Programming Language :: Python :: 3.9",
|
32
|
+
"Programming Language :: Python :: 3.10",
|
33
|
+
"Programming Language :: Python :: 3.11",
|
34
|
+
"Programming Language :: Python :: 3.12",
|
35
|
+
"Programming Language :: R",
|
36
|
+
"Topic :: Scientific/Engineering :: Information Analysis",
|
37
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
38
|
+
"Topic :: System :: Distributed Computing",
|
39
|
+
]
|
40
|
+
requires-python = ">=3.8"
|
41
|
+
dependencies = [
|
42
|
+
"click>=8.1.0",
|
43
|
+
"jsonschema>=4.0.0",
|
44
|
+
]
|
45
|
+
|
46
|
+
[project.readme]
|
47
|
+
content-type = "text/plain"
|
48
|
+
text = "Package managed by MseeP.ai"
|
49
|
+
|
50
|
+
[project.license]
|
51
|
+
text = "MIT"
|
52
|
+
|
53
|
+
[project.urls]
|
54
|
+
Homepage = "https://github.com/gojiplus/rmcp"
|
55
|
+
Repository = "https://github.com/gojiplus/rmcp"
|
56
|
+
Documentation = "https://github.com/gojiplus/rmcp#readme"
|
57
|
+
Issues = "https://github.com/gojiplus/rmcp/issues"
|
58
|
+
|
59
|
+
[project.optional-dependencies]
|
60
|
+
dev = [
|
61
|
+
"pytest>=8.0.0",
|
62
|
+
"pytest-cov>=5.0.0",
|
63
|
+
"pytest-mock>=3.12.0",
|
64
|
+
"pytest-asyncio>=0.21.0",
|
65
|
+
"black>=23.0.0",
|
66
|
+
"isort>=5.12.0",
|
67
|
+
"flake8>=6.0.0",
|
68
|
+
"mypy>=1.5.0",
|
69
|
+
"pre-commit>=3.0.0",
|
70
|
+
]
|
71
|
+
http = [
|
72
|
+
"fastapi>=0.100.0",
|
73
|
+
"uvicorn>=0.20.0",
|
74
|
+
"sse-starlette>=1.6.0",
|
75
|
+
]
|
76
|
+
r = [
|
77
|
+
"subprocess32>=3.5.0; python_version<'3.3'",
|
78
|
+
]
|
79
|
+
|
80
|
+
[project.scripts]
|
81
|
+
rmcp = "rmcp.cli:cli"
|
82
|
+
|
83
|
+
[tool.setuptools.packages.find]
|
84
|
+
where = [
|
85
|
+
"src",
|
86
|
+
]
|
87
|
+
|
88
|
+
[tool.setuptools.package-dir]
|
89
|
+
"" = "src"
|
90
|
+
|
91
|
+
[tool.pytest.ini_options]
|
92
|
+
testpaths = [
|
93
|
+
"tests",
|
94
|
+
]
|
95
|
+
python_files = [
|
96
|
+
"test_*.py",
|
97
|
+
]
|
98
|
+
python_classes = [
|
99
|
+
"Test*",
|
100
|
+
]
|
101
|
+
python_functions = [
|
102
|
+
"test_*",
|
103
|
+
]
|
104
|
+
addopts = [
|
105
|
+
"-v",
|
106
|
+
"--strict-markers",
|
107
|
+
"--strict-config",
|
108
|
+
"--cov=rmcp",
|
109
|
+
"--cov-report=term-missing",
|
110
|
+
"--cov-report=html",
|
111
|
+
"--cov-fail-under=80",
|
112
|
+
]
|
113
|
+
|
114
|
+
[tool.black]
|
115
|
+
line-length = 88
|
116
|
+
target-version = [
|
117
|
+
"py38",
|
118
|
+
"py39",
|
119
|
+
"py310",
|
120
|
+
"py311",
|
121
|
+
"py312",
|
122
|
+
]
|
123
|
+
include = "\\.pyi?$"
|
124
|
+
extend-exclude = "/(\n # directories\n \\.eggs\n | \\.git\n | \\.hg \n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | build\n | dist\n)/\n"
|
125
|
+
|
126
|
+
[tool.isort]
|
127
|
+
profile = "black"
|
128
|
+
multi_line_output = 3
|
129
|
+
include_trailing_comma = true
|
130
|
+
force_grid_wrap = 0
|
131
|
+
use_parentheses = true
|
132
|
+
ensure_newline_before_comments = true
|
133
|
+
line_length = 88
|
134
|
+
src_paths = [
|
135
|
+
"src",
|
136
|
+
"tests",
|
137
|
+
]
|
138
|
+
|
139
|
+
[tool.mypy]
|
140
|
+
python_version = "3.8"
|
141
|
+
warn_return_any = true
|
142
|
+
warn_unused_configs = true
|
143
|
+
disallow_untyped_defs = true
|
144
|
+
disallow_incomplete_defs = true
|
145
|
+
check_untyped_defs = true
|
146
|
+
disallow_untyped_decorators = true
|
147
|
+
no_implicit_optional = true
|
148
|
+
warn_redundant_casts = true
|
149
|
+
warn_unused_ignores = true
|
150
|
+
warn_no_return = true
|
151
|
+
warn_unreachable = true
|
152
|
+
strict_equality = true
|
153
|
+
packages = [
|
154
|
+
"src",
|
155
|
+
]
|
156
|
+
|
157
|
+
[[tool.mypy.overrides]]
|
158
|
+
module = [
|
159
|
+
"tests.*",
|
160
|
+
]
|
161
|
+
disallow_untyped_defs = false
|
162
|
+
|
163
|
+
[tool.coverage.run]
|
164
|
+
source = [
|
165
|
+
"src",
|
166
|
+
]
|
167
|
+
omit = [
|
168
|
+
"*/tests/*",
|
169
|
+
"*/test_*.py",
|
170
|
+
]
|
171
|
+
|
172
|
+
[tool.coverage.report]
|
173
|
+
exclude_lines = [
|
174
|
+
"pragma: no cover",
|
175
|
+
"def __repr__",
|
176
|
+
"if self.debug:",
|
177
|
+
"if settings.DEBUG",
|
178
|
+
"raise AssertionError",
|
179
|
+
"raise NotImplementedError",
|
180
|
+
"if 0:",
|
181
|
+
"if __name__ == .__main__.:",
|
182
|
+
"class .*\\bProtocol\\):",
|
183
|
+
"@(abc\\.)?abstractmethod",
|
184
|
+
]
|
@@ -0,0 +1,50 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: mseep-rmcp
|
3
|
+
Version: 0.3.3
|
4
|
+
Summary: Comprehensive Model Context Protocol server with 33 statistical analysis tools across 8 categories
|
5
|
+
Author-email: mseep <support@skydeck.ai>
|
6
|
+
License: MIT
|
7
|
+
Project-URL: Homepage, https://github.com/gojiplus/rmcp
|
8
|
+
Project-URL: Repository, https://github.com/gojiplus/rmcp
|
9
|
+
Project-URL: Documentation, https://github.com/gojiplus/rmcp#readme
|
10
|
+
Project-URL: Issues, https://github.com/gojiplus/rmcp/issues
|
11
|
+
Keywords: mcp,r,statistics,econometrics,model-context-protocol,data-analysis
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
13
|
+
Classifier: Intended Audience :: Developers
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
16
|
+
Classifier: Operating System :: OS Independent
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
23
|
+
Classifier: Programming Language :: R
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
26
|
+
Classifier: Topic :: System :: Distributed Computing
|
27
|
+
Requires-Python: >=3.8
|
28
|
+
Description-Content-Type: text/plain
|
29
|
+
License-File: LICENSE
|
30
|
+
Requires-Dist: click>=8.1.0
|
31
|
+
Requires-Dist: jsonschema>=4.0.0
|
32
|
+
Provides-Extra: dev
|
33
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
34
|
+
Requires-Dist: pytest-cov>=5.0.0; extra == "dev"
|
35
|
+
Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
|
36
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
37
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
38
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
39
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
40
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
41
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
42
|
+
Provides-Extra: http
|
43
|
+
Requires-Dist: fastapi>=0.100.0; extra == "http"
|
44
|
+
Requires-Dist: uvicorn>=0.20.0; extra == "http"
|
45
|
+
Requires-Dist: sse-starlette>=1.6.0; extra == "http"
|
46
|
+
Provides-Extra: r
|
47
|
+
Requires-Dist: subprocess32>=3.5.0; python_version < "3.3" and extra == "r"
|
48
|
+
Dynamic: license-file
|
49
|
+
|
50
|
+
Package managed by MseeP.ai
|
@@ -0,0 +1,42 @@
|
|
1
|
+
LICENSE
|
2
|
+
README.md
|
3
|
+
pyproject.toml
|
4
|
+
src/mseep_rmcp.egg-info/PKG-INFO
|
5
|
+
src/mseep_rmcp.egg-info/SOURCES.txt
|
6
|
+
src/mseep_rmcp.egg-info/dependency_links.txt
|
7
|
+
src/mseep_rmcp.egg-info/entry_points.txt
|
8
|
+
src/mseep_rmcp.egg-info/requires.txt
|
9
|
+
src/mseep_rmcp.egg-info/top_level.txt
|
10
|
+
src/rmcp/__init__.py
|
11
|
+
src/rmcp/cli.py
|
12
|
+
src/rmcp/r_integration.py
|
13
|
+
src/rmcp/core/__init__.py
|
14
|
+
src/rmcp/core/context.py
|
15
|
+
src/rmcp/core/schemas.py
|
16
|
+
src/rmcp/core/server.py
|
17
|
+
src/rmcp/r_assets/__init__.py
|
18
|
+
src/rmcp/registries/__init__.py
|
19
|
+
src/rmcp/registries/prompts.py
|
20
|
+
src/rmcp/registries/resources.py
|
21
|
+
src/rmcp/registries/tools.py
|
22
|
+
src/rmcp/scripts/__init__.py
|
23
|
+
src/rmcp/security/__init__.py
|
24
|
+
src/rmcp/security/vfs.py
|
25
|
+
src/rmcp/tools/descriptive.py
|
26
|
+
src/rmcp/tools/econometrics.py
|
27
|
+
src/rmcp/tools/fileops.py
|
28
|
+
src/rmcp/tools/machine_learning.py
|
29
|
+
src/rmcp/tools/regression.py
|
30
|
+
src/rmcp/tools/statistical_tests.py
|
31
|
+
src/rmcp/tools/timeseries.py
|
32
|
+
src/rmcp/tools/transforms.py
|
33
|
+
src/rmcp/tools/visualization.py
|
34
|
+
src/rmcp/transport/__init__.py
|
35
|
+
src/rmcp/transport/base.py
|
36
|
+
src/rmcp/transport/jsonrpc.py
|
37
|
+
src/rmcp/transport/stdio.py
|
38
|
+
tests/test_direct_capabilities.py
|
39
|
+
tests/test_docker_simulation.py
|
40
|
+
tests/test_docker_size.py
|
41
|
+
tests/test_expanded_capabilities.py
|
42
|
+
tests/test_mcp_interface.py
|
@@ -0,0 +1 @@
|
|
1
|
+
|