trucksim-mcp
trucksim-mcp
MCP 서버로, Euro Truck Simulator 2 및 American Truck Simulator 텔레메트리와 실시간 운전 분석을 모든 AI 하네스(Claude Desktop, Claude Code, Cursor, Cline, …)에 스트리밍합니다. 차량 내 디스패처/운전 코치 역할을 하는 헤드리스 Claude 분석 에이전트도 포함합니다.
어시스턴트에게 "과속 중인가요?", "배송 기한을 맞출 수 있을까요?", "연료 범위는 어떤가요?", "지금까지 운전 점수는?" 같은 질문을 하면 실시간 게임 텔레메트리로 답합니다. 이 서버는 읽기 전용, 텔레메트리 및 분석 서버로, 트럭을 제어하지 않습니다.
참고: "American Truck Simulator 2"는 별도의 게임이 아닙니다. SCS는 여전히 원래 ATS를 제공합니다. ATS와 ETS2는 동일한 엔진과 텔레메트리 SDK를 공유하므로
trucksim-mcp는 별도 설정 없이 둘 다 지원합니다.
작동 방식
ETS2 / ATS ──(SCS Telemetry SDK)──▶ telemetry source ──▶ trucksim-mcp ──▶ any MCP client
(mmap | http | mock) (tools+analytics) (Claude, Cursor…)SCS SDK가 Windows 공유 메모리에 쓰기 때문에 trucksim-mcp는 플러그 가능한 소스를 통해 텔레메트리를 읽습니다:
소스 | 사용 시점 | 게임 필요 여부 |
| 데모, CI, 개발 — 내장된 스크립트 여정 | 아니요 |
| 게임이 JSON 텔레메트리 피드(Funbit / trucksim-gps)를 노출하는 Windows PC에서 실행됩니다. 어디서든 읽을 수 있습니다. | 예 (원격) |
|
| 예 (로컬) |
|
| 아니요 |
mock 소스는 게임이 설치되지 않은 상태에서 전체 파이프라인이 모든 OS에서 엔드투엔드로 실행된다는 것을 의미합니다. http 매핑은 실제 캡처된 페이로드(tests/fixtures/funbit_sample.json)로 검증되며, trucksim-mcp selftest는 연결 상태를 확인하고(그리고 비현실적인 수치를 표시합니다).
Related MCP server: fastf1-mcp
빠른 시작
# no install, straight from GitHub (PyPI release pending)
TRUCKSIM_SOURCE=mock uvx --from git+https://github.com/rachittshah/trucksim-mcp trucksim-mcpClaude Desktop / Cursor / Cline 구성은 docs/clients.md를, 실제 ETS2/ATS 텔레메트리 연결은 docs/sources.md를 참조하세요.
로컬 ETS2 / ATS 연결
mock 소스는 게임이 필요 없습니다. 실제 게임을 읽으려면 소스를 선택하세요(docs/sources.md에 전체 가이드가 있습니다):
크로스 플랫폼(권장) — 게임은 Windows에서 실행되고, trucksim-mcp는 LAN 어디서든 실행할 수 있습니다:
SCS 텔레메트리 플러그인(RenCloud/scs-sdk-plugin)을 게임의
bin/win_x64/plugins/에 설치합니다.텔레메트리 HTTP 서버(Funbit/ets2-telemetry-server, 포트 25555)를 실행합니다.
MCP 클라이언트를 만지기 전에 연결을 구성하고 검증합니다:
export TRUCKSIM_SOURCE=http
export TRUCKSIM_HTTP_URL=http://<game-pc-ip>:25555/api/ets2/telemetry
uvx --from git+https://github.com/rachittshah/trucksim-mcp trucksim-mcp selftestsource: http
connected: True
game: ets2
speed: 84 km/h (limit 90)
job: Reefer Frankfurt -> Munich
✅ Telemetry is live. Point your MCP client at this same config.네이티브 Windows — 게임과 같은 PC에서 trucksim-mcp 실행: TRUCKSIM_SOURCE=mmap(실험적)을 설정하고 trucksim-mcp selftest를 실행합니다.
그런 다음 MCP 클라이언트 구성 또는 agent/mcp.json에서 동일한 환경 변수를 사용하세요.
도구
10개의 읽기 전용 도구 — 전체 참조는 docs/tools.md에 있습니다:
상태 —
get_truck_state,get_navigation,get_fuel_status,get_raw_telemetry작업 —
get_active_job분석 —
check_speeding,get_eco_score,get_trip_summary,get_rest_advisor,list_recent_events
예시 프롬프트
연결되면(TRUCKSIM_SOURCE=mock에서도) 어시스턴트에게 물어보세요:
"지금 내 트럭이 뭐 하고 있지?" →
get_truck_state"과속 중인가요?" →
check_speeding"목적지까지 연료가 충분한가요?" →
get_fuel_status"배송 기한을 맞출 수 있을까요?" →
get_active_job"내 운전 점수를 매기고 무엇을 고쳐야 할지 알려줘." →
get_eco_score+get_trip_summary"휴식을 취해야 할까요?" →
get_rest_advisor
메뉴 바 앱 (게임 내에서 Claude와 대화)
두 개의 macOS 메뉴 바 앱은 실시간 텔레메트리 미리보기와 ETS2/ATS 위에 나타나는 플로팅 Claude 채팅 오버레이를 제공합니다. 게임을 떠나지 않고 운전에 대해 물어볼 수 있습니다. 전체 가이드: docs/menubar.md.
# Python (all-Python, pip install)
pip install "trucksim-mcp[menubar]" && TRUCKSIM_SOURCE=mock trucksim-mcp menubar
# Native SwiftUI (smoothest full-screen overlay) — see macos/TruckSimMenuBar/두 앱 모두 게임 위에 비활성화 NSPanel(fullScreenAuxiliary)을 띄우므로 채팅이 포커스를 빼앗지 않고 위에 표시됩니다.
코칭 에이전트 실제 작동
내장된 mock 여정에 대해 헤드리스 에이전트를 실행 — 이 서버를 통해 텔레메트리를 읽는 실제 claude -p(Sonnet 5):
$ TRUCKSIM_AGENT_ONCE=1 ./agent/coach.sh
Heads up: your Hamburg steel-tubes job is projected LATE — ETA 7h7m vs a 4h59m
deadline, a 2h7m shortfall, so this delivery needs a route/time fix, not just
steady driving. Speed and fuel are fine: you're well under the 90 km/h limit,
damage is only 3%, and fuel (688L, ~2149 km range) easily covers the 285 km
trip. Recommendation: check for a faster route or accept the late penalty now.헤드리스 분석 에이전트
agent/에는 이 MCP 서버에 연결하여 실시간 텔레메트리에서 주기적인 차량 내 코칭 업데이트를 생성하는 백그라운드 Claude Code 헤드리스(claude -p, Sonnet 5) 러너가 포함되어 있습니다. 음성 없는 디스패처입니다. agent/README.md를 참조하세요.
문서
가이드 | 내용 |
10개 MCP 도구에 대한 생성된 참조. | |
서버를 Claude Desktop / Claude Code / Cursor / Cline / Windsurf에 추가합니다. | |
실제 텔레메트리( | |
두 macOS 메뉴 바 앱과 게임 내 채팅 오버레이. | |
헤드리스 | |
네이티브 SwiftUI 앱 빌드. | |
자동화된 등급 평가 하네스. | |
기여, 릴리스 노트, PyPI 릴리스 프로세스. |
라이선스
MIT © Rachitt Shah. SCS Software와 제휴하거나 보증하지 않습니다. Euro Truck Simulator 2 및 American Truck Simulator는 SCS Software의 상표입니다.
Available Tools
10 toolscheck_speedingARead-onlyIdempotent
Are you speeding right now, and by how much over the posted limit?
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish this as a safe, read-only, idempotent query. The description adds useful behavioral context by specifying that it evaluates the current situation and compares against the posted limit, rather than raw speed alone. Nothing in the description contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose and key qualifiers (right now, posted limit) without redundancy. It is front-loaded and free of unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with an output schema and strong safety annotations, the description covers everything needed to invoke it appropriately. The combination of annotations, output schema, and succinct description leaves no significant contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema covers 100% of the parameter surface, so there is little parameter information to add. The description's mention of 'posted limit' gives helpful semantic framing even though no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: determining whether the subject is currently speeding and by how much over the posted limit. While phrased as a question rather than an imperative-style description, it is specific and distinguishable from sibling tools like get_truck_state or get_raw_telemetry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when the current speeding status relative to the posted limit is needed. However, it does not explicitly explain when to prefer this tool over alternatives or mention any exclusions, leaving comparison with sibling tools to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_jobARead-onlyIdempotent
The current delivery job: cargo, route, pay, deadline, and on-time status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds no additional behavioral context (e.g., latency, freshness, or what happens if no active job exists). Since annotations carry the burden, a 3 is appropriate; the description does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It front-loads the core content (current delivery job) and lists the returned fields without any filler. Every word earns its place, making it exceptionally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with an output schema available and annotations covering behavioral safety, the description is complete. It specifies the key content returned, and the output schema handles the exact structure. Nothing an agent needs to decide whether to call this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema description coverage is trivially 100%. The description does not need to explain any parameters. Per the rubric, 0 params yields a baseline of 4, and the description adds no unnecessary detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (current delivery job) and the specific attributes it returns (cargo, route, pay, deadline, on-time status). It unambiguously identifies the tool's function and differentiates it from sibling getters like get_truck_state or get_fuel_status by focusing on the job itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving current job details, but it does not explicitly state when to use it versus alternatives. There is no context about prerequisites or exclusions, but given the simplicity of a zero-parameter getter, the usage is reasonably inferable from the name and description. It meets the 'implied usage' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eco_scoreARead-onlyIdempotent
A 0-100 driving score for this session, with the factors dragging it down.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, and openWorld hints, so the safety profile is covered. The description adds useful semantic context (score range and contributing factors) beyond the annotations, but it does not disclose any additional behavioral traits such as data staleness or calculation basis. Given the annotations carry the main burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the key output (0-100 score) and immediately notes the inclusion of affecting factors. There is no filler or repetition; every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and an output schema present, the description sufficiently explains what the score represents and its range. It could benefit from a note on when to use it over sibling tools, but that falls under usage guidelines. Overall, the tool is adequately specified for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema is fully self-explanatory. The description adds no parameter information, but none is needed. The baseline of 4 applies due to the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 0-100 driving score for the current session, and mentions that it includes the factors that lower it. This is a specific resource ('driving score') with a precise range and context, distinguishing it from sibling tools like get_trip_summary or get_raw_telemetry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as get_trip_summary or check_speeding. The description only states what it does, not when it is appropriate or when another tool should be preferred. This leaves the agent to infer usage context from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fuel_statusARead-onlyIdempotent
Fuel level, consumption, estimated range, and whether it's enough to reach the routed destination.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the specific data fields returned but does not reveal any additional behavioral traits (e.g., data freshness, side effects, or error conditions). With annotations covering the core behavior, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence lists all four data points without any filler. It is front-loaded with the most important information (fuel level) and efficiently covers the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no parameters and an output schema exists, the description fully communicates the tool's purpose and return value. An agent can confidently call this tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so no parameter-specific documentation is needed. The description's mention of the routed destination implies that navigation context is automatically used, but since no parameters exist, the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states precisely what the tool returns: fuel level, consumption, estimated range, and a binary judgment about reaching the routed destination. This is specific, names the resource (fuel status), and clearly distinguishes it from siblings like get_navigation or get_truck_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for fuel-related queries, but it does not explicitly state when to use it over alternatives or any exclusions. Given its narrow scope, the intended use is fairly obvious, but the lack of explicit routing guidance leaves room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raw_telemetryARead-onlyIdempotent
The full normalized telemetry snapshot as JSON (for power users / debugging).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by explaining the output is a 'full normalized telemetry snapshot', indicating the data is normalized and complete, which is behavioral context not present in the annotations. This enhances understanding without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the core purpose ('full normalized telemetry snapshot as JSON') and then adds a clarifying audience note. Every word earns its place, with no filler or redundancy. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema already defined, the description is sufficient. It states what the tool returns and who it is intended for. It does not explicitly mention when to prefer siblings, but the 'full' vs specific distinction is implied, and the presence of an output schema means return format is already documented. Overall, it covers what an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is trivially 100% because there are no properties to document. The baseline for 0 parameters is 4, and the description does not need to explain parameters. It adds no parameter-specific information, but none is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool returns 'the full normalized telemetry snapshot as JSON', which clearly identifies the resource and the format. The qualifiers 'full' and 'normalized' help distinguish it from siblings like get_truck_state or get_fuel_status, though it does not explicitly name a sibling or contrast itself. This is clear and specific enough to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says it is 'for power users / debugging', which implies the intended use case: when a user needs the complete raw snapshot for debugging rather than a focused subset. It does not explicitly state when not to use it or name alternative tools, but the user audience hint provides clear context about when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rest_advisorARead-onlyIdempotent
Fatigue guidance based on continuous driving time (EU hours-of-service style).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior, so the description need not repeat these. It does add the context of EU hours-of-service style, which hints at the regulatory framework behind the guidance. However, it does not disclose any edge cases, data availability limits, or the nature of the output beyond 'guidance.' Given the low complexity and strong annotations, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the core purpose ('Fatigue guidance') first, then clarifies the basis ('continuous driving time') and adds a contextual qualifier ('EU hours-of-service style'). Every word earns its place, and it is appropriately sized for a zero-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (which we don't see but is present), the description sufficiently conveys what the tool does. It could be enhanced by explicitly stating when to call it (e.g., 'Use when the driver has been driving for a sustained period'), but it is currently adequate for an agent to understand its role among the sibling tools. The lack of any handling instructions for missing or invalid data is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4 per the rubric. The description's mention of 'continuous driving time' clarifies the conceptual input even though no explicit parameter exists, helping the agent understand what data drives the guidance. This adds value beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('get') and resource ('rest advisor') with a precise function: providing fatigue guidance based on continuous driving time. It is distinct from sibling tools such as get_truck_state, get_navigation, and get_eco_score, which cover unrelated domains. The EU hours-of-service mention adds domain context without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is relevant when continuous driving time is a factor, but it does not explicitly state when to use it versus alternatives, nor does it mention exclusion criteria. Since no sibling tool provides fatigue guidance, the lack of explicit alternatives is acceptable, but it still lacks a clear 'use when' statement. The phrase 'based on continuous driving time' gives an implicit trigger, but more explicit guidance would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trip_summaryARead-onlyIdempotent
Rolling trip totals since the server started: distance, time, speeds, fuel, events.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the temporal context ('since the server started'), which is valuable behavioral information beyond the annotations. It does not elaborate on return structure, but that is covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every element ('rolling totals', 'since server started', the list of data types) earns its place, making it instantly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool takes no parameters and an output schema exists, the description is sufficiently complete. It defines the time window and the content of the summary, leaving the return format to the schema. An agent can call it without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline for this dimension is 4. The description correctly avoids mentioning any parameters, and the schema is empty, so there is nothing to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a resource (trip summary), and the scope ('rolling totals since the server started'), while enumerating the data categories (distance, time, speeds, fuel, events). This clearly distinguishes it from siblings like get_fuel_status or get_truck_state, which focus on narrower aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the use case (retrieving overall trip aggregates) but provides no explicit guidance on when to choose this over alternatives. It does not mention exclusions or contrast with sibling tools, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_truck_stateARead-onlyIdempotent
Current truck state: speed vs limit, engine, gear, cruise, fuel, damage, lights.
The one-call "what's happening right now" snapshot. Works with any configured source (mock/http/mmap).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds useful context by noting it works with any configured source (mock/http/mmap), indicating backend-agnostic behavior and the snapshot nature, which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first lists the included state aspects, and the second frames the tool's primary use case and backend flexibility. Every sentence carries meaning and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, is read-only with comprehensive annotations, and has an output schema, the description fully covers the essential context. It explains what the tool does, what data is returned, and that it works across sources, so no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema description coverage is 100% by vacuity. Per the baseline rule for 0-parameter tools, a score of 4 is appropriate; the description does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the 'current truck state' and enumerates the specific data aspects it covers (speed vs limit, engine, gear, cruise, fuel, damage, lights). It also brands itself as a 'one-call snapshot', which effectively differentiates it from more specialized sibling tools like get_fuel_status or get_navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the tool as the go-to for a comprehensive 'what's happening right now' overview, which implicitly advises using it when a broad state is needed rather than a single metric. However, it does not explicitly name alternative tools or exclusion criteria, so the guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_eventsARead-onlyIdempotent
Recent driving events (speeding, hard braking, collisions, refuels), newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events to show. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false, so the safety and idempotency profile is covered. The description adds the behavioral traits of ordering (newest first) and scope (driving events including specific categories). It doesn't mention pagination or default limit behavior, but that is partially covered by the schema default. Given the annotations provide a strong baseline, the description adds useful context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loads the core purpose (recent driving events) before enumerating event types and ordering. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (though not shown here, it's indicated as present), and the description doesn't need to explain return format. Combined with annotations and schema, the description is sufficient for an agent to know what it returns and when to call it. Minor gap: no mention of how events are categorized or whether filters exist beyond limit, but that may be beyond scope for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the only parameter `limit` has a description). The description does not add additional parameter semantics beyond what's in the schema, but the parameter itself is simple and well-covered. Baseline 3 is appropriate when the schema already documents the parameter effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (recent driving events) and the specific event types (speeding, hard braking, collisions, refuels), and notes the ordering (newest first). This distinguishes it from sibling tools like get_raw_telemetry or get_trip_summary, which are either more raw or aggregate differently. The verb 'list' is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a general-purpose listing use case but does not explicitly state when to use this vs. alternatives. Sibling tools like check_speeding or get_trip_summary might cover similar ground, but no exclusion or preference guidance is given. The ordering and event type filtering are clear, but no scenarios are provided.
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.
10 tool updates
v0.2.0- First observed
check_speeding - First observed
get_active_job - First observed
get_eco_score - First observed
get_fuel_status - First observed
get_navigation - First observed
get_raw_telemetry - First observed
get_rest_advisor - First observed
get_trip_summary - First observed
get_truck_state - First observed
list_recent_events
TDQS
Scored across 10 tools
Each tool targets a distinct aspect of the truck state (speed, fuel, navigation, job, etc.), but there is some overlap: get_truck_state includes speed/fuel while check_speeding and get_fuel_status focus on those specifically. Descriptions clarify the focus, so agents can generally select correctly.
Most tools follow a get_ verb pattern, but check_speeding and list_recent_events break the convention with different verbs. This is more than a minor deviation, though still readable and predictable overall.
With 10 tools, the server is well-scoped for a truck telemetry/monitoring purpose. Each tool has a clear role, and none feel redundant or missing at this granularity.
The tool set covers a broad range of truck and driver status (state, navigation, fuel, job, speeding, eco, trip, rest, events, raw data). Missing operations like historical queries or filtered events are minor gaps that most workflows can work around.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Furgonetka MCP Server is an extension for LLMs (such as Claude) that integrates AI assistants with Poland's most popular courier brokerage platform. The server enables models to interact directly with services from various couriers (including InPost, DPD, DHL, UPS, and Poczta Polska) through a single, unified interface. With this integration, your AI stops just "writing about logistics" and starts actually managing it.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server combining TeslaMate historical analytics with Fleet API live data and commands. Works with Claude Code, Claude Desktop, Cursor, and any MCP-compatible client.292MIT
- AlicenseAqualityBmaintenanceA local MCP server that gives Claude (or any MCP-compatible AI client) access to Formula 1 race data. Load any session from 2018 onwards, ask questions in natural language, and get answers backed by real telemetry, timing, and strategy data.4171MIT
- AlicenseNot gradedqualityDmaintenanceThis MCP server provides real-time integration between Elite Dangerous and Claude Desktop, enabling AI-powered analysis of your gameplay data and dynamic generation of EDCoPilot custom content.3MIT
- AlicenseAqualityBmaintenanceLocal MCP server that connects Claude Desktop with Garmin and Apple Health data to read training and recovery, estimate heart rate and pace zones, analyze performance, and create structured workouts.22MIT