Skip to main content
Glama
NieLubieRudej

engine

engine

A self-owned, model-agnostic AI agent client whose core is a native, host-agnostic plugin system. Adding a tool — from a tiny helper to the full scribe transcriber — is one small act, and the same tool works for both you (a REPL command) and the agent (a model tool). Plain line-REPL by design: no fullscreen TUI, so Polish input, trackpad scroll and text selection just work. Runtime is stdlib-only and portable (macOS now, Linux/3090 later).

Layout

  • engine/ — core: config, backends (the model interface), plugins (contract + discovery), agent (the loop), repl (the client), cli (bare-shell host adapter).

  • plugins/ — drop-in plugins: sysinfo (tiny), scribe (big). Add one = add a file here.

  • tests/ — pytest suite (deterministic, no network).

  • smoke/ — live checks against a real model (Ollama).

  • tools/check_polish_input.py — a Polish-keyboard input check.

Related MCP server: cc-plugin-mcp

Run

# REPL (talks to qwen3:8b via Ollama by default):
PYTHONPATH=. .venv/bin/python -m engine.repl
# force the deterministic mock model instead:
ENGINE_BACKEND=mock PYTHONPATH=. .venv/bin/python -m engine.repl
# run a plugin straight from the shell (no model):
PYTHONPATH=. .venv/bin/python -m engine.cli sysinfo
PYTHONPATH=. .venv/bin/python -m engine.cli scribe --help

Add a plugin (zero core edits)

Create plugins/hello.py:

from engine.plugins import SimplePlugin
PLUGIN = SimplePlugin("hello", "say hi",
    {"type": "object", "properties": {"input": {"type": "string"}}},
    lambda a: "hi " + str(a.get("input", "")))

It is now a REPL command (/hello), a CLI command, and a tool the agent can call.

Swap the model (one value)

ENGINE_BACKEND=ollama|mock|anthropic (+ ENGINE_OLLAMA_MODEL / ENGINE_ANTHROPIC_MODEL). A new provider is one branch in engine/backends.py:get_backend. (anthropic is code-complete + unit-tested for wire format; going live needs ANTHROPIC_API_KEY.)

Use the plugins inside Claude Code (MCP)

The same plugins are exposed to Claude Code via a hand-rolled MCP stdio server (stdlib, zero deps):

# from the repo root:
claude mcp add engine -- "$PWD/.venv/bin/python" -m engine.hosts.mcp_server

Then Claude Code can call sysinfo / calc / scribe as tools — the identical plugins your REPL uses.

Tests

.venv/bin/python -m pytest .                     # 36 deterministic tests
.venv/bin/python smoke/ollama_agent_smoke.py     # live: a real model calls a plugin
.venv/bin/python smoke/filter_spike.py           # Phase-2 taste: bge-m3 separates real vs junk (toy)

Available Tools

3 tools
calcB

Evaluate an exact arithmetic expression (+, -, *, /, **, %). Use for any calculation.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states the tool 'evaluates' an expression, implying a read-only operation, but does not explicitly mention safety, side effects, or limitations. For a simple calculator, this is acceptable but lacks clarity on what happens with invalid expressions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, immediately stating the tool's purpose. No redundant information is present, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description covers the core functionality. However, it lacks details on return format, error handling, and precision. The sibling tools suggest this is one of few tools, but completeness could be improved with a note on return type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'expression' parameter, but the description adds meaning by specifying it is an arithmetic expression and listing operators (+, -, *, /, **, %). This compensates partially, but the parameter's type and format remain under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool evaluates exact arithmetic expressions, listing supported operators. It distinguishes from siblings 'scribe' (likely writing) and 'sysinfo' (system info) by focusing on calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'use for any calculation' which is an implicit guideline but lacks explicit when-to-use or when-not-to-use context. No alternatives or exclusions are provided, leaving the agent with minimal usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scribeA

Run the scribe CLI (video -> transcript for AI). Pass CLI arguments, e.g. args=['--help'] or args=['', '--dry-run', '--json'].

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoarguments passed straight to the scribe CLI

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description must fully disclose behavior. It states arguments are passed 'straight to the scribe CLI' but does not mention side effects, auth requirements, output handling, or safety implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose, second provides examples. No unnecessary words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple single-parameter tool with no output schema, but lacks information on return values, error behavior, or prerequisites that would fully prepare an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds concrete usage examples (--help, --dry-run, --json) that clarify the expected format beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Run' and resource 'scribe CLI' with purpose 'video -> transcript for AI'. Distinguishes from sibling tools (calc, sysinfo) by domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides example arguments for typical use cases (--help and dry-run with JSON), but no explicit guidance on when to use this tool versus alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sysinfoB

Report this machine's OS, CPU count and RAM. No arguments needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states basic output but does not explain the optional 'verbose' parameter's effect or any side effects. The statement 'no arguments needed' could mislead agents into thinking there are no parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys the tool's purpose. It earns its place without extra words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the main output but lacks explanation of the parameter and return format, making it minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the sole parameter 'verbose'. The description says 'no arguments needed' but does not clarify the parameter's meaning or effect, offering minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it reports OS, CPU count, and RAM, with a clear verb and resource. It distinguishes from sibling tools calc and scribe which are for different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes 'no arguments needed' which implies simplicity but does not provide explicit when-to-use or alternatives. It lacks guidance on when to choose sysinfo over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedcalc
    • First observedscribe
    • First observedsysinfo

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: calc for arithmetic, scribe for video transcription, sysinfo for system information. There is no overlap or ambiguity between them.

Naming Consistency4/5

All tool names are lowercase single words (calc, scribe, sysinfo), which is consistent in style. However, they don't follow a strict verb_noun pattern, and one is an abbreviation (calc) while another is a concatenation (sysinfo).

Tool Count3/5

Having three tools is borderline appropriate given the server name 'engine' implies a broad utility scope. The count feels thin but not extreme, and each tool seems self-contained.

Completeness2/5

The tools cover a calculator, a video transcriber, and system info, which are unrelated domains. There are obvious gaps if this is meant as a general-purpose engine (e.g., no file operations, no networking). The set feels incomplete for any coherent purpose.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A transport-agnostic MCP server that integrates multiple AI coding agents (Claude Code, Gemini, and Codex) with built-in tools for command execution, calculations, and streaming capabilities. Supports both STDIO and HTTP transports for flexible deployment.
    23
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NieLubieRudej/engine'

If you have feedback or need assistance with the MCP directory API, please join our Discord server