Skip to main content
Glama
pyrfor

fsnb-mcp

by pyrfor

fsnb-mcp

License: MIT

Offline MCP access to official Russian construction norms (ФСНБ-2022 / ГЭСН).
Agents look up rates, search text, and pull resource composition from a local SQLite DB — no network after ingest.

Proof — five tools

Tool

Job

fsnb_rate_get

Rate by code (gesn:01-01-001-01 or 01-01-001-01)

fsnb_search

Full-text search (FTS5, Cyrillic)

fsnb_rate_composition

Labor / machines / materials consumption norms

fsnb_validate_code

Does this code exist?

fsnb_meta

Manifest + legal basis for the data set

Sample DB ships with 10 real rates. Full base is built locally from FGISC XML (not vendored in the npm package).

Related MCP server: mcp-egrul

First use

npm install && npm run build && npm run build:sample

Requires Node.js ≥ 22 (node:sqlite + FTS5).

MCP client config:

{
  "mcpServers": {
    "fsnb-mcp": {
      "command": "node",
      "args": ["/path/to/fsnb-mcp/dist/index.js"],
      "env": {
        "FSNB_DB": "/path/to/fsnb-mcp/samples/sample.sqlite"
      }
    }
  }
}

Env:

  • FSNB_DB — path to sqlite (wins)

  • FSNB_DATA_DIR — data dir (default ~/.fsnb-mcp/data, file fsnb.sqlite)

Full DB after downloading FGISC open data: node scripts/ingest/fgiscs-xml.mjs.

Data & attribution (required)

Normative data comes from the official FGISC open-data set «ФСНБ-2022» (Minstroy):
https://fgiscs.minstroyrf.ru/opendata/7707082071-fsnb

Use (including commercial) is allowed only with attribution to that portal.

Software legal basis: Minstroy letter №4350-ИТ/09 (2021-02-08) — no ban on software that automates estimate docs from FRSN/FGISC norms.

The server is read-only and does not call the network at runtime.

Develop

npm install
npm run build
npm test
npm run build:sample

License

MIT (code). FSNB data is licensed separately — see Data & attribution.


Русский (кратко)

MCP-сервер для офлайн доступа к нормам ФСНБ-2022 (ГЭСН) через SQLite + FTS5. Данные — из открытого набора ФГИС ЦС; ссылка на первоисточник обязательна. Пять инструментов в таблице выше. Код — MIT; данные — по условиям портала Минстроя.

Available Tools

3 tools
fsnb_rate_getB

Получить норму ГЭСН по коду (gesn:XX-XX-XXX-XX или голый код)

ParametersJSON Schema
NameRequiredDescriptionDefault
work_codeYesКод нормы, напр. gesn:01-01-001-01 или 01-01-001-01

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states 'get norm by code' without mentioning required permissions, error behavior (e.g., not found), response format, or side effects. This is insufficient.

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

Conciseness4/5

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

The description is very concise (one sentence) and front-loaded with the action. However, the parentheses add format examples, which are helpful. No waste, but could be slightly more structured (e.g., bullet format examples).

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

Completeness3/5

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

Given one parameter and no output schema, the description adequately explains how to invoke the tool but leaves uncertainty about what a 'norm' contains or how errors manifest. Complete enough for basic use but lacks output context.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the code format example already present in the schema. It adds minimal extra meaning beyond what the schema provides, so baseline 3 is appropriate.

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?

The description clearly states the tool retrieves a GESN norm by code, with a specific format example. It distinguishes from siblings implicitly (fsnb_search searches, fsnb_validate_code validates), but could be more explicit about its unique role.

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 implied: you need a norm code. However, no explicit guidance on when to use this over siblings (e.g., fsnb_search) or conditions (e.g., code must be valid). Lacks when-not or alternatives.

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

fsnb_validate_codeB

Проверить существование кода нормы в базе

ParametersJSON Schema
NameRequiredDescriptionDefault
work_codeYesКод нормы для валидации

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description alone must disclose behavior. It only says 'check existence' but omits what happens (e.g., return boolean, throw error), side effects, authentication needs, or output format.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It starts with the verb, but could benefit from additional structure. Still efficient and front-loaded.

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?

The tool is simple with one parameter and no output schema. However, the description fails to explain the return behavior or how to interpret the validation result, which is essential for a validation tool.

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

Parameters3/5

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

Schema coverage is 100% and already describes the parameter as 'код нормы для валидации'. The description adds no new meaning beyond restating the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Проверить существование') and the resource ('кода нормы в базе'), distinguishing it from sibling tools like fsnb_rate_get (get rate) and fsnb_search (search). It is specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, or situations where validation is appropriate.

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. 3 tool updatesv0.1.0
    • First observedfsnb_rate_get
    • First observedfsnb_search
    • First observedfsnb_validate_code

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: retrieve a specific norm by code, perform full-text search, and validate code existence. No overlap or ambiguity.

Naming Consistency4/5

All tools use the 'fsnb_' prefix and underscore style, but the order of verb and object varies: 'rate_get' (object+verb), 'search' (verb-only), 'validate_code' (verb+object). Mostly consistent but not perfectly uniform.

Tool Count4/5

3 tools is minimal but well-scoped for a norm lookup service: search, get by code, and validate. Not too many or too few for the intended functionality.

Completeness4/5

Covers essential read operations: retrieval, search, and existence check. Minor gaps like pagination or listing all codes are absent but not critical for the domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the Russian state registries EGRUL (legal entities) and EGRIP (individual entrepreneurs), built on official Federal Tax Service open-data dumps. Self-hosted via local SQLite.
    8
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for searching and analyzing 1C enterprise metadata and BSL code using a SQLite backend. Enables querying configuration structure, code routines, and performing compliance checks via natural language.
    -