MCP-Server

ThrustLab

com.thrustlab/thrustlab
IoT & Hardware Wissenschaft & Engineering Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Simulates electric UAV powertrains and estimates propeller performance while providing searchable motor, propeller and battery data.

estimate_propeller
Estimate a propeller
Thrust, torque and shaft power for one propeller, from its printed size. A closed-form momentum plus blade-element equation — no motor, no battery, no account. Give the size as it is printed: a 10x5 is `diameter_in=10`, `pitch_in=5`. `chord_ratio` is the chord at 75 % radius over the diameter: 0.065 thin electric, 0.07 sport, 0.10 slow flyer, 0.11 multirotor.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'title': 'estimate_propellerArguments', 'required': ['diameter_in', 'pitch_in', 'rpm'], 'properties': {'rpm': {'type': 'number', 'title': 'Rpm'}, 'blades': {'type': 'integer', 'title': 'Blades', 'default': 2}, 'pitch_in': {'type': 'number', 'title': 'Pitch In'}, 'altitude_m': {'type': 'number', 'title': 'Altitude M', 'default': 0.0}, 'camber_pct': {'type': 'number', 'title': 'Camber Pct', 'default': 3.2}, 'chord_ratio': {'type': 'number', 'title': 'Chord Ratio', 'default': 0.065}, 'diameter_in': {'type': 'number', 'title': 'Diameter In'}, 'airspeed_m_s': {'type': 'number', 'title': 'Airspeed M S', 'default': 0.0}}}
Ausgabeschema
{'type': 'object', 'title': 'estimate_propellerDictOutput', 'additionalProperties': True}
get_component
Read one component
Read one database row by its id (`comp_…`), with provenance. Propeller rows give diameter, pitch, blade count, weight and maximum rpm. Blade station geometry is never returned.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'title': 'get_componentArguments', 'required': ['component_id'], 'properties': {'component_id': {'type': 'string', 'title': 'Component Id'}}}
Ausgabeschema
{'type': 'object', 'title': 'get_componentDictOutput', 'additionalProperties': True}
get_result
Read a result
Read a stored result: a share `token` from a run, or a `simulation_id`. `simulation_id` needs a ThrustLab API key in `Authorization: Bearer` and reads only that account's own runs.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'title': 'get_resultArguments', 'properties': {'token': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Token', 'default': None}, 'simulation_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Simulation Id', 'default': None}}}
Ausgabeschema
{'type': 'object', 'title': 'get_resultDictOutput', 'additionalProperties': True}
get_validation_summary
Read a validation summary
How accurate a model is, measured against wind-tunnel and bench data. `model` is "fast", "full", or an exact report slug such as "prom-5.3". The numbers are error against measured data by partition and channel, with the envelope they were measured inside. Quote the model name with the number.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'title': 'get_validation_summaryArguments', 'properties': {'model': {'type': 'string', 'title': 'Model', 'default': 'full'}}}
Ausgabeschema
{'type': 'object', 'title': 'get_validation_summaryDictOutput', 'additionalProperties': True}
search_components
Search the component database
Find motors, propellers or batteries in the ThrustLab database. `component_type` is "motor", "propeller" or "battery". `query` is a case-insensitive substring of the part name or its maker ("APC", "T-Motor", "13x6.5"). The maker sits under `spec.brand` for motors and batteries and under `spec.type` for propellers. `limit` is capped at 200 rows a page; when `has_more` is true, pass the returned `next_offset` as `offset` to read the next page. Each row carries its datasheet values, its source and the CC BY 4.0 attribution line. Pass a returned `id` to `simulate_powertrain`.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'title': 'search_componentsArguments', 'required': ['component_type'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Query', 'default': None}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}, 'sort_by': {'type': 'string', 'title': 'Sort By', 'default': 'name'}, 'sort_order': {'type': 'string', 'title': 'Sort Order', 'default': 'asc'}, 'component_type': {'type': 'string', 'title': 'Component Type'}}}
Ausgabeschema
{'type': 'object', 'title': 'search_componentsDictOutput', 'additionalProperties': True}
simulate_powertrain
Simulate a powertrain
Solve one operating point of a whole powertrain on the Fast model. Battery, ESC, motor and propeller are solved together, so the answer is a real thrust and current, not a propeller curve. The numbers come back in `result` (`result.All` = system totals in SI units: thrust N, current A, power W, time s; one entry per rotor; `result.Battery`), with a share URL. No second call is needed to read them.
Eingabeschema
{'type': 'object', '$defs': {'PropellerLabel': {'type': 'object', 'title': 'PropellerLabel', 'required': ['diameter_in', 'pitch_in'], 'properties': {'family': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Family', 'default': None, 'description': "Chord-ratio preset: 'thin electric' (0.065 D), 'sport' (0.07 D), 'slow flyer' (0.10 D) or 'multirotor' (0.11 D). Defaults to sport."}, 'pitch_in': {'type': 'number', 'title': 'Pitch In', 'maximum': 400, 'description': 'Pitch in inches, e.g. 5 for a 10x5.', 'exclusiveMinimum': 0}, 'camber_pct': {'anyOf': [{'type': 'number', 'maximum': 8, 'minimum': 0}, {'type': 'null'}], 'title': 'Camber Pct', 'default': None, 'description': 'Section camber in percent. Defaults to 3.2.'}, 'num_blades': {'type': 'integer', 'title': 'Num Blades', 'default': 2, 'maximum': 8, 'minimum': 2, 'description': 'Blade count.'}, 'chord_ratio': {'anyOf': [{'type': 'number', 'maximum': 0.5, 'exclusiveMinimum': 0}, {'type': 'null'}], 'title': 'Chord Ratio', 'default': None, 'description': "Chord at 75 % radius over diameter. Give it instead of 'family' (or with family='custom'); the two cannot both be set."}, 'diameter_in': {'type': 'number', 'title': 'Diameter In', 'maximum': 400, 'description': 'Diameter in inches, e.g. 10 for a 10x5.', 'exclusiveMinimum': 0}}, 'description': 'What is printed on the propeller â\x80\x94 all the Fast model reads.\n\nInches and a spoken family name, because that is how a propeller is sold and\nhow a user will say it. :func:`to_schema_label` turns this into the metres\nand the enum ``app.schemas.simulation.PropellerLabel`` declares.'}, 'PowertrainInput': {'type': 'object', 'title': 'PowertrainInput', 'required': ['motor_id', 'battery_id'], 'properties': {'motor_id': {'type': 'string', 'title': 'Motor Id', 'description': 'Catalog motor public id, e.g. comp_2xKâ\x80¦.'}, 'altitude_m': {'type': 'number', 'title': 'Altitude M', 'default': 0.0, 'maximum': 11000, 'minimum': 0}, 'battery_id': {'type': 'string', 'title': 'Battery Id', 'description': 'Catalog battery public id.'}, 'rotor_count': {'type': 'integer', 'title': 'Rotor Count', 'default': 1, 'maximum': 16, 'minimum': 1, 'description': 'Rotors on the craft.'}, 'airspeed_m_s': {'type': 'number', 'title': 'Airspeed M S', 'default': 0.0, 'maximum': 300, 'minimum': 0, 'description': '0 is a static run.'}, 'propeller_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Propeller Id', 'default': None, 'description': 'Catalog propeller public id.'}, 'throttle_pct': {'type': 'number', 'title': 'Throttle Pct', 'default': 100.0, 'maximum': 100, 'exclusiveMinimum': 0}, 'propeller_label': {'anyOf': [{'$ref': '#/$defs/PropellerLabel'}, {'type': 'null'}], 'default': None, 'description': 'Use instead of propeller_id to run from the printed size.'}}, 'description': 'One powertrain, as the anonymous endpoint accepts it (spec D4).\n\nCatalog components are referenced by their public id (``comp_â\x80¦``, from\n``search_components``). The propeller may instead be given as a label, which\nis all the Fast model needs.'}}, 'title': 'simulate_powertrainArguments', 'required': ['powertrain'], 'properties': {'powertrain': {'$ref': '#/$defs/PowertrainInput'}}}
Ausgabeschema
{'type': 'object', 'title': 'simulate_powertrainDictOutput', 'additionalProperties': True}
sweep_powertrain
Sweep a powertrain
Solve a powertrain across a throttle or airspeed range, up to 25 points. `sweep.steps` is the NUMBER OF POINTS, not a step size: start 40, stop 100, steps 4 gives 40, 60, 80 and 100. One sweep beats a loop of single points. The points come back in `result.points` with the share URL; no second call is needed to read them.
Eingabeschema
{'type': 'object', '$defs': {'SweepAxis': {'type': 'object', 'title': 'SweepAxis', 'required': ['parameter', 'start', 'stop', 'steps'], 'properties': {'stop': {'type': 'number', 'title': 'Stop'}, 'start': {'type': 'number', 'title': 'Start'}, 'steps': {'type': 'integer', 'title': 'Steps', 'maximum': 25, 'minimum': 2, 'description': 'Point count, at most 25 anonymous.'}, 'parameter': {'type': 'string', 'title': 'Parameter', 'description': "'throttle_pct' or 'airspeed_m_s'."}}, 'description': 'A 1-D sweep axis. ``steps`` is the NUMBER OF POINTS, not a step size.'}, 'PropellerLabel': {'type': 'object', 'title': 'PropellerLabel', 'required': ['diameter_in', 'pitch_in'], 'properties': {'family': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Family', 'default': None, 'description': "Chord-ratio preset: 'thin electric' (0.065 D), 'sport' (0.07 D), 'slow flyer' (0.10 D) or 'multirotor' (0.11 D). Defaults to sport."}, 'pitch_in': {'type': 'number', 'title': 'Pitch In', 'maximum': 400, 'description': 'Pitch in inches, e.g. 5 for a 10x5.', 'exclusiveMinimum': 0}, 'camber_pct': {'anyOf': [{'type': 'number', 'maximum': 8, 'minimum': 0}, {'type': 'null'}], 'title': 'Camber Pct', 'default': None, 'description': 'Section camber in percent. Defaults to 3.2.'}, 'num_blades': {'type': 'integer', 'title': 'Num Blades', 'default': 2, 'maximum': 8, 'minimum': 2, 'description': 'Blade count.'}, 'chord_ratio': {'anyOf': [{'type': 'number', 'maximum': 0.5, 'exclusiveMinimum': 0}, {'type': 'null'}], 'title': 'Chord Ratio', 'default': None, 'description': "Chord at 75 % radius over diameter. Give it instead of 'family' (or with family='custom'); the two cannot both be set."}, 'diameter_in': {'type': 'number', 'title': 'Diameter In', 'maximum': 400, 'description': 'Diameter in inches, e.g. 10 for a 10x5.', 'exclusiveMinimum': 0}}, 'description': 'What is printed on the propeller â\x80\x94 all the Fast model reads.\n\nInches and a spoken family name, because that is how a propeller is sold and\nhow a user will say it. :func:`to_schema_label` turns this into the metres\nand the enum ``app.schemas.simulation.PropellerLabel`` declares.'}, 'PowertrainInput': {'type': 'object', 'title': 'PowertrainInput', 'required': ['motor_id', 'battery_id'], 'properties': {'motor_id': {'type': 'string', 'title': 'Motor Id', 'description': 'Catalog motor public id, e.g. comp_2xKâ\x80¦.'}, 'altitude_m': {'type': 'number', 'title': 'Altitude M', 'default': 0.0, 'maximum': 11000, 'minimum': 0}, 'battery_id': {'type': 'string', 'title': 'Battery Id', 'description': 'Catalog battery public id.'}, 'rotor_count': {'type': 'integer', 'title': 'Rotor Count', 'default': 1, 'maximum': 16, 'minimum': 1, 'description': 'Rotors on the craft.'}, 'airspeed_m_s': {'type': 'number', 'title': 'Airspeed M S', 'default': 0.0, 'maximum': 300, 'minimum': 0, 'description': '0 is a static run.'}, 'propeller_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Propeller Id', 'default': None, 'description': 'Catalog propeller public id.'}, 'throttle_pct': {'type': 'number', 'title': 'Throttle Pct', 'default': 100.0, 'maximum': 100, 'exclusiveMinimum': 0}, 'propeller_label': {'anyOf': [{'$ref': '#/$defs/PropellerLabel'}, {'type': 'null'}], 'default': None, 'description': 'Use instead of propeller_id to run from the printed size.'}}, 'description': 'One powertrain, as the anonymous endpoint accepts it (spec D4).\n\nCatalog components are referenced by their public id (``comp_â\x80¦``, from\n``search_components``). The propeller may instead be given as a label, which\nis all the Fast model needs.'}}, 'title': 'sweep_powertrainArguments', 'required': ['powertrain', 'sweep'], 'properties': {'sweep': {'$ref': '#/$defs/SweepAxis'}, 'powertrain': {'$ref': '#/$defs/PowertrainInput'}}}
Ausgabeschema
{'type': 'object', 'title': 'sweep_powertrainDictOutput', 'additionalProperties': True}
Hinzugefügt
get_validation_summary
4. October 2026 02:40
Hinzugefügt
get_result
4. October 2026 02:40
Hinzugefügt
sweep_powertrain
4. October 2026 02:40
Hinzugefügt
simulate_powertrain
4. October 2026 02:40
Hinzugefügt
estimate_propeller
4. October 2026 02:40
Hinzugefügt
get_component
4. October 2026 02:40
Hinzugefügt
search_components
4. October 2026 02:40

Physical Capability Cloud

network.capability/physical-capability-cloud

Registers and manages physical equipment and operators, supports capability pricing, job contracts, telemetry, verification evide…

calc.engineer

engineer.calc/calc

Provides deterministic engineering calculators for RF and LoRa systems, electronics, batteries, solar and power systems, cooling,…

Opensensemap

io.github.pipeworx-io/opensensemap

Finds and aggregates readings from community-operated openSenseMap environmental sensors, including temperature, humidity, air qu…

RoboSelect360 - Humanoid Robot Intelligence

com.roboselect360/humanoid-robots

Provides market, specification, bill-of-materials, supply-chain, dependency, and risk intelligence for humanoid robots across mec…

device-house

house.device/device-house

Designs electronic devices and produces bills of materials, schematics, PCB layouts, firmware templates, manufacturing files, and…

Depureco Industrial Vacuum Explorer

io.github.depurecoindustrialvacuums-boop/industrial-vacuum-explorer

Searches and configures industrial vacuum equipment by application, sector, certification, power, capacity, filtration, and techn…

oeradio-mcp

io.github.achildrenmile/oeradio-mcp

Provides amateur-radio band and callsign information plus calculators for antennas, power, wavelength, cable loss, SWR, EIRP, and…

eurorack

com.eurorackref/eurorack

Provides citation-anchored Eurorack module specifications, compatibility information, manuals, synthesis concepts, patch techniqu…