Skip to main content

MCP proxy server for 1C HTTP services

Project description

Platform42 MCP Proxy for 1C

Python MCP-прокси между MCP-клиентами и HTTP-сервисом 1С. Репозиторий содержит только Python proxy-server, без 1С-расширения/конфигурации.

Основано на src/py_server проекта https://github.com/vladimir-kharin/1c_mcp.

Режимы выбора базы

1. Fixed-base: MCP_ONEC_URL задан

Если MCP_ONEC_URL задан, прокси работает только с этой публикацией 1С:

MCP_ONEC_URL=https://host/base
MCP_ONEC_USERNAME=Admin
MCP_ONEC_PASSWORD=secret
MCP_ONEC_SERVICE_ROOT=mcp

В этом режиме параметр _base_url запрещён. Если MCP-клиент передаст _base_url в tools/call, прокси вернёт ошибку.

2. Dynamic-base: MCP_ONEC_URL не задан

Если MCP_ONEC_URL не задан, прокси не привязан к конкретной базе. Тогда:

  • tools/list берётся из отдельного catalog source;
  • в schema каждого tool автоматически добавляется обязательный параметр _base_url;
  • каждый tools/call обязан передать _base_url;
  • _base_url используется только прокси и не передаётся в 1С;
  • логин/пароль для фактического вызова берутся из MCP_ONEC_USERNAME / MCP_ONEC_PASSWORD.

Пример вызова tool в dynamic-base:

{
  "_base_url": "https://host/base-or-data-area",
  "actualParameter": "value"
}

В 1С уйдёт только:

{
  "actualParameter": "value"
}

Catalog source для tools/list в dynamic-base

MCP tools/list не принимает arguments, поэтому адрес/логин/пароль для получения списка tools задаются в конфигурации прокси.

Источник onec

Список tools берётся из обычной базы 1С:

MCP_TOOLS_CATALOG_SOURCE=onec
MCP_TOOLS_CATALOG_URL=https://host/catalog-base
MCP_TOOLS_CATALOG_USERNAME=Admin
MCP_TOOLS_CATALOG_PASSWORD=secret
MCP_TOOLS_CATALOG_SERVICE_ROOT=mcp

MCP_ONEC_USERNAME=Admin
MCP_ONEC_PASSWORD=secret
MCP_ONEC_SERVICE_ROOT=mcp

Если MCP_TOOLS_CATALOG_USERNAME/PASSWORD не заданы, используются MCP_ONEC_USERNAME/PASSWORD.

Источник file

MCP_TOOLS_CATALOG_SOURCE=file
MCP_TOOLS_CATALOG_PATH=/opt/mcp-proxy/tools.json

MCP_ONEC_USERNAME=Admin
MCP_ONEC_PASSWORD=secret

Формат файла:

{
  "tools": [
    {
      "name": "example_tool",
      "description": "Example tool",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {"type": "string"}
        },
        "required": ["name"]
      }
    }
  ]
}

Также поддерживается raw array tools.

Источник http

MCP_TOOLS_CATALOG_SOURCE=http
MCP_TOOLS_CATALOG_URL=https://example.com/tools.json
MCP_TOOLS_CATALOG_USERNAME=optional-basic-auth-user
MCP_TOOLS_CATALOG_PASSWORD=optional-basic-auth-password

MCP_ONEC_USERNAME=Admin
MCP_ONEC_PASSWORD=secret

Безопасность _base_url

В dynamic-base режиме _base_url может превратить прокси в SSRF-примитив с Basic Auth кредами. Для production рекомендуется задавать allowlist:

MCP_ONEC_ALLOWED_BASE_URLS=https://host/base1,https://host/base2

или JSON array:

MCP_ONEC_ALLOWED_BASE_URLS=["https://host/base1", "https://host/base2"]

Если allowlist задан, _base_url обязан точно совпадать с одним из разрешённых URL после удаления trailing slash.

Запуск

Stdio

python -m src.py_server stdio
# или после установки пакета
mcp-proxy-1c stdio

HTTP

python -m src.py_server http --port 8000
# или
mcp-proxy-1c http --port 8000

Endpoints HTTP-режима:

  • /mcp/ — Streamable HTTP MCP transport;
  • /sse — SSE transport;
  • /health — health check;
  • /info — server info.

Сборка пакета

python -m pip install -U build twine
python -m build
python -m twine check dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

platform42_mcp_proxy-0.1.0.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

platform42_mcp_proxy-0.1.0-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file platform42_mcp_proxy-0.1.0.tar.gz.

File metadata

  • Download URL: platform42_mcp_proxy-0.1.0.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for platform42_mcp_proxy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5bd02ec684abee9411c6715fa14007cb0be8a9a597ba65d388e3a45112da94f1
MD5 927e8f5a4929f901f2e8697aab846f7b
BLAKE2b-256 f4c51b65f562685dbd5660c2afad0c236c67cf6c4a209784189f032ccdb10bc7

See more details on using hashes here.

File details

Details for the file platform42_mcp_proxy-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for platform42_mcp_proxy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e61eb9c63f7aa2e5f3f6fea3eb2f4e53f0699bd3b45020a178cdb3fc724124e
MD5 916cacc7c539c66a183ed2679202488c
BLAKE2b-256 47545d1da23cea07a9b7fe68382f864d5c3abef663325cd02c133248ec7be116

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page