1C OData MCP server
1C OData MCP Server
A small Python MCP server that wraps standard 1C Управление предприятием OData read operations into three tools
Low risk
We rate an entry low when it mostly gives the agent instructions and reference material.
Why this level
- The server only performs GET requests against OData, there is no data write path
- The password can end up in tool call arguments if environment variables are not used
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/1c-odata-mcp-serverDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
Assembled automatically, review before installing.
Run in a terminal
claude mcp add --transport stdio --env 'ODATA_HOST=<ODATA_HOST value>' --env 'ODATA_USER=<ODATA_USER value>' --env 'ODATA_PASS=<your ODATA_PASS>' 1c-odata -- uvx run python server.pyOr add to the file .mcp.json, in the project
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Add to the file ~/.cursor/mcp.json, for all projects
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Run in a terminal
code --add-mcp '{"name":"1c-odata","type":"stdio","command":"uvx","args":["run","python","server.py"],"env":{"ODATA_HOST":"<ODATA_HOST value>","ODATA_USER":"<ODATA_USER value>","ODATA_PASS":"<your ODATA_PASS>"}}'Or add to the file .vscode/mcp.json, in the project
{
"servers": {
"1c-odata": {
"type": "stdio",
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the servers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Run in a terminal
codex mcp add 1c-odata --env 'ODATA_HOST=<ODATA_HOST value>' --env 'ODATA_USER=<ODATA_USER value>' --env 'ODATA_PASS=<your ODATA_PASS>' -- uvx run python server.pyOr add to the file ~/.codex/config.toml, for all projects
[mcp_servers.1c-odata]
command = "uvx"
args = ["run", "python", "server.py"]
env = { ODATA_HOST = "<ODATA_HOST value>", ODATA_USER = "<ODATA_USER value>", ODATA_PASS = "<your ODATA_PASS>" }If the file already exists, append the block to the end.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Run in a terminal
gemini mcp add -s user -e 'ODATA_HOST=<ODATA_HOST value>' -e 'ODATA_USER=<ODATA_USER value>' -e 'ODATA_PASS=<your ODATA_PASS>' 1c-odata uvx run python server.pyOr add to the file ~/.gemini/settings.json, for all projects
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/devin/mcp_config.json, for all projects
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Formerly Windsurf.
Add to the file cline_mcp_settings.json, for all projects
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .roo/mcp.json, in the project
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
A fork of Roo Code, same .roo folders.
Add to the file opencode.json, in the project
{
"mcp": {
"1c-odata": {
"type": "local",
"command": [
"uvx",
"run",
"python",
"server.py"
],
"environment": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcp key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/zed/settings.json, for all projects
{
"context_servers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the context_servers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .codeassistant/mcp.json, in the project
{
"mcpServers": {
"1c-odata": {
"command": "uvx",
"args": [
"run",
"python",
"server.py"
],
"env": {
"ODATA_HOST": "<ODATA_HOST value>",
"ODATA_USER": "<ODATA_USER value>",
"ODATA_PASS": "<your ODATA_PASS>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
ODATA_HOSTrequired- OData service host
ODATA_USERrequired- OData service user
ODATA_PASSsecret, required- OData service password
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Install uv, clone the repository and run uv --directory {PATH_TO_FOLDER} run python server.py, setting the ODATA_HOST, ODATA_USER and ODATA_PASS environment variables, then merge the mcpServers.1c-odata section from claude-desktop.example.json into your Claude Desktop config.
Other ways from the author
uv --directory {PATH_TO_FOLDER} run python server.pyLocal server run after cloning the repository, from the README.
This is third-party code. Review the repository files before installing.
What it does
The server gives an agent three tools for the standard 1C OData interface: probe_odata checks connectivity and credentials, get_odata performs a GET request against a specific OData resource, and list_entity_sets returns the list of available entities from the service document. Credentials are set through the ODATA_HOST, ODATA_USER and ODATA_PASS environment variables or passed directly in the tool call arguments.
Who it is for. For those who already have the standard OData interface enabled in 1C and need a minimal MCP bridge for agent read access.
Good fit when
- OData is already published in the 1C base and you need a simple way to read it from an agent
- You need to quickly check which entities a specific base exposes through OData
- Read-only access is enough, with no writes or business logic layered on top of requests
Not a fit when
- You need to write data into 1C: the server only performs GET requests
- OData is not enabled in the base or not reachable by the agent over the network
Example request
Check the OData connection to the base and list the available entitiesLimitations
No license is specified, and the README has no instructions for publishing to a registry or running without cloning the repository. The server only reads data (GET), there is no write or change logic. The ODATA_PASS password can be set via an environment variable or a tool argument, and in the latter case it ends up in the call context.
How to disable. Remove the mcpServers.1c-odata section from your MCP client configuration.
MCP
- Transport
- stdio
- Authentication
- API key
| Environment variables | |
|---|---|
| ODATA_HOST required | The published OData address of the 1C base. |
| ODATA_USER required | The user for connecting to OData. |
| ODATA_PASS required, secret | The OData user's password. |
Security check
- The server only performs GET requests against OData, there is no data write path
- The password can end up in tool call arguments if environment variables are not used
README in short
The README is short: it describes the three tools, the requirements (Python 3.11+ and uv), the local run command via uv run, the ODATA_HOST, ODATA_USER and ODATA_PASS environment variables, and installation into Claude Desktop via the ready claude-desktop.example.json file.
FAQ
Can login and password be passed directly in a tool call?
Yes, the README allows passing values in tool arguments instead of environment variables.
Can the server write data into 1C?
No, all three tools only read through GET requests against OData.
Related
A skills library that gives coding agents a development process: brainstorming, planning, TDD, subagents and code review
Skills for real engineers by Matt Pocock
Skills For Real Engineers
Small composable skills for engineering with agents: plan grilling, TDD, bug diagnosis, code review and architecture
GitHub toolkit for spec-driven development: the specify CLI adds agent commands and skills to a project, from principles to implementation
Reference MCP servers
Model Context Protocol servers
Official reference MCP servers: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time and Everything