@theyahia/1c-rest-mcp
OfficialThis server acts as an MCP gateway for 1C:Enterprise via its OData 3.0 REST API, enabling AI agents to discover, query, and manipulate business data. Key capabilities include:
Discover Structure: List all OData entities (catalogs, documents, registers, reports), fetch raw metadata, and describe specific entity fields.
Manage Catalogs: Read, create, and update catalog items with OData filtering, sorting, selection, and pagination.
Handle Documents: Read, create, update, post, unpost, and delete documents; locate by number or GUID; retrieve tabular sections.
Work with Registers: Read information/accumulation registers, write information register records, get accumulation balances, and read accounting register records.
Manage Constants: Get and set 1C constant values.
Shortcut Operations: Fuzzy-search by description, fetch by GUID (
Ref_Key), count entity records, set/clear deletion marks, retrieve recent documents.Generate Reports: Fetch 1C reports from configured HTTP service URLs.
Run Arbitrary OData Queries: Full support for
$filter,$select,$expand,$orderby,$top,$skip, and$inlinecounton any entity.Batch Operations: Batch-create documents, batch-update catalog items, and run multiple OData GET queries concurrently with bounded concurrency.
Track Changes: Poll for modified rows since a given timestamp using date field filters (no webhooks).
Guided Workflows (Prompts): Built-in multi-tool workflows —
inventory-database(database mapping),find-and-post-document(document management), andreconcile-balances(register comparison).Flexible & Secure Deployment: Runs via stdio or HTTP (with session management, CORS, graceful shutdown); supports HTTP Basic authentication and output sanitization.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@theyahia/1c-rest-mcpGet the document with number 'INV-001' and type 'Invoice'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@theyahia/1c-rest-mcp
MCP server for 1C:Enterprise REST API via OData 3.0 — catalogs, documents, registers, accounting, constants, reports, batch ops & change-tracking + metadata discovery. 32 tools across 11 modules. HTTP Basic auth. Stdio + Streamable HTTP transports.
Migrating from v1.x
If you starred or used v1.x, the v2.0.0 release introduces a few breaking changes:
HTTP transport env var renamed:
PORT=3000→HTTP_PORT=3000.Removed separate HTTP binary:
1c-rest-mcp-httpis gone. Use1c-rest-mcp --httporHTTP_PORT=3000 1c-rest-mcpinstead.Single
binentrypoint:dist/http.jsis no longer published.Internal client: now extends
@theyahia/mcp-core'sBaseHttpClientwithBasicAuthStrategy. The exported functional API (oneCGet/oneCPost/oneCPatch/buildODataPath) is unchanged, so tool code keeps working.Tool errors: now returned as MCP-spec
CallToolResultwithisError: true(viawithErrorHandlingfrom@theyahia/mcp-core). Compatible with all MCP clients.
Tool names, arguments, return formats, and the ONEC_* env vars are unchanged.
Tools (32)
Tools are grouped into modules. All are registered by default; the
ONEC_SERVICESenv var filters which optional modules load (discoverymetais always on). See Environment Variables.
Discovery — meta (always enabled)
Tool | Description |
| List all available 1C OData entities (catalogs / documents / registers / reports). Use this first when working with an unfamiliar database. |
| Locate a 1C document by its number (e.g. invoice ТД-00123 dated 2026-03-01). Convenience wrapper over |
| Return the raw OData |
| List an entity's fields by inspecting one sample record ( |
Catalogs — catalogs
Tool | Description |
| Read 1C catalog data. Supports |
| Create a new catalog item via OData POST (e.g. add a Контрагент or Номенклатура). |
| Update a catalog item via OData PATCH (by |
Documents — documents
Tool | Description |
| Read 1C documents with full OData filtering. |
| Create a new document via OData POST. |
| Update an existing document via OData PATCH (by |
| Post (провести) a document via the OData bound action |
| Unpost (отменить проведение) a document via |
| Physically delete a document via OData DELETE. Prefer |
| Read a document's tabular section (строки, e.g. Товары) by |
Registers — registers
Tool | Description |
| Read information or accumulation register data. |
| Write a record into an independent information register (POST on |
| Accumulation-register balances (остатки) via the OData virtual method |
Accounting — accounting
Tool | Description |
| Read accounting-register records ( |
Constants — constants
Tool | Description |
| Read a 1C constant value ( |
| Write a 1C constant value via OData PATCH ( |
Shortcuts — shortcuts
Tool | Description |
| Fuzzy-find items by a substring of |
| Fetch a single record by its |
| Count records of an entity ( |
| Set/clear the |
| Most recent documents of a type, ordered by |
Reports — reports
Tool | Description |
| Get a 1C report from a relative HTTP service URL ( |
Generic OData — odata
Tool | Description |
| Run an arbitrary OData 3.0 query. Supports |
Batch — batch
1C has no native OData
$batchendpoint. These tools dispatch N requests in parallel (bounded concurrency) and report per-item success/failure — a partial failure never aborts the batch.
Tool | Description |
| Create N documents (1..100) of one type in parallel. |
| PATCH N catalog items by |
| Run N OData GET queries (1..50) in parallel; combine results client-side. |
Change tracking — changes
1C has no webhooks / event subscriptions — only polling.
Tool | Description |
| Pull rows modified since a timestamp cursor ( |
| Explicit no-op documenting the absence of 1C webhooks; redirects to |
Note on write/posting tools.
post_document/unpost_document/delete_document,get_accumulation_balance(virtualBalance) andwrite_information_registerfollow the 1C:Enterprise OData 3.0 spec. URL/parameter shapes should be validated against your specific 1C configuration's$metadata(useget_metadata) before relying on them in production.
Related MCP server: INFATON MCP35
Prompts
The server ships three MCP prompts — guided multi-tool workflows your client can invoke directly (they travel with the npm package, no separate skill install):
Prompt | Arguments | What it does |
| — |
|
|
| Finds a document, shows its fields + lines, then posts it only after explicit human confirmation. |
|
| Compares |
Quick Start
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"1c": {
"command": "npx",
"args": ["-y", "@theyahia/1c-rest-mcp"],
"env": {
"ONEC_BASE_URL": "http://server:8080/base",
"ONEC_LOGIN": "your_login",
"ONEC_PASSWORD": "your_password"
}
}
}
}Cursor / Windsurf
Same configuration block under mcpServers in the IDE's MCP settings.
VS Code (Copilot)
Add to .vscode/mcp.json:
{
"servers": {
"1c": {
"command": "npx",
"args": ["-y", "@theyahia/1c-rest-mcp"],
"env": {
"ONEC_BASE_URL": "http://server:8080/base",
"ONEC_LOGIN": "your_login",
"ONEC_PASSWORD": "your_password"
}
}
}
}Streamable HTTP transport
For remote/multi-tenant deployments, run as an HTTP server:
HTTP_PORT=3000 \
ONEC_BASE_URL=http://server:8080/base \
ONEC_LOGIN=admin \
ONEC_PASSWORD=secret \
npx @theyahia/1c-rest-mcp
# or: npx @theyahia/1c-rest-mcp --httpEndpoints:
POST /mcp— MCP requestsGET /mcp— SSE event stream (per session)DELETE /mcp— session terminationGET /health—{ status: "ok", version, tools, uptime, memory_mb }
Includes session management (mcp-session-id header), CORS, graceful shutdown.
Environment Variables
Variable | Required | Description |
| yes | Base URL of the 1C HTTP server (e.g. |
| yes | Login for HTTP Basic auth. |
| yes | Password for HTTP Basic auth. |
| no | Comma-separated module list (default: |
| no | If set, server runs in HTTP mode on this port. |
Backward-compat: 1C_BASE_URL, 1C_LOGIN, 1C_PASSWORD are also accepted as fallback.
Module filtering (ONEC_SERVICES)
Limit registered tools to save LLM context. Modules: catalogs, documents, registers, accounting, constants, shortcuts, reports, odata, batch, changes (plus always-on meta).
ONEC_SERVICES=catalogs,documents npx @theyahia/1c-rest-mcpThe discovery module meta (list_entities, get_document_by_number, get_metadata, describe_entity) is always registered — without it an agent cannot discover the database structure.
Safety: set MCP_DISABLE_SANITIZE=true only if you trust the data source — by default tool output is scanned for prompt-injection patterns. The HTTP client refuses absolute URLs whose origin differs from ONEC_BASE_URL. Ref_Key arguments are validated as GUIDs and string values in get_document_by_number are OData-escaped; the raw $filter/$select/$orderby passthroughs are intentional, so scope what the server can read or write via the 1C user's role, not via these arguments.
Authentication
1C:Enterprise REST API uses HTTP Basic auth. Get credentials from your 1C administrator:
Enable HTTP services and OData publication in the 1C Designer.
Create a 1C user with the role required to read/write the entities you need.
Use that user's login/password as
ONEC_LOGIN/ONEC_PASSWORD.The
ONEC_BASE_URLis the URL of the published infobase (the same URL you use for the 1C web client, without/odata/...suffix).
The OData endpoint will be ${ONEC_BASE_URL}/odata/standard.odata/.
Demo Prompts
Try these natural-language prompts in your MCP client:
"List all document types in the 1C database that contain 'Реализация' in the name."
"Find invoice ТД-00123 dated 2026-03-01 — show its lines and total amount."
"Get the last 50 sales documents from the past week, ordered by date descending."
"Read the 'Цены номенклатуры' information register for product UUID
abc-123."
"Create a new RealizationOfGoodsAndServices document for counterparty 'ООО Ромашка' with two product lines."
"Run an OData query:
Catalog_НоменклатураwhereDescriptioncontains 'кофе', expandПроизводитель, top 20."
"Get the balance report from
/hs/reports/balance?date=2026-04-01and summarize it."
Development
npm install
npm run build
npm test
npm run dev # tsx watch modeProject layout:
.
├── src/
│ ├── index.ts — entry point (runServer; version + docstring)
│ ├── server.ts — server factory, module config, tool registration
│ ├── client.ts — functional API + buildKeyedPath + escapeODataString + GUID guard
│ ├── validation.ts — shared zod field schemas (refKeySchema, odataDate, odataDateTime)
│ ├── types.ts — OData TypeScript types
│ ├── lib/
│ │ └── errors.ts — parse Russian 1C errors → category + recovery hint
│ └── tools/
│ ├── catalogs.ts ├── documents.ts ├── registers.ts
│ ├── accounting.ts ├── constants.ts ├── shortcuts.ts
│ ├── metadata.ts — discovery (list_entities, get_document_by_number, get_metadata, describe_entity)
│ ├── batch.ts ├── change-tracking.ts
│ ├── odata-query.ts └── reports.ts
└── tests/
├── client.test.ts ├── server.test.ts ├── tools.test.ts
├── batch.test.ts ├── change-tracking.test.ts └── error-parsing.test.tsLicense
MIT — see LICENSE.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/theYahia/1c-rest-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server