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.
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.
- 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.
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 "path\to\base"` 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.
One command plus a key — claude mcp add 1c --transport stdio -- /путь/к/mcp-1c --base http://localhost:8080/hs/mcp-1c, then supply credentials
