AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Simulation AI Agent

mcp-bulentsoykan-simulation-ai-agent · by bulentsoykan

A plugin-based discrete event simulation server with MCP integration, enabling AI assistants to run and analyze simulations.

No reviews yet
0 installs
37 views
0.0% view→install

Install

$ agentstack add mcp-bulentsoykan-simulation-ai-agent

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-bulentsoykan-simulation-ai-agent)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
7mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

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 →
Are you the author of Simulation AI Agent? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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 order
  • processing_times: Processing time at each station
  • buffer_sizes: Buffer capacity before each station
  • arrival_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 unit
  • lead_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 vehicles
  • vehicle_capacity: Capacity per vehicle
  • num_customers: Number of customer locations
  • service_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 types
  • run_simulation(simulation_type, params): Run any simulation type
  • simulate(...): Run queueing simulation (convenience wrapper)
  • get_workorder_details(workorder_number): Get workorder tracking info
  • get_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

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: BaseSimulation abstract class with run(), get_parameter_schema(), get_metrics_schema()
  • registry.py: SimulationRegistry for plugin discovery and instantiation
  • Built-in types: queueing, manufacturing, inventory, logistics

Authentication (auth/)

  • JWT-based with access/refresh tokens
  • Multi-tenant via tenant_id on 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
  • SimulationPredictor for inference, SimulationTrainer for 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 types
  • run_simulation(simulation_type, params): Run any simulation
  • simulate(...): Run queueing simulation (legacy)
  • get_workorder_details(workorder_number): Get workorder info
  • get_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 secret
  • API_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.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.