Skip to main content
Glama

system-one-mcp

MCP server for any System One backend (Ollama nimble/tev/clef, TypeSafe jev, Kev, Laya).

Exposes two stdio tools:

  • systemone_evaluate — answer typed choice / score / noul questions with a System One model

  • systemone_list_models — list available System One models on the configured backend

Thin Zod-validated passthrough: MCP tools -> fetch({baseUrl}/v1/systemone) with optional Bearer key. model is a free-form non-empty string (never a hard-coded enum).

Env

Variable

Default

Notes

SYSTEMONE_BASE_URL

http://localhost:11434

Must start with http:// or https://. Ollama default http://localhost:11434.

SYSTEMONE_API_KEY

(unset)

Optional. TypeSafe cloud / Kev with key / Laya with LAYA_API_KEY. Sent as Authorization: Bearer <key>.

SYSTEMONE_MODEL

nimble

Default model when the tool call omits model. Any of nimble / tev / clef / jev / kev / laya.

See .env.example for a copy-paste starting point.

Related MCP server: ds-mcp-server

Run

npm install
npm run build
SYSTEMONE_BASE_URL=http://localhost:11434 node dist/index.js

Windows PowerShell:

npm install
npm run build
$env:SYSTEMONE_BASE_URL="http://localhost:11434"; node dist/index.js

Claude Code

Add to your Claude Code MCP config:

{
  "mcpServers": {
    "system-one": {
      "command": "node",
      "args": ["<path-to-system-one-mcp>/dist/index.js"],
      "env": {
        "SYSTEMONE_BASE_URL": "http://localhost:11434",
        "SYSTEMONE_MODEL": "nimble"
      }
    }
  }
}

For TypeSafe cloud / Kev / Laya, add "SYSTEMONE_API_KEY": "<key>" to env and point SYSTEMONE_BASE_URL at that backend.

Manual parity

Direct HTTP check against an Ollama backend running nimble (bypasses MCP, same endpoint the server calls):

curl http://localhost:11434/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{"model":"nimble","state":"Our checkout has returned 500 errors since 9am.","questions":{"label":{"type":"choice","instructions":"Which label fits?","criteria":{"billing":"Payments","bug":"Errors","account":"Login"}}}}'

Expected: JSON with model, answers.label, and usage (input_tokens / output_tokens).

Available Tools

2 tools
systemone_evaluateC

Answer typed choice/score/noul questions with a System One model (jev/nimble/kev/tev/laya).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
stateYes
imagesNo
questionsYes
keep_aliveNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says nothing about whether models must be loaded, what state represents, what keep_alive does, latency characteristics, or what the response contains. For a tool with nested question objects and no output schema, this is a significant gap.

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?

A single efficient sentence with no wasted words, and the core verb is front-loaded. It is terse to the point of under-specification, but structurally sound.

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

Completeness2/5

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

Given a complex nested schema (three question-type variants), 5 undocumented parameters, no annotations, and no output schema, the description is far too thin. An agent cannot determine valid state/image formats or how question criteria should be shaped.

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% across 5 parameters. The description maps loosely onto two of them (model names and the 'choice/score/noul' question types), but state, images, and keep_alive are entirely undocumented in both schema and description. It does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb+resource: 'Answer typed choice/score/noul questions with a System One model.' It also enumerates the supported models (jev/nimble/kev/tev/laya), which is concrete. However, it does not distinguish itself from the sibling systemone_list_models or clarify what 'noul' means, so it stops short of a 5.

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?

There is no guidance on when to use this tool versus alternatives, and the sibling systemone_list_models (presumably for discovering valid model names) is never mentioned. The model list is embedded but without stating that a call to list_models may be a prerequisite.

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

systemone_list_modelsB

List available System One models on the configured backend.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It hints that results depend on a 'configured backend' but says nothing about return format, whether configuration/auth is required first, or error behavior when no backend is set.

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?

A single front-loaded sentence with zero filler. Every word earns its place.

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?

No output schema exists, so the description should convey what a 'model' listing contains (names, IDs, capabilities), but it does not. For a simple no-arg discovery tool this is a moderate gap rather than a fatal one.

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?

The tool takes zero parameters, so there is nothing to disambiguate; the baseline for a parameterless tool applies.

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

Purpose4/5

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

States a specific verb and resource (List ... System One models) plus a scoping qualifier ('configured backend'). This is unambiguous, though it does not explicitly contrast itself with the sibling systemone_evaluate, which is a very different action anyway.

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?

Usage is only implied – an agent can infer this is a discovery step preceding an evaluation, but the description never states when to call it, whether it needs prior configuration, or what alternatives exist.

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.

  1. 2 tool updatesv0.1.0
    • First observedsystemone_evaluate
    • First observedsystemone_list_models

TDQS

B3.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve clearly distinct purposes: one enumerates available models and the other runs an evaluation with a chosen model. There is no overlap in resource or action, so an agent cannot realistically confuse them.

Naming Consistency4/5

Both names share the 'systemone_' snake_case prefix, which is predictable and readable. The minor deviation is that 'evaluate' is a bare verb without a noun object unlike 'list_models', but the set still feels coherent.

Tool Count3/5

Two tools is thin even for a narrow evaluation-model domain; there is no separate model-detail, configuration, or result-retrieval tool. It is borderline rather than mismatched, since the core discover-then-evaluate flow is present.

Completeness3/5

The surface covers the minimal loop of listing models and evaluating a question, but lacks supporting operations such as fetching model metadata, setting backend configuration, or retrieving/batching prior evaluations. Agents can work around this only by relying on external configuration.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables LLMs to inspect and test other MCP servers by listing and calling their tools, reading resources, and getting prompts. Supports stdio, SSE, and HTTP transports for both local and remote MCP server inspection.
    7
    4 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI tools to uniformly discover, inspect, and call tools, prompts, and resources from multiple upstream MCP servers through a small set of fixed MCP tools, over stdio or HTTP.
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables MCP-compatible agent hosts to interact with TypeSafe AI's Jev System One API through dependency-free STDIO tools for classification, scoring, verification, gating, routing, review, and health checks.
    9
    MIT