Nace Mcp

io.github.DeJo90Published by GitHub account DeJo90v1.0.1Updated Oct 24, 2026

Browse, search and fuzzy-match NACE Rev. 2.1 economic activity classification codes.

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

A local MCP server that lets an assistant look up, browse, search and fuzzy-match NACE Rev. 2.1 economic activity classification codes.

What you can do
Look up a single NACE code and get its label, level and parent code, with the full parent chain confirmed by drilling in after a suggestion. Browse the hierarchy: list the 22 top-level sections or the direct children of any code, up to 50 results. Search activity labels by case-insensitive substring, returning up to 10 matches. Fuzzy-match a free-text activity description to the top 5 candidate codes with a short reason for each match.
When to use it
Useful when an assistant needs to assign or verify NACE Rev. 2.1 codes for companies, invoices, statistics or regulatory forms, or to explore the classification hierarchy. It keeps the 1,047-code dataset out of the conversation and returns only the relevant entries.
Requirements
Runs as a local process over stdio, started with npx nace-mcp, so Node.js and npm are needed. No accounts, API keys, environment variables or headers are declared. The dataset is bundled and loaded into memory at startup, so no network access is described.
Before you install
Read-only lookup and matching tools; no data is written, sent or deleted. Suggestions are heuristic token matches, so results should be confirmed with a code lookup rather than treated as authoritative. The README notes that non-English descriptions should be rephrased in English before fuzzy matching. The data is a community-maintained conversion of the Eurostat classification.

Installation

In SourceWeft

  1. Open Nace Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

nace-mcp

An MCP server exposing NACE Rev. 2.1 economic activity classification codes for AI agents.

NACE (Nomenclature of Economic Activities) is the European standard for classifying economic activities. This server loads all 1,047 codes into memory at startup and provides four tools for browsing, looking up, searching, and fuzzy-matching codes — without ever dumping the full dataset to the agent.

MCP Configuration

Add to your Claude (or any MCP-compatible client) config:

json
{  "mcpServers": {    "nace-mcp": {      "command": "npx",      "args": ["nace-mcp"]    }  }}

Tools

nace_get(code)

Returns full details for a single NACE code.

Input: code — e.g. "A", "01", "25.1", "25.11"

Example output:

json
{  "code": "95.31",  "label": "Repair and maintenance of motor vehicles",  "level": "class",  "parent": "95.3"}

nace_browse(parent_code?)

Returns the direct children of a code (compact: code + label only). Omit parent_code to list all 22 top-level sections. Max 50 results.

Input: parent_code (optional) — e.g. "C", "25", "25.1"

Example — nace_browse() (no argument):

json
[  { "code": "A", "label": "Agriculture, forestry and fishing" },  { "code": "B", "label": "Mining and quarrying" },  { "code": "C", "label": "Manufacturing" },  ...]

Example — nace_browse("J"):

json
[  { "code": "58", "label": "Publishing activities" },  { "code": "59", "label": "Motion picture, video and television programme production, sound recording and music publishing activities" },  { "code": "60", "label": "Programming, broadcasting, news agency and other content distribution activities" },  ...]

nace_search(query)

Case-insensitive substring search across all activity labels. Returns up to 10 matches.

Input: query — e.g. "software", "fishing", "consulting"

Example — nace_search("software"):

json
[  { "code": "58.1", "label": "Publishing of books, newspapers and other publishing activities, except software publishing", "level": "group" },  { "code": "58.19", "label": "Other publishing activities, except software publishing", "level": "class" },  { "code": "58.2", "label": "Software publishing", "level": "group" },  { "code": "58.29", "label": "Other software publishing", "level": "class" }]

nace_suggest(activity_description)

Fuzzy-matches a free-text description to NACE codes. Tokenizes the input, scores by matched terms, and returns the top 5 candidates with a brief explanation. Designed for AI agents doing classification.

Input: activity_description — free-text description of the economic activity

Example — nace_suggest("computer programming software development consultancy"):

json
[  {    "code": "62",    "label": "Computer programming, consultancy and related activities",    "level": "division",    "reason": "Matched: \"computer\", \"programming\", \"consultancy\""  },  {    "code": "62.1",    "label": "Computer programming activities",    "level": "group",    "reason": "Matched: \"computer\", \"programming\""  },  {    "code": "62.10",    "label": "Computer programming activities",    "level": "class",    "reason": "Matched: \"computer\", \"programming\""  },  ...]

Tip: For non-English descriptions (e.g. German "KFZ Mechaniker"), rephrase in English before calling nace_suggest.


Prompt Examples

These examples show how an AI agent uses the tools in practice.


"What NACE code applies to a car repair shop?"

The agent calls nace_suggest with an English description:

nace_suggest("motor vehicle repair maintenance workshop")
json
[  {    "code": "95",    "label": "Repair and maintenance of computers, personal and household goods, and motor vehicles and motorcycles",    "level": "division",    "reason": "Matched: \"motor\", \"vehicle\", \"repair\", \"maintenance\""  },  {    "code": "95.3",    "label": "Repair and maintenance of motor vehicles and motorcycles",    "level": "group",    "reason": "Matched: \"motor\", \"vehicle\", \"repair\", \"maintenance\""  },  {    "code": "95.31",    "label": "Repair and maintenance of motor vehicles",    "level": "class",    "reason": "Matched: \"motor\", \"vehicle\", \"repair\", \"maintenance\""  }]

The agent then drills into the best match with nace_get("95.31") to confirm the parent chain:

json
{  "code": "95.31",  "label": "Repair and maintenance of motor vehicles",  "level": "class",  "parent": "95.3"}

Result: 95.31 is the correct class-level code for a car repair shop.


"What NACE code covers a bakery?"

nace_suggest("bakery bread pastry production")
json
[  {    "code": "10.71",    "label": "Manufacture of bread; manufacture of fresh pastry goods and cakes",    "level": "class",    "reason": "Matched: \"bread\", \"pastry\""  }]

Result: 10.71 — first candidate is an exact match, no further navigation needed.


"Explore the information & communication sector"

The agent browses the hierarchy top-down:

nace_browse("J")
json
[  { "code": "58", "label": "Publishing activities" },  { "code": "59", "label": "Motion picture, video and television programme production, sound recording and music publishing activities" },  { "code": "60", "label": "Programming, broadcasting, news agency and other content distribution activities" },  { "code": "61", "label": "Telecommunications" },  { "code": "62", "label": "Computer programming, consultancy and related activities" },  { "code": "63", "label": "Information service activities" }]

Then zooms into division 62:

nace_browse("62")
json
[  { "code": "62.1", "label": "Computer programming activities" },  { "code": "62.2", "label": "Computer consultancy and computer facilities management activities" },  { "code": "62.3", "label": "Computer facilities management activities" },  { "code": "62.9", "label": "Other information technology and computer service activities" }]

Data

  • Source: jnsprnw/nace-codes — community-maintained JSON conversion of the official Eurostat NACE Rev. 2.1 classification
  • Coverage: 1,047 entries across 22 sections (A–U), 4 levels (section → division → group → class)
  • Authority: Eurostat NACE Rev. 2.1

Development

bash
npm installnpm run build    # compile TypeScript → dist/node dist/index.js  # run the server (listens on stdio)

To inspect with the MCP Inspector:

bash
npx @modelcontextprotocol/inspector node dist/index.js

Source: README.md at commit f935cfd

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts