fsnb-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fsnb-mcpget details for GESN 01-01-001-01"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fsnb-mcp
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 |
| Rate by code ( |
| Full-text search (FTS5, Cyrillic) |
| Labor / machines / materials consumption norms |
| Does this code exist? |
| 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:sampleRequires 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, filefsnb.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:sampleLicense
MIT (code). FSNB data is licensed separately — see Data & attribution.
Русский (кратко)
MCP-сервер для офлайн доступа к нормам ФСНБ-2022 (ГЭСН) через SQLite + FTS5. Данные — из открытого набора ФГИС ЦС; ссылка на первоисточник обязательна. Пять инструментов в таблице выше. Код — MIT; данные — по условиям портала Минстроя.
Available Tools
3 toolsfsnb_rate_getB
Получить норму ГЭСН по коду (gesn:XX-XX-XXX-XX или голый код)
| Name | Required | Description | Default |
|---|---|---|---|
| work_code | Yes | Код нормы, напр. gesn:01-01-001-01 или 01-01-001-01 |
TDQS
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.
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.
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.
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.
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.
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_searchA
Полнотекстовый поиск норм ГЭСН по наименованию и составу работ (FTS5)
| Name | Required | Description | Default |
|---|---|---|---|
| fuzzy | No | LIKE-поиск вместо FTS5 (по умолчанию false) | |
| limit | No | Макс. результатов (по умолчанию 20) | |
| query | Yes | Поисковый запрос |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool performs full-text search using FTS5, but fails to disclose behaviors like read-only nature, performance, or authorization requirements. The description is adequate but lacks depth.
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, well-formed sentence that efficiently conveys the tool's purpose with relevant technical detail (FTS5). It is front-loaded and contains no extraneous information.
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 description omits details about the output format or fields, which is critical since no output schema is provided. It also assumes domain knowledge (GESN norms) without clarification. For a search tool, expected return structure should be mentioned.
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%, providing baseline clarity. The tool description adds context that the query searches within norms by name and composition, enhancing understanding beyond the schema's generic 'search query' label. This modest extra meaning earns a 4.
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 specifies a full-text search of GESN norms by name and composition, clearly identifying the action (search), resource (norms), and scope (by name and composition). This distinguishes it from siblings like fsnb_rate_get and fsnb_validate_code.
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 does not explicitly state when to use this tool vs alternatives. While the sibling tools have distinct purposes (get a rate, validate a code), usage guidelines are only implied and not articulated, leaving room for confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fsnb_validate_codeB
Проверить существование кода нормы в базе
| Name | Required | Description | Default |
|---|---|---|---|
| work_code | Yes | Код нормы для валидации |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.0- First observed
fsnb_rate_get - First observed
fsnb_search - First observed
fsnb_validate_code
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Russian books search, details, and recommendation candidates.
An MCP server that audits the fairness of construction and renovation estimates in Japan. Provides fair-price ranges, overcharge detection, and verifiable unit-cost data based on JCCDB (65,520 items across 402 categories, CC BY 4.0, DOI-backed).
MCP server for accessing curated awesome list documentation
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceUniversal database MCP server connecting to MySQL, PostgreSQL, SQLite, DuckDB and etc.5 npm3,493MIT
- AlicenseAqualityAmaintenanceMCP 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.82MIT
- FlicenseNot gradedqualityBmaintenanceMCP 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.-
- AlicenseAqualityCmaintenanceMCP server for local knowledge management with Markdown and PDF indexing using SQLite FTS5.512 npm2MIT