# CLI

The `arcade_mcp_server` CLI is a simple tool for running MCP servers.

It is used to discover tools and run the server.



## Command Line Options

```
usage: python -m arcade_mcp_server [-h] [--host HOST] [--port PORT]
                                   [--tool-package PACKAGE] [--discover-installed]
                                   [--show-packages] [--reload] [--debug]
                                   [--env-file ENV_FILE] [--name NAME] [--version VERSION]
                                   [transport]

Run Arcade MCP Server

positional arguments:
  transport             Transport type: stdio, http, streamable-http (default: http)

optional arguments:
  -h, --help           show this help message and exit
  --host HOST          Host to bind to (HTTP mode only, default: 127.0.0.1)
  --port PORT          Port to bind to (HTTP mode only, default: 8000)
  --tool-package PACKAGE, --package PACKAGE, -p PACKAGE
                       Specific tool package to load (e.g., 'github' for arcade-github)
  --discover-installed, --all
                       Discover all installed arcade tool packages
  --show-packages      Show loaded packages during discovery
  --reload             Enable auto-reload on code changes (HTTP mode only)
  --debug              Enable debug mode with verbose logging
  --env-file ENV_FILE  Path to environment file
  --name NAME          Server name
  --version VERSION    Server version
```

## Tool Discovery

The CLI discovers tools in three ways:

### 1. Auto-Discovery (Default)

Automatically finds Python files with `@tool` decorated functions in:
- Current directory (`*.py`)
- `tools/` subdirectory
- `arcade_tools/` subdirectory

Example file structure:
```
my_project/
├── hello.py          # Contains @tool functions
├── tools/
│   └── math.py      # More @tool functions
└── arcade_tools/
    └── utils.py     # Even more @tool functions
```

### 2. Package Loading

Load specific arcade packages installed in your environment:

```bash
# Load arcade-github package
python -m arcade_mcp_server --tool-package github

# Load custom package (tries arcade_ prefix first)
python -m arcade_mcp_server -p mycompany_tools
```

### 3. Discover All Installed

Find and load all arcade packages in your Python environment:

```bash
# Load all arcade packages
python -m arcade_mcp_server --discover-installed

# Show what's being loaded
python -m arcade_mcp_server --discover-installed --show-packages
```

### Example Tool File

Create any Python file with `@tool` decorated functions:

```python
from arcade_mcp_server import tool

@tool
def hello(name: str) -> str:
    """Say hello to someone."""
    return f"Hello, {name}!"

@tool
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b
```

Then run:
```bash
python -m arcade_mcp_server  # Auto-discovers and loads these tools
```
