HTTP Server Getting Started Guide
This guide shows you how to use RMCP’s HTTP server for statistical analysis through web APIs.
Overview
RMCP HTTP server provides the same statistical analysis capabilities as the Python package, but accessible via HTTP endpoints. This is ideal for:
Web applications that need statistical analysis
Remote access to statistical tools
Microservices architectures
Multi-language client support
🌐 Live Server: https://rmcp-server-394229601724.us-central1.run.app
Available Endpoints
Endpoint |
Method |
Description |
|---|---|---|
|
GET |
Landing page with server information |
|
POST |
Main MCP protocol endpoint |
|
GET |
Server-Sent Events for real-time updates |
|
GET |
Health check and server status |
|
GET |
Interactive Swagger UI documentation |
|
GET |
Alternative ReDoc documentation |
Quick Start
1. Initialize Session
All MCP communication requires session initialization:
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "my-client",
"version": "1.0"
}
}
}'
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {"listChanged": false},
"resources": {"subscribe": true, "listChanged": true}
},
"serverInfo": {
"name": "RMCP MCP Server",
"version": "0.5.1"
}
}
}
2. List Available Tools
After initialization, list statistical analysis tools:
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "MCP-Session-Id: your-session-id" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}'
This returns 53 statistical analysis tools including:
linear_model- Linear and logistic regressioncorrelation_analysis- Correlation matrices and testingtime_series_arima- ARIMA modeling and forecastingdescriptive_stats- Comprehensive descriptive statisticsscatter_plot- Professional scatter plots
3. Execute Statistical Analysis
Call statistical tools with your data:
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "MCP-Session-Id: your-session-id" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "correlation_analysis",
"arguments": {
"data": "sales,marketing\n100,5\n120,8\n115,6\n140,10",
"format": "csv"
}
}
}'
Response:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "## Correlation Analysis Results\n\n**Correlation Coefficient:** r = 0.89\n**P-value:** p < 0.001\n**Interpretation:** Strong positive correlation between sales and marketing spend."
}
]
}
}
Client Examples
Python Client
import requests
import json
class RMCPClient:
def __init__(self, base_url):
self.base_url = base_url
self.session_id = None
self.session = requests.Session()
def initialize(self):
"""Initialize MCP session"""
response = self.session.post(
f"{self.base_url}/mcp",
headers={
"Content-Type": "application/json",
"MCP-Protocol-Version": "2025-06-18"
},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {"name": "python-client", "version": "1.0"}
}
}
)
if response.ok:
self.session_id = response.headers.get("Mcp-Session-Id")
return response.json()
else:
raise Exception(f"Failed to initialize: {response.text}")
def call_tool(self, tool_name, arguments):
"""Call a statistical analysis tool"""
if not self.session_id:
self.initialize()
response = self.session.post(
f"{self.base_url}/mcp",
headers={
"Content-Type": "application/json",
"MCP-Protocol-Version": "2025-06-18",
"MCP-Session-Id": self.session_id
},
json={
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": tool_name,
"arguments": arguments
}
}
)
return response.json()
# Usage example
client = RMCPClient("https://rmcp-server-394229601724.us-central1.run.app")
result = client.call_tool("descriptive_stats", {
"data": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"variable_name": "test_data"
})
print(result)
JavaScript Client
class RMCPClient {
constructor(baseUrl) {
this.baseUrl = baseUrl;
this.sessionId = null;
}
async initialize() {
const response = await fetch(`${this.baseUrl}/mcp`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'MCP-Protocol-Version': '2025-06-18'
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'initialize',
params: {
protocolVersion: '2025-06-18',
capabilities: {},
clientInfo: { name: 'js-client', version: '1.0' }
}
})
});
if (response.ok) {
this.sessionId = response.headers.get('Mcp-Session-Id');
return await response.json();
} else {
throw new Error(`Failed to initialize: ${await response.text()}`);
}
}
async callTool(toolName, arguments) {
if (!this.sessionId) {
await this.initialize();
}
const response = await fetch(`${this.baseUrl}/mcp`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'MCP-Protocol-Version': '2025-06-18',
'MCP-Session-Id': this.sessionId
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: {
name: toolName,
arguments: arguments
}
})
});
return await response.json();
}
}
// Usage example
const client = new RMCPClient('https://rmcp-server-394229601724.us-central1.run.app');
client.callTool('linear_model', {
formula: 'sales ~ marketing',
data: 'sales,marketing\\n100,5\\n120,8\\n115,6\\n140,10',
format: 'csv'
}).then(result => {
console.log(result);
});
Real-time Updates with Server-Sent Events
For long-running statistical operations, monitor progress with SSE:
const eventSource = new EventSource(
'https://rmcp-server-394229601724.us-central1.run.app/mcp/sse'
);
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
if (event.type === 'notification') {
console.log('Progress update:', data);
} else if (event.type === 'keepalive') {
console.log('Connection active');
}
};
Common Use Cases
Business Analytics
# Analyze marketing ROI
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "MCP-Session-Id: your-session-id" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "linear_model",
"arguments": {
"formula": "sales ~ marketing_spend + season",
"data": "sales,marketing_spend,season\n100,5,Q1\n120,8,Q2\n115,6,Q1\n140,10,Q2",
"format": "csv"
}
}
}'
Time Series Forecasting
# Forecast future values
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "MCP-Session-Id: your-session-id" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "time_series_arima",
"arguments": {
"data": [100, 105, 110, 108, 115, 120, 125, 130],
"variable_name": "monthly_sales",
"forecast_periods": 3
}
}
}'
Customer Analytics
# Predict customer churn
curl -X POST https://rmcp-server-394229601724.us-central1.run.app/mcp \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "MCP-Session-Id: your-session-id" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "logistic_regression",
"arguments": {
"formula": "churn ~ tenure + monthly_charges + total_charges",
"data": "churn,tenure,monthly_charges,total_charges\n0,24,50,1200\n1,2,80,160\n0,36,45,1620\n1,6,75,450",
"format": "csv"
}
}
}'
Error Handling
The server returns standard JSON-RPC 2.0 error responses:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32603,
"message": "Session not initialized. Send initialize request first.",
"data": {"type": "HTTPException"}
}
}
Common error codes:
-32600: Invalid Request-32603: Internal Error400: Missing MCP headers405: Method not allowed
Troubleshooting
Q: Getting “Session not initialized” error?
A: Always send an initialize request first and include the returned session ID in subsequent requests.
Q: Missing MCP-Protocol-Version header error?
A: All requests after initialization must include MCP-Protocol-Version: 2025-06-18 header.
Q: CORS errors in browser?
A: The server supports CORS for web applications. Ensure you’re including proper headers.
Q: Connection timeout on SSE?
A: SSE connections send keep-alive messages every 0.5 seconds. Check your firewall/proxy settings.
Next Steps
Explore Tools: Use
/docsfor interactive API explorationIntegration: Build statistical analysis into your applications
Advanced Usage: Check HTTP Server API Reference for complete tool documentation
Deployment: See HTTP Server Deployment Guide for running your own server
🔗 Links: - Interactive Docs: https://rmcp-server-394229601724.us-central1.run.app/docs - GitHub Repository: https://github.com/finite-sample/rmcp - Python Package: Quick Start Guide