get_metadata_treeLABSCO 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_treefor the object tree (catalogues, documents, registers, defined types, common modules and more),get_object_structurefor one object's attributes, tabular sections, dimensions and resources,get_form_structurefor a form's elements, commands and event handlers,get_configuration_infofor the configuration name and version, the vendor, the platform version and the run mode - Full-text search over module code —
search_codeinsmartmode (BM25 ranking),regexmode (Go regexp syntax) orexactmode, with built-in BSL synonyms so a search forStrFindalso turns upСтрНайтиand the other way round; filterable by metadata type and module type - A fresh export picked up in place —
reload_dumpcompares the dump directory by relative path, modification time and size of each.bslfile, 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_queryruns a 1C query-language query with parameters and accepts SELECT/ВЫБРАТЬ only;validate_querychecks a query's syntax without running it - A BSL reference that works offline —
bsl_syntax_helpcovers 180 built-in functions, type methods and BSL patterns, with no external service and no running 1C - Operational reads —
get_event_logreads the 1C event log filtered by date, level and user;analyze_subsystemsreports 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--serverwith--db-userand--db-passwordfor a client-server base, and--platform(with--platform-versionwhen 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
--userand--password, or setMCP_1C_USERandMCP_1C_PASSWORD, and pass both:--useron 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_codeandreload_dumpexist only when the server starts with--dumppointing at aDumpConfigToFilesexport; 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-timeoutis 300 seconds. Redirects are followed only within the same scheme, host and port — if the web server sendshttptohttpsor to another port, put the final address in--baseor you get1C returned status 302back as an error. - On macOS the 1C platform does not serve HTTP services: the binary and
--installrun there, but the service itself needs Windows or Linux. Manual installation of the prebuilt.cfeneeds platform 8.3.14 or newer.
Setup effort
Follow the published steps
USE CASES
Writing BSL against a configuration the model has never seen
Read the object tree, then the attributes and tabular sections of the document you are working on, so the generated code uses names that exist in your base.
Finding every place a procedure is called
Search the module export by ranked text, by regular expression or by exact substring — Russian and English names of platform functions find each other. Re-read the export in place after a new dump.
Answering a data question without building a report
Check the query's syntax first, then run it with parameters against the live base. Only SELECT gets through.
Working out what a managed form actually does
List its elements, commands and event handlers, then jump to the handler code in the module export.
Looking into errors users hit this morning
Filter the event log by date, severity and user, then check the syntax of the platform function named in the message.
Tidying up subsystem membership before a handover
List the objects that belong to no subsystem, the subsystems a given object sits in, and the objects that appear in several at once.
11 tools
Listed in project docs. Your client may show a different list.
get_object_structureget_form_structureget_configuration_infosearch_codereload_dumpbsl_syntax_helpexecute_queryvalidate_queryget_event_loganalyze_subsystemsBEFORE YOU INSTALL
What to know first
Tools you get
11 tools named in the project's documentation. search_code and reload_dump register only with --dump pointing at a configuration export, so a bare run has 9 tools.
Requires
- MCP_1C_PASSWORD in your environment
- MCP_1C_USER in your environment
Where it runs
All 3 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
Build from source
Download mcp-1c for your OS (mcp-1c.exe on Windows) from https://github.com/feenlace/mcp-1c/releases — or build it from source with the three commands below
git clone https://github.com/feenlace/mcp-1c.git
cd mcp-1c
go build -o mcp-1c ./cmd/mcp-1c/Install the 1C extension into your infobase:
mcp-1c --install "<YOUR_INFOBASE_PATH>"For a base registered on a 1C server (MS SQL or PostgreSQL), give the server and base name, and the 1C user name and password for that base:
mcp-1c --install "<YOUR_1C_SERVER>\<YOUR_INFOBASE_NAME>" --server --db-user <YOUR_1C_USER> --db-password <YOUR_1C_PASSWORD>Publish the 1C HTTP service via Apache or IIS (Конфигуратор → Администрирование → Публикация на веб-сервере)
Add the mcpServers block to the AI client config with the binary path and --base pointing at the HTTP service URL
Restart the AI client (Claude Desktop: «+» → Connectors → Tool access → Always available)
claude mcp add
claude mcp add 1c --transport stdio -e MCP_1C_USER=<YOUR_MCP_1C_USER> -e MCP_1C_PASSWORD=<YOUR_MCP_1C_PASSWORD> -- <YOUR_PATH_TO_MCP_1C> --base http://localhost:8080/hs/mcp-1cMCP Clients
Any MCP client — The Configuration Is Identical For Every …
{
"mcpServers": {
"1c": {
"command": "<YOUR_PATH_TO_MCP_1C>",
"args": [
"--base",
"http://localhost:8080/hs/mcp-1c"
],
"env": {
"MCP_1C_USER": "<YOUR_MCP_1C_USER>",
"MCP_1C_PASSWORD": "<YOUR_MCP_1C_PASSWORD>"
}
}
}
}MCP_1C_USER and MCP_1C_PASSWORD are the login of the published 1C HTTP service; set both. --base is that service's URL; http://localhost:8080/hs/mcp-1c is its default.
Claude Desktop — Then Connectors Tool Access Always Available, Any MCP client — Windows
{
"mcpServers": {
"1c": {
"command": "<YOUR_PATH_TO_MCP_1C>",
"args": [
"--base",
"http://localhost:8080/hs/mcp-1c"
],
"env": {
"MCP_1C_USER": "<YOUR_MCP_1C_USER>",
"MCP_1C_PASSWORD": "<YOUR_MCP_1C_PASSWORD>"
}
}
}
}