Install
$ agentstack add mcp-bulentsoykan-simulation-ai-agent ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Simulation AI Agent
[](https://github.com/bulentsoykan/Simulation-AI-Agent) [](https://github.com/bulentsoykan)
A plugin-based discrete event simulation server with MCP (Model Context Protocol) integration, enabling AI assistants to run and analyze simulations.
Features
- Plugin-based Simulation Engine: Extensible architecture supporting multiple simulation types
- Built-in Simulations: Queueing, Manufacturing, Inventory, and Logistics
- MCP Integration: Expose simulations as tools for Claude and other AI assistants
- JWT Authentication: Secure API access with user/tenant management
- Multi-tenant Support: Row-level security for data isolation
- Real-time WebSocket Updates: Stream simulation events as they happen
- Analytics & Reporting: Aggregate statistics and trend analysis
- ML Predictions: PyTorch neural networks for outcome prediction
- Prometheus Metrics: Monitor API performance and simulation runs
Quick Start
Installation
# Clone and install
git clone https://github.com/bulentsoykan/Simulation-AI-Agent.git
cd Simulation-AI-Agent
pip install -r requirements.txt
Running the Servers
# Terminal 1: Start FastAPI server (port 8000)
python server.py
# Terminal 2: Start MCP server (port 8001)
python mcp_server.py
The API will be available at http://localhost:8000 with interactive docs at http://localhost:8000/docs
Simulation Types
Queueing (M/M/c Queue)
Models customer arrivals, waiting, and service with multiple servers.
curl -X POST http://localhost:8000/simulations/queueing/run \
-H "Content-Type: application/json" \
-d '{"params": {"n_servers": 3, "arrival_rate": 10, "service_time": 2, "sim_time": 480}}'
Parameters:
n_servers: Number of parallel service stations (default: 1)arrival_rate: Customer arrival rate per time unit (default: 5.0)service_time: Average service time per customer (default: 3.0)sim_time: Total simulation time (default: 1440)
Metrics:
total_customers,avg_wait_time,avg_system_time,max_wait_time,server_utilization
Manufacturing (Production Line)
Models work flowing through production stations with buffers.
curl -X POST http://localhost:8000/simulations/manufacturing/run \
-H "Content-Type: application/json" \
-d '{"params": {"stations": ["Cutting", "Assembly", "QC"], "processing_times": [2.0, 5.0, 1.5], "arrival_rate": 0.3}}'
Parameters:
stations: Names of production stations in orderprocessing_times: Processing time at each stationbuffer_sizes: Buffer capacity before each stationarrival_rate: Raw material arrival rate
Metrics:
throughput,avg_cycle_time,wip,station_utilization,bottleneck_station
Inventory ((s,S) Policy)
Models inventory with reorder points and lead times.
curl -X POST http://localhost:8000/simulations/inventory/run \
-H "Content-Type: application/json" \
-d '{"params": {"reorder_point": 20, "order_up_to": 100, "demand_rate": 5.0, "lead_time": 5.0}}'
Parameters:
reorder_point: Inventory level that triggers reorder (s)order_up_to: Target inventory level when ordering (S)demand_rate: Average demand per time unitlead_time: Time between order and delivery
Metrics:
total_demand,total_fulfilled,fill_rate,avg_inventory,stockout_count,total_cost
Logistics (Vehicle Routing)
Models capacitated vehicle routing for deliveries.
curl -X POST http://localhost:8000/simulations/logistics/run \
-H "Content-Type: application/json" \
-d '{"params": {"num_vehicles": 3, "vehicle_capacity": 100, "num_customers": 20}}'
Parameters:
num_vehicles: Number of delivery vehiclesvehicle_capacity: Capacity per vehiclenum_customers: Number of customer locationsservice_time: Time to serve each customer
Metrics:
customers_served,customers_unserved,total_distance,vehicle_utilization,demand_fulfilled
API Endpoints
Simulations
| Endpoint | Method | Description | |----------|--------|-------------| | /simulations | GET | List all available simulation types | | /simulations/{type}/schema | GET | Get parameter schema for a simulation | | /simulations/{type}/run | POST | Run a simulation | | /simulate | POST | Run queueing simulation (legacy) |
Authentication
| Endpoint | Method | Description | |----------|--------|-------------| | /auth/register | POST | Register new user | | /auth/login | POST | Login and get tokens | | /auth/refresh | POST | Refresh access token | | /auth/me | GET | Get current user info |
Analytics
| Endpoint | Method | Description | |----------|--------|-------------| | /analytics/simulation-summary | GET | Get simulation run statistics | | /analytics/trends | GET | Get metric trends over time |
ML Predictions
| Endpoint | Method | Description | |----------|--------|-------------| | /predict/{sim_type} | GET | Predict simulation outcomes | | /ml/train | POST | Train prediction model (admin) | | /ml/model-info | GET | Get model information |
Health & Monitoring
| Endpoint | Method | Description | |----------|--------|-------------| | /health | GET | Health check | | /health/ready | GET | Readiness check (DB) | | /metrics | GET | Prometheus metrics |
MCP Tools
When connected via MCP, the following tools are available:
list_simulations: List all available simulation typesrun_simulation(simulation_type, params): Run any simulation typesimulate(...): Run queueing simulation (convenience wrapper)get_workorder_details(workorder_number): Get workorder tracking infoget_workorder_configuration(workorder_number): Get workorder config
Claude Desktop Integration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"simulation": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8001/mcp"]
}
}
}
Adding Custom Simulations
Create a new simulation by extending BaseSimulation:
from simulations.base import BaseSimulation
from simulations.registry import SimulationRegistry
@SimulationRegistry.register
class MySimulation(BaseSimulation):
name = "my_simulation"
description = "My custom simulation"
def get_parameter_schema(self) -> dict:
return {
"type": "object",
"properties": {
"my_param": {"type": "number", "default": 1.0}
}
}
def get_metrics_schema(self) -> dict:
return {
"type": "object",
"properties": {
"my_metric": {"type": "number"}
}
}
def run(self, params: dict, callback=None) -> dict:
validated = self.validate_params(params)
# Run your simulation logic
return {"my_metric": 42.0}
Configuration
Environment variables (or .env file):
| Variable | Default | Description | |----------|---------|-------------| | DATABASE_URL | sqlite:///./simulation.db | Database connection string | | JWT_SECRET_KEY | (generated) | Secret for JWT signing | | API_PORT | 8000 | FastAPI server port | | MCP_PORT | 8001 | MCP server port | | DEBUG | false | Enable debug mode |
Project Structure
simulation-ai-agent/
├── server.py # FastAPI application
├── mcp_server.py # MCP server
├── config.py # Configuration settings
├── simulations/ # Simulation plugins
│ ├── base.py # BaseSimulation class
│ ├── registry.py # Plugin registry
│ ├── queueing.py # M/M/c queue
│ ├── manufacturing.py # Production line
│ ├── inventory.py # Inventory management
│ └── logistics.py # Vehicle routing
├── database/ # SQLAlchemy models
│ ├── connection.py # DB session management
│ └── models.py # ORM models
├── auth/ # JWT authentication
│ ├── jwt_handler.py # Token creation/validation
│ ├── dependencies.py # FastAPI dependencies
│ └── schemas.py # Pydantic schemas
├── analytics/ # Reporting
│ ├── aggregations.py # Query aggregations
│ └── reports.py # Report generation
├── ml/ # Machine learning
│ ├── predictor.py # PyTorch inference
│ └── trainer.py # Model training
├── websocket/ # Real-time updates
│ └── manager.py # Connection manager
└── monitoring/ # Prometheus metrics
└── metrics.py # Metric collectors
Author
Bulent Soykan
- GitHub: @bulentsoykan
- Email: soykanb@gmail.com
License
MIT
Project Overview
A plugin-based MCP server exposing discrete event simulations to AI assistants. Features:
- Plugin-based simulation engine (queueing, manufacturing, inventory, logistics)
- JWT authentication with multi-tenant support
- Real-time WebSocket updates
- Analytics and ML-based prediction
- Prometheus monitoring
Architecture
┌─────────────────┐ WS/HTTP ┌─────────────────┐
│ MCP Clients │ ◄──────────► │ mcp_server.py │
└─────────────────┘ :8001 └────────┬────────┘
│
┌─────────────────┐ WS/HTTP ┌────────▼────────┐ ┌─────────────────┐
│ Web Clients │ ◄──────────► │ server.py │◄──►│ SQLite DB │
└─────────────────┘ :8000 │ (FastAPI) │ │ (SQLAlchemy) │
└────────┬────────┘ └─────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ simulations/ │ │ ml/ │ │ analytics/ │
│ base.py │ │ predictor.py │ │ reports.py │
│ registry.py │ │ (PyTorch) │ │ aggregations.py│
│ queueing.py │ └─────────────────┘ └─────────────────┘
│ manufacturing.py│
│ inventory.py │
│ logistics.py │
└─────────────────┘
Running the Project
# Install dependencies
pip install -r requirements.txt
# Terminal 1: FastAPI server (port 8000)
python server.py
# Terminal 2: MCP server (port 8001)
python mcp_server.py
Key Components
Simulation Plugin System (simulations/)
base.py:BaseSimulationabstract class withrun(),get_parameter_schema(),get_metrics_schema()registry.py:SimulationRegistryfor plugin discovery and instantiation- Built-in types:
queueing,manufacturing,inventory,logistics
Authentication (auth/)
- JWT-based with access/refresh tokens
- Multi-tenant via
tenant_idon all models - Dependencies:
get_current_user,get_current_tenant,require_role()
Database (database/)
- SQLAlchemy ORM with SQLite (configurable to PostgreSQL)
- Models:
Tenant,User,SimulationRun,Workorder
ML Prediction (ml/)
- PyTorch neural networks trained on historical simulation data
SimulationPredictorfor inference,SimulationTrainerfor training
API Endpoints
| Category | Endpoint | Description | |----------|----------|-------------| | Simulations | GET /simulations | List simulation types | | | GET /simulations/{type}/schema | Get parameter schema | | | POST /simulations/{type}/run | Run simulation | | Auth | POST /auth/register | Register user | | | POST /auth/login | Get tokens | | | GET /auth/me | Current user | | Health | GET /health | Health check | | | GET /metrics | Prometheus metrics |
MCP Tools
list_simulations(): List available simulation typesrun_simulation(simulation_type, params): Run any simulationsimulate(...): Run queueing simulation (legacy)get_workorder_details(workorder_number): Get workorder infoget_workorder_configuration(workorder_number): Get workorder config
Adding a New Simulation
from simulations.base import BaseSimulation
from simulations.registry import SimulationRegistry
@SimulationRegistry.register
class MySimulation(BaseSimulation):
name = "my_simulation"
description = "Description here"
def get_parameter_schema(self) -> dict:
return {"type": "object", "properties": {...}}
def get_metrics_schema(self) -> dict:
return {"type": "object", "properties": {...}}
def run(self, params: dict, callback=None) -> dict:
validated = self.validate_params(params)
# Simulation logic here
return {"metric": value}
Configuration
Settings loaded from environment or .env:
DATABASE_URL: Database connection (default:sqlite:///./simulation.db)JWT_SECRET_KEY: JWT signing secretAPI_PORT/MCP_PORT: Server ports (8000/8001)DEBUG: Enable debug mode
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bulentsoykan
- Source: bulentsoykan/Simulation-AI-Agent
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.