LabscoMCP early access ↗
feenlaceMCP SERVER

MCP 1c

Point an MCP client at your own 1C:Enterprise database — metadata tree, object and form structure, full-text BSL code search, read-only 1C queries and the event log — from a single Go binary that talks to the database's own HTTP service.

by feenlace ↗ERP & Vertical Business SystemsCommunity

LABSCO SUMMARY

A local bridge to one 1C base, and the metadata is the whole point.

A model that knows 1C in general still invents attributes your configuration does not have, and mcp-1c closes that gap by letting the client read the real object tree, forms and module code of your own base and run SELECT-only queries against its data — from one Go binary with no runtime to install. The cost sits on the 1C side rather than the client side: an extension in the base, a web-server publication, and a role for the account the connector runs as.

What it is

A single Go binary that sits between an MCP client and one 1C:Enterprise database. The client speaks stdio to mcp-1c, and mcp-1c speaks HTTP to a service published inside your base by an extension the binary installs for you — so the model reads the objects and code that are actually in your configuration instead of generic 1C documentation. It stays a local process: the only thing it talks to is the address in --base (default http://localhost:8080/hs/mcp-1c, or the MCP_1C_BASE_URL variable), and it neither knows nor cares which model is on the other side. The same config block works for Claude Desktop, Claude Code, Cursor, Windsurf, VS Code with Copilot or Continue, JetBrains IDEs, and local runners such as Ollama, LM Studio and llama.cpp. One static executable of 25-40 MB for Windows, macOS and Linux on amd64 and arm64 — no Python, Node.js, JVM or EDT.

What you get

  • The shape of your configuration — get_metadata_tree for the object tree (catalogues, documents, registers, defined types, common modules and more), get_object_structure for one object's attributes, tabular sections, dimensions and resources, get_form_structure for a form's elements, commands and event handlers, get_configuration_info for the configuration name and version, the vendor, the platform version and the run mode
  • Full-text search over module code — search_code in smart mode (BM25 ranking), regex mode (Go regexp syntax) or exact mode, with built-in BSL synonyms so a search for StrFind also turns up СтрНайти and the other way round; filterable by metadata type and module type
  • A fresh export picked up in place — reload_dump compares the dump directory by relative path, modification time and size of each .bsl file, rebuilds the index only when something changed, and keeps answering from the previous index until the new one is switched in
  • Read-only access to the data — execute_query runs a 1C query-language query with parameters and accepts SELECT/ВЫБРАТЬ only; validate_query checks a query's syntax without running it
  • A BSL reference that works offline — bsl_syntax_help covers 180 built-in functions, type methods and BSL patterns, with no external service and no running 1C
  • Operational reads — get_event_log reads the 1C event log filtered by date, level and user; analyze_subsystems reports objects that belong to no subsystem, the subsystems containing a given object, and objects that sit in several at once
  • Eleven tools in the open edition, MIT-licensed. Paid editions consolidate them into eight action-driven tools and add code analysis and generation on top — 1 990 ₽/month for Advanced, 4 990 ₽/month for Professional with a 14-day trial.

Requirements

  • 1C:Enterprise 8.3.10 or newer (commercial or educational), plus credentials for the database's HTTP service.
  • Installation is three moves on the 1C side. mcp-1c --install "<YOUR_INFOBASE_PATH>" finds the platform, loads the extension and updates the database configuration — add --server with --db-user and --db-password for a client-server base, and --platform (with --platform-version when the path carries no version number) when the platform lives somewhere non-standard. Then publish the HTTP service through Apache or IIS with "publish extension HTTP services by default" switched on. Then point the client at the published address.
  • If the service is authenticated, pass --user and --password, or set MCP_1C_USER and MCP_1C_PASSWORD, and pass both: --user on its own sends HTTP Basic with an empty password, and a base that has a password set answers 401.
  • The extension ships a role named MCP_ОсновнаяРоль and a user holding no configuration roles at all is refused — grant it through an access group profile where the configuration has the access-management subsystem, by direct assignment where it does not.
  • This build wants extension 0.4.7 or newer; with an older one the server still starts and logs Extension is OLDER than this build requires, and the tools that need later methods return errors.
  • search_code and reload_dump exist only when the server starts with --dump pointing at a DumpConfigToFiles export; the index builds in the background, so the server answers immediately and search reports that it is still building until it finishes — roughly 7 seconds for a 13 000+ module configuration, then 100-200 MB of disk cache makes later starts near-instant.
  • Two limits worth knowing before a large base: responses over --max-response-size (128 MiB by default) are rejected, and --request-timeout is 300 seconds. Redirects are followed only within the same scheme, host and port — if the web server sends http to https or to another port, put the final address in --base or you get 1C returned status 302 back as an error.
  • On macOS the 1C platform does not serve HTTP services: the binary and --install run there, but the service itself needs Windows or Linux. Manual installation of the prebuilt .cfe needs platform 8.3.14 or newer.

Setup effort

Follow the published steps