orla

dorcha-inc/orla

3.2

If you are the rightful owner of orla and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

Orla is a fast and extensible Model Context Protocol (MCP) server and router with auto discovery capabilities.


Go Version Go Report Card OpenSSF Best Practices Test Build Coverage

orla is a runtime for model context protocol (MCP) servers that automatically discovers and executes tools from the filesystem. Just drop executable files in a tools/ directory and orla makes them available as MCP tools! No configuration required.

All the amazing folks who have taken their time to contribute something cool to orla are listed in . If you find orla useful, please consider sponsoring the orla project. Your support helps maintain and improve orla for everyone. Thank you!

quick links

getting started

to install orla, you can either just run

go install github.com/dorcha-inc/orla/cmd/orla@latest

or build it locally by cloning this repository and running

make build

or installing locally by running

make install

usage

The following is a simple example of using orla to create a set of MCP tools.

  1. Create a tools directory with some tools. The tools can be any kind of executable.
mkdir tools
cat > tools/hello.sh << 'EOF'
#!/bin/bash
echo "Hello from orla!"
EOF
chmod +x tools/hello.sh
  1. Start orla:
orla serve

this runs on port 8080 by default.

You can run it using stdio as the transport:

orla serve --stdio

You can specify a custom port

orla serve --port 3000

You can also specify a custom configuration file:

orla serve --config orla.yaml

If no configuration file is specified, orla will automatically check for orla.yaml in the current directory. If not found, default configuration is used.

  1. You can hot reload orla, i.e., get it to refresh its tools and configuration without restarting.
kill -HUP $(pgrep orla)

configuration

orla works out of the box with zero configuration, but you can customize it with a YAML config file:

tools_dir: ./tools
port: 8080
timeout: 30
log_format: json
log_level: info

The configuration options for orla are as follows

  • tools_dir: Directory containing executable tools (default: ./tools)
  • port: HTTP server port (default: 8080, ignored in stdio mode)
  • timeout: Tool execution timeout in seconds (default: 30)
  • log_format: "json" or "pretty" (default: "json")
  • log_level: "debug", "info", "warn", "error", or "fatal" (default: "info")

command line options

orla serve [options]

Options:
  -config string    Path to orla.yaml config file
  -port int         Port to listen on (ignored if stdio is used, default: 8080)
  -stdio            Use stdio instead of TCP port
  -pretty           Use pretty-printed logs instead of JSON
  -tools-dir string Directory containing tools (overrides config file)

git hooks

orla includes pre-commit hooks for secret detection, linting, and testing. to enable them, run this once:

git config core.hooksPath .githooks

this configures git to automatically use hooks from .githooks/ - no setup script needed!

testing

orla comes with extensive tests which can be run using

make test

community + contributions

Contributions are very welcome! orla is an open-source project and runs on individual contributions from amazing people around the world. Contributions are welcome! For feature requests, bug reports, or usage problems, please feel free to create an issue. For more extensive contributions, check the .

Join other orla users and developers on the following platforms:

Discord GitHub issues

roadmap

See the RFCs in docs/rfcs/ for the full vision and roadmap.

integration guides