1C configuration graph MCP server

1C Configuration MCP Server

An MCP server builds a metadata and call graph from a 1C configuration's XML and BSL export, with optional semantic search via an external embedder and Qdrant

MCP server

Medium risk

We rate an entry medium when the tool runs code, makes network calls or reads project files. Check what exactly it does before installing.

Why this level

  • With semantic search enabled, configuration code and metadata are sent to an external embedder and reranker
  • The HTTP endpoint listens on 0.0.0.0 by default and is unauthenticated without auth_token
All reasons and checks
Russian stack

axel-avb/mcp-1c-metadata

Install

Manual install

git clone --recurse-submodules https://github.com/axel-avb/mcp-1c-metadata.git
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Install including the legacy-form parser submodule.

This is third-party code. Review the repository files before installing.

What it does

The server parses a standard 1C configuration source-code export, XML object metadata and BSL modules, and builds a SQLite graph linking object-to-element, module-to-symbol, calls and cross-references. Twenty-three tools give a configuration inventory, an object's structure by section, search over objects and elements by description, a procedure call graph with BFS to a set depth, and a routine's body with pagination. Semantic search via search_config and search_bsl_code is optional: without an external OpenAI-compatible embedder and Qdrant, all structural tools still work off the plain SQLite graph, and the reranker is also optional, degrading gracefully to plain ANN search order. Legacy ordinary-type forms are separately supported: BSL from Form.bin is extracted with a vendored binary parser.

Who it is for. For 1C developers with large configurations who need a call graph and structural search over objects and BSL code, with an optional semantic layer.

Good fit when

  • You need a procedure call graph with depth-limited traversal, not just text search
  • You need a structural overview of an object: attributes, tabular sections, forms, commands in one call
  • You have a local embedder like Ollama and want semantic search over metadata and code

Not a fit when

  • There's no configuration export to source code, only a file-based or server infobase
  • The configuration is large and there's nowhere to run Qdrant: the README explicitly warns about tens of gigabytes of RAM for ERP 2.x
  • You need strict grammatical BSL validation: the parser is string-based and doesn't resolve conditional compilation

Example request

Find where the item price is stored in the configuration, and show who calls the sales-total calculation procedure

Limitations

The BSL parser is string-based rather than grammatical, sufficient for the call graph and search but not for strict code validation. Conditional compilation directives (#If/#Else) are not resolved, which can produce a duplicate symbol count. Calls are resolved by name within 1C's global namespace, so identically named procedures in different modules get CALLS edges to all candidates. Semantic search needs an external OpenAI-compatible embedder and Qdrant; without them only the structural part works. The embedder's vector dimension must exactly match the configured value, or Qdrant rejects the write. Python 3.11 or newer is required.

How to disable. Stop the python -m src.server process and remove the server from your MCP client configuration.

MCP

Transport
http
Authentication
API key
Environment variables
Environment variables
ONEC_CONFIG_ROOT
required
Root of the exported 1C configuration sources.
ONEC_EMBEDDER_BASE_URL
Base URL of an OpenAI-compatible embedder for semantic search, e.g. a local Ollama.
ONEC_AUTH_TOKEN
secret
Bearer auth token for the HTTP endpoint; empty means authentication is off.

Security check

  • With semantic search enabled, configuration code and metadata are sent to an external embedder and reranker
  • The HTTP endpoint listens on 0.0.0.0 by default and is unauthenticated without auth_token

README in short

The README describes the XML and BSL parser's capabilities, the SQLite graph, optional semantic search via an embedder, Qdrant and a reranker with a degradation table for each missing component, the submodule-based install, environment-variable configuration priority, the expected configuration export format, indexing commands with various flags, a full list of twenty-three tools by group, token cost for initializing the tool schema, connecting to Claude Desktop and Claude Code, running via Docker Compose, and a detailed limitations section covering unresolved conditional compilation and RAM requirements for large configurations.

FAQ

Does the server work without Qdrant and an embedder?

Yes, all structural tools (list_objects, get_symbol, get_callers/callees, get_references, graph_stats) work off the SQLite graph with no external services; only the search_config semantic search is unavailable.

How is the index updated after a configuration change?

python -m src.indexer is incremental by default and re-embeds only changed nodes; a --full flag triggers a full rebuild.

Editors’ pick

A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review

PluginMedium riskNo VPN needed292.5KRepository stars
Editors’ pick

Small composable skills for engineering with agents: plan grilling, TDD, bug diagnosis, code review and architecture

SkillLow risk271.4KRepository stars
Editors’ pick

GitHub toolkit for spec-driven development: the specify CLI adds agent commands and skills to a project, from principles to implementation

CLIMedium riskNo VPN needed139.3KRepository stars

Reference MCP servers

Model Context Protocol servers

Official

Official reference MCP servers: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time and Everything

MCP serverMedium risk90.6KRepository stars
Foxx AI1C configuration graph MCP server

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.