mcp-gnu-units
mcp-gnu-units
mcp-gnu-units is an MCP server that gives AI agents precise, offline unit
conversion backed by the GNU units database. Convert between 3000+ units of
measurement — length, mass, time, temperature, area, volume, energy, power,
pressure, speed, data and more — evaluate compound unit expressions like kW*h
or acre*ft, reduce any quantity to its SI base units, search the unit database
by keyword, and look up the exact definition of any unit, prefix, or physical
constant. Deterministic, dimension-aware, and free of the hardcoded per-category
unit tables every other converter ships.
Status: feature-complete, pre-release. All five domain tools ship —
find_units,convert,convert_to_si,define_unit, andlist_prefixes— alongside theinfohealth check. Not yet published to PyPI; the remaining publish steps are tracked inTODO.
Distribution name: mcp-gnu-units · import package: mcp_gnu_units.
Built on GNU units
This project stands on the shoulders of GNU units, the units-conversion program written and maintained by Adrian Mariano for the Free Software Foundation. Its database is the product of decades of careful curation — thousands of units, physical constants drawn from CODATA and NIST, and the conversion semantics that make dimensional analysis trustworthy. This server would not exist without it.
mcp-gnu-units bundles that database verbatim (see
Bundled data & provenance below) and pairs it with
an independent, pure-Python conversion engine, so every number it returns traces
straight back to GNU units' own definitions. It is offered in the same spirit
and under the same license (GPL-3.0-or-later). If you find this useful, the
original earns the credit first: https://www.gnu.org/software/units/.
Related MCP server: Unit Expert MCP
Bundled data & provenance
This server stands on GNU units, Adrian
Mariano's units-conversion program, by bundling its unit database verbatim at
src/mcp_gnu_units/data/definitions.units. The conversion engine here is an
independent implementation; GNU units supplies the data.
Source: GNU units 2.27 (tarball),
definitions.unitsdata version 3.26 (2026-02-25).License: GPL-3.0-or-later © Free Software Foundation — the same license as this project, so the two are wholly compatible.
Integrity: the upstream tarball was GPG-verified (good signature from Adrian Mariano) before the file was vendored.
Full attribution, version pins, and checksums are recorded in
NOTICE.
Sponsoring
mcp-gnu-units is free, open-source software developed in my spare time. Sponsoring keeps this project alive and actively maintained — it funds new units-engine features, bug fixes, and ongoing support, and it's a direct signal that the work is worth continuing.
If the project is useful to you, please consider sponsoring it through GitHub Sponsors. Click the Sponsor button at the top of the repository, or visit the link directly, and pick a one-time or recurring tier. Every contribution, large or small, is hugely appreciated and goes straight back into keeping mcp-gnu-units healthy.
License
GPL-3.0-or-later. See LICENSE. The bundled GNU units database is
also GPL-3.0-or-later © Free Software Foundation; see NOTICE.
Available Tools
6 toolsconvertA
Convert a value or unit expression from one unit to another (GNU units engine, TODO §16).
The universal conversion core: one tool covers every category (length, mass,
time, temperature, area, volume, energy, power, speed, data, …) plus compound
expressions like kW*h or acre*ft. Linear conversions return the ratio of
coefficients; a nonlinear target (e.g. tempF) applies that unit's inverse.
Returns: from and to (echoed), result (the converted magnitude WITH the
target unit, e.g. "1.609344 km" — the primary human-readable answer), value
(the same magnitude as a bare float for programmatic use), and exact (true
when the result is exact, false when it was rounded).
Errors cleanly (isError) when a unit is unknown, an expression is malformed,
or the two sides are not conformable.
Example: convert("1 mile", "km") ->
{"from":"1 mile","to":"km","result":"1.609344 km","value":1.609344,"exact":true}
| Name | Required | Description | Default |
|---|---|---|---|
| to_expr | Yes | The unit expression to convert TO, e.g. 'km', 'gallons', 'joule', 'tempF'. Must be dimensionally conformable with `from_expr` (both length, both energy, …) or a nonlinear target such as 'tempF'; otherwise the call errors. Use find_units to discover the exact spelling of a unit. | |
| from_expr | Yes | The quantity or unit expression to convert FROM. May carry a numeric coefficient and be a compound expression: '2.5 acre*ft', '55 mile/hour', 'kW*h', '0 tempC'. A bare unit like 'mile' is treated as one of that unit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly explains linear vs nonlinear behavior, return fields (from, to, result, value, exact), error handling (unknown unit, malformed expression, non-conformable), and provides a concrete example. Fully transparent.
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?
Description is well-structured and concise. Front-loaded with purpose, followed by behavior, return values, error handling, and example. No unnecessary 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?
For a tool with 2 params fully described in schema and no output schema, the description covers input, output, error cases, and an example completely. Fits the complexity well.
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 description coverage is 100%. The description adds significant meaning beyond the schema: explains that from_expr can carry a numeric coefficient and compound expressions, to_expr must be dimensionally conformable or a nonlinear target, and suggests using find_units for exact spelling.
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?
Clearly states verb 'convert' and resource 'value or unit expression'. Distinguishes from sibling tools by calling itself 'the universal conversion core' covering all categories, which sets it apart from convert_to_si, find_units, etc.
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?
Describes the tool as the universal conversion core and implicitly covers when to use it. Mentions find_units for discovering unit spelling, hinting at alternatives. Could be more explicit about when to use convert_to_si, but still provides useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_to_siA
Reduce a value or unit expression to its SI base units (GNU units engine, TODO §17).
Rewrites any expression in terms of the database's primitive/base units — kg, m,
s, A, K, mol, cd, and the like — collapsing all derived and prefixed units. This
is how you see what a quantity really is dimensionally: kW*hour becomes
3600000 kg m^2 / s^2 (3.6 MJ), newton becomes 1 kg m / s^2. Use it to
compare or sanity-check units, or to get a magnitude in coherent SI.
Returns: expr (echoed), result (the reduced quantity WITH its base-unit
signature, e.g. "3600000 kg m^2 / s^2" — the primary human-readable answer),
value (the same magnitude as a bare float for programmatic use), dimension
(just the base-unit signature, e.g. "kg m^2 / s^2", or "1" when dimensionless),
and exact (true when the result is exact, false when it was rounded).
Errors cleanly (isError) when a unit is unknown, an expression is malformed, or
it is a nonlinear unit with no linear base form (e.g. tempF).
Example: convert_to_si("kWhour") ->
{"expr":"kWhour","result":"3600000 kg m^2 / s^2","value":3600000.0,
"dimension":"kg m^2 / s^2","exact":true}
| Name | Required | Description | Default |
|---|---|---|---|
| expr | Yes | The quantity or unit expression to reduce to SI base units. May carry a numeric coefficient and be compound: 'kW*hour', '100 W', 'acre ft', '55 mile/hour'. A bare unit like 'newton' is treated as one of that unit. ⚠️ In the GNU units database single-letter names are literal: 'h' is Planck's constant, not hour — write 'hour' (so energy is 'kW*hour', not 'kW*h'). Nonlinear units (e.g. 'tempF') have no linear base form and error. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses edge cases (single-letter names, nonlinear units), error conditions (unknown unit, malformed expression), and return fields (expr, result, value, dimension, exact). No contradictions.
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?
Front-loaded with a clear one-sentence summary, followed by explanation, return field list, example, and edge case notes. Every sentence is informative; no redundancy.
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 one parameter, no output schema, and no annotations, the description fully covers tool behavior: purpose, return fields, example, errors, and unit quirks. Sufficient for an agent to use 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?
Schema description coverage is 100% with a detailed parameter description. The tool description repeats the same parameter info but adds contextual examples and return field descriptions. It adds value but not beyond what the schema already provides for the parameter itself.
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 it reduces to SI base units, with examples like 'kW*hour' -> '3600000 kg m^2 / s^2'. It distinguishes from siblings by specifying it reveals 'what a quantity *really* is dimensionally', whereas sibling 'convert' likely does generic unit conversion.
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?
Explicitly says 'Use it to compare or sanity-check units, or to get a magnitude in coherent SI.' It hints at when not to use by noting nonlinear units like tempF error. It does not explicitly compare to alternatives but the context implies it's for SI base reduction, not arbitrary conversions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_unitA
Show a single unit/prefix/constant's definition, kind, dimension, and base value (TODO §13).
Looks up one name in the GNU units database and reports exactly what it is and
what it reduces to — the inspect/"define" counterpart to convert. Works for
ordinary units, SI/binary prefixes, physical constants, nonlinear function
units (tempF), and piecewise tables (brwiregauge).
Returns an object with:
name: echoed.kind: "unit" | "primitive" | "prefix" | "function" | "table".definition: the database definition text (source line, leading name token removed). "!" marks a primitive/base unit.dimension: base-unit signature, e.g. "kg m^2 / s^3" for power; "1" when dimensionless. Omitted for hits that do not reduce.base_value: the unit reduced to base units with its coefficient, e.g. "745.699871582 kg m^2 / s^3". Omitted alongsidedimension.function: for nonlinear units only — {signature, input_dimensions, output_dimension} describing the conversion function.
Errors cleanly (isError) when the name is not defined in the database. Example: define_unit("newton") -> {"name":"newton","kind":"unit","definition":"kg m / s^2", "base_value":"1 kg m / s^2","dimension":"kg m / s^2"}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The exact name of a single unit, prefix, physical constant, function, or table to look up — e.g. 'horsepower', 'kilo', 'newton', 'tempF', 'brwiregauge'. This is a definition lookup, not an expression evaluator: pass one database name, not a compound expression like 'kW*hour'. Use find_units first if you are unsure of the exact spelling. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It thoroughly describes the return object fields (name, kind, definition, dimension, base_value, function), explains cases where fields are omitted (non-reducing hits), covers error handling (cleanly with isError), and details the function output for nonlinear units. This fully discloses behavioral traits.
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 appropriately sized for the complexity: a concise one-line summary, then structured elaboration. Every sentence adds value—examples, field explanations, error behavior, and usage notes. No redundancy, no wasted words. It is well-organized and easy to parse.
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 no output schema, the description fully and clearly documents the return object, including all possible fields, their meanings, and conditions for omission. The parameter is thoroughly explained with examples. Error handling is described. The tool's place among siblings is clear. The description leaves no significant gaps for an AI agent to select and invoke 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 single required parameter 'name' has a schema description that adds context: 'exact name', 'not an expression', and advice to use 'find_units' for uncertain spelling. The tool description reinforces this with examples of valid names. Schema coverage is 100%, and the description adds complementary meaning, making parameter semantics very clear.
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 starts with a clear one-liner 'Show a single unit/prefix/constant's definition, kind, dimension, and base value', specifying verb and resource. It explicitly distinguishes from sibling 'convert' and 'find_units', and provides examples like 'newton' and 'tempF', making the purpose unmistakable.
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 states what types of names are accepted (units, prefixes, constants, functions, tables) and explicitly tells when to use 'find_units' for uncertain spelling. It contrasts with 'convert' by stating it is the 'inspect/define counterpart'. There is clear guidance on when to use and when not to use (e.g., not for compound expressions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_unitsA
Search the GNU units database for units whose name or definition contains a keyword.
Basic substring search over the 3000+ unit GNU units database (TODO §14.1). A
hit is any unit whose name OR definition text contains query (case-insensitive);
prefixes are excluded. Results are returned in the database's native order and
capped at limit. Use this to discover the exact spelling of a unit before
calling a conversion tool.
Returns: query (echoed), count (number of results returned), and results,
a list of objects each carrying:
name: the unit's name.definition: its definition text (the source line with the leading name token removed, so the name is not repeated).kind: "unit" | "primitive" | "function" | "table".dimension: the unit reduced to base-unit signature, e.g. "kg m^2 / s^3" for power — use it to check whether two units are conformable without a second call. Omitted for hits that do not reduce (functions, tables).base_value: the unit reduced to base/primitive units, coefficient included, e.g. "745.699 kg m^2 / s^3". Omitted alongsidedimensionwhen the hit does not reduce.
Enriching each hit lets you search AND triage in a single call instead of a follow-up lookup per unit. Example: find_units("horsepower") -> {"query":"horsepower","count":9,"results":[{"name":"horsepower", "definition":"550 foot pound force / sec","kind":"unit", "dimension":"kg m^2 / s^3","base_value":"745.7 kg m^2 / s^3"}, ...]}
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of matches to return (results are in the database's native definition order; the scan stops once this many are found). | |
| query | Yes | Case-insensitive substring to search for. Matches against both the unit NAME and its DEFINITION text, so 'meter' finds the `meter` unit itself as well as units defined in terms of it (e.g. `micron`). Use a short keyword like 'byte', 'pressure', or 'newton'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It clearly explains behavior: substring search, case-insensitive, excludes prefixes, returns in native order, capped at limit. It also details the return structure comprehensively, including which fields are omitted for non-reducing hits.
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 lengthy but well-structured: a lead sentence, then details on search behavior, result fields, and an example. Every sentence contributes meaning. Slight redundancy could be trimmed, but it remains clear and organized.
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 no output schema, the description provides a complete specification of the return format, including an example. It covers search behavior, parameters, and all result fields with edge cases. For a search tool, this is fully comprehensive.
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%, baseline is 3. Description adds value by explaining that 'query' is a case-insensitive substring matching both name and definition, with a concrete example. For 'limit', it clarifies default, maximum, and stopping condition, going beyond the schema's basic description.
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 uses a specific verb ('search') and clearly identifies the resource ('GNU units database'). It states the action: find units whose name or definition contains a keyword. This distinguishes it from siblings like 'convert' or 'info', which are for different tasks.
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 explicitly tells when to use the tool: 'Use this to discover the exact spelling of a unit before calling a conversion tool.' It implies context but does not explicitly state when not to use it or list alternatives, though the sibling list provides some context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
infoA
Discovery / health-check entrypoint: report availability and version info.
Returns seven keys: status ("available"), name, version (package version),
python (runtime version), mcp_sdk (MCP SDK version, or "unknown"),
toolsets (empty until the GNU units engine lands), and units_db — the
bundled GNU units database's source, data_version, and data_updated
(§2.4.6 / §5.4), read from the shipped file's own header so it can't drift.
Example: {"status":"available","name":"mcp-gnu-units","version":"0.0.1",
"python":"3.12.3","mcp_sdk":"1.28.0","toolsets":[],
"units_db":{"source":"GNU units","data_version":"3.26","data_updated":"2026-02-25"}}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses the tool's behavior: it returns seven specific keys with details, mentions that toolsets is empty until the engine lands, and notes data is read from shipped file headers to avoid drift. This is comprehensive for a read-only health-check tool.
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 concise yet informative, front-loading the purpose and then listing return keys with context. Every sentence adds value, and the example clarifies the structure. No unnecessary 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?
Given the tool has no parameters and no output schema, the description fully covers what the tool does and what it returns, including an example. It is complete for an agent to understand and use the tool 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, so the description adds no parameter info. However, baseline for 0 parameters is 4, and the description explains the return structure in detail, which aids understanding without needing parameter guidance.
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 is a 'Discovery / health-check entrypoint' that reports availability and version info, distinguishing it from sibling tools which deal with unit conversions and definitions.
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 purpose implies usage as a health-check, but there is no explicit guidance on when to use it versus alternatives or when not to use it. Since siblings are distinct, the need for explicit guidance is lower, but still absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_prefixesA
List every SI and binary prefix in the GNU units database with its multiplier (TODO §13).
Enumerates all defined prefixes — the SI decimal ladder (quetta…quecto and
their symbols Q…q) plus the binary/IEC prefixes (kibi/Ki, mebi/Mi,
…) — sorted by descending magnitude. Useful for discovering the exact prefix
spelling to use in a convert or convert_to_si expression, or for seeing a
prefix's exact numeric value.
Returns: count (number of prefixes) and prefixes, a list of objects each
with name (the prefix, without its trailing hyphen) and multiplier (its
value as a string, exact where the value is an exact integer, e.g. kibi ->
"1024", mega -> "1000000").
Example: list_prefixes() ->
{"count":125,"prefixes":[{"name":"quetta","multiplier":"1000000000000000000000000000000"},
...,{"name":"kibi","multiplier":"1024"}, ...]}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses return structure (count and list of objects with name and multiplier), sorting order, exactness of values, and gives an example. It mentions a TODO but does not indicate any destructive behavior or rate limits.
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 well-structured: a concise summary line, followed by explanation of contents, usage, return format, and example. Every sentence adds value and it 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 no parameters, no output schema, and low complexity, the description is complete. It covers purpose, usage, return format, and an example. The TODO note is minor and does not detract.
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 no parameters, so the input schema fully covers the meaning. The description adds context about the output structure and purpose, but no parameter explanation is needed.
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 it lists all SI and binary prefixes from the GNU units database, sorted by descending magnitude. It distinguishes itself from sibling tools by specifying its use for discovering prefix spellings and values.
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 explicitly says it is useful for discovering prefix spellings for convert or convert_to_si expressions, and for seeing exact numeric values. It implies usage context but does not explicitly state when not to use it.
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.
6 tool updates
v0.1.0- First observed
convert - First observed
convert_to_si - First observed
define_unit - First observed
find_units - First observed
info - First observed
list_prefixes
TDQS
Each tool has a distinct purpose: convert handles general conversions, convert_to_si reduces to SI base units, define_unit shows definitions, find_units searches the database, info provides server health, and list_prefixes enumerates prefixes. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in lowercase with underscores (e.g., convert, define_unit, list_prefixes). There is no mixing of conventions or vague verbs.
With 6 tools, the server is well-scoped for unit conversion. It covers all essential operations: conversion, SI reduction, definition lookup, search, prefix listing, and server info without being bloated or thin.
The tool set appears complete for the domain of unit conversion. It provides conversion, SI reduction, search, definition inspection, prefix enumeration, and server metadata. There are no obvious gaps like missing batch conversion or undo functionality.
Maintenance
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
60+ units, live FX, timezones, and date arithmetic for AI agents.
500+ deterministic tools for AI agents: math, conversion, validation, hashing, encoding, date/time.
Precision math engine for AI agents. 203 exact methods. Zero hallucination.
Loan & mortgage calculator, compound interest, ROI, crypto prices, FX conversion for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceVerified unit conversion and dimensional analysis for AI agents. 190+ units, 31 domain formulas (clinical, physics, aerospace, SRE), physical constants with uncertainty propagation. Refuses invalid conversions structurally: the tool that won't convert mg to mL and knows the difference between torque and energy.AGPL 3.0
- FlicenseNot gradedqualityBmaintenanceConverts common units for length, weight, temperature, area, and volume.-
- AlicenseNot gradedqualityCmaintenanceProvides deterministic, verifiable text/code/measurement utilities for AI agents, enabling tasks like unit conversion, citation formatting, diffing, proofreading, readability scoring, and syntax checking with re-executable proof.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to convert between measurement units across length, weight, temperature, volume, speed, and data storage, with formulas included. Supports pay-per-call access via x402 micropayments without API keys or signup.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/laszlopere/mcp-gnu-units'
If you have feedback or need assistance with the MCP directory API, please join our Discord server