1C-Bitrix MCP服务器

为1C-Bitrix网站开发提供AI代理支持的MCP服务器,实现PHP/Shell/SQL代码执行、文档检索及开发环境管理。

  • by DeLighter1990
  • PHP
  • 本地部署
  • 23 星标
  • 更新于
在 GitHub 查看 DeLighter1990/delight.mcp

使用说明

🚀 1C位MCP服务器:站点管理

链接到Marketplace模块:https://marketplace.1c-bitrix.ru/solutions/delight.mcp/

演示模块:https://rutube.ru/video/06d0f3f63a2f588ed5f0695aa674b468/

该模块旨在通过使用AI代理来提高Bitrix项目的开发质量。

该模块根据官方规范实现MCP服务器 模型上下文协议它是一组终端点,用于将开发环境的AI代理直接与站点和服务器通信。

⚙️ MCP服务器功能

资源:

  • 添加文档 Bitrix框架 (她https://docs.1c-bitrix.ru/)到代理可以直接访问的MCP服务器资源

工具:

  • 环境信息:
    • 系统信息:
      • 操作系统名称;
      • 主机名;
      • 当前用户的名称;
      • 磁盘大小(以字节为单位);
      • 可用磁盘空间(以字节为单位);
    • Bitrix信息:
      • 编辑;
      • 主模块版本;
      • 安装的模块;
    • 关于PHP的信息:
      • PHP版本;
      • 连接的扩展;
      • 限制可用RAM容量;
      • PHP脚本的最大运行时间;
    • 数据库信息:
      • 数据库类型;
      • 数据库服务器版本;
      • 连接主机;
      • 数据库名称;
  • 现场API:
    • 模块中可用功能列表;
    • 模块中可用事件列表;
    • 在索引数据库模块中搜索函数;
    • 模块函数代码及其描述phpdoc;
    • 通过反射机制在整个代码中搜索功能;
  • 在服务器上执行PHP代码;
  • 在服务器上执行shell命令;
  • 在服务器上执行SQL查询;
  • 搜索Bitrix Framework文档(需要额外的Embeddings生成服务):
    • 在索引之前规范Bitrix Framework文档的Markdown文件。
    • 以Embeddings格式索引Markdown Bitrix Framework文档文件,以便按意义而不是按输入进行搜索;
    • 根据人工智能代理的请求,对Bitrix Framework文档进行向量搜索。

🔔 模块中可用的事件

≫事件名称≫何时调用≫参数≫ |-----------------------------|:--------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | OnForgeExec 在执行shell命令之前 ['command' => (string) $command]
团队执行。 | OnAfterExec shell命令执行后 ['output' => (array) $output]
带有执行命令行输出的数组› | OnBeforeval 在执行PHP代码之前 ['code' => (string) $code]
代码执行。 | 事后评估 完成PHP代码后 ['output' => (string) $output]
执行代码的屏幕输出›
| OnForgeSQL 在执行SQL代码之前 ['query' => (string) $query]
SQL执行请求›
| OnAfterSQL SQL代码执行后 [
    'columns' => (array) $columns,
    'rows' => (array) $rows,
    'rowCount' => (int) count($rows),
    'query' => (string) $query
];
SQL查询结果数组› | 未生成嵌入 –在将数据发送到Embadding生成服务之前。 [
    'url' => (string) self::GENERATE_EMBEDDINGS_ENDPOINT,
    'data' => Json::encode(['text' => $text]),
    'headers' => [
        'Content-Type' => 'application/json',
    ],
    'timeout' => $this->timeout,
    'waitResponse' => true
]
查询数据数组› | OnAfterGenerate嵌入 从Embadding Generation服务获得数据后 ['response' => (bool\|string) $response]
通过bitrixmainwebhttpclient的post查询结果›

🛡️ 安全

人工智能代理对模块的访问是通过JWT令牌实现的,它可以指定令牌的寿命和对单个终端点的权限。您可以从模块设置页中删除令牌ID,以阻止对以前发布的令牌的访问。

您可以将对模块设置的访问限制在某些用户组中。

可对外部模块API的请求/响应进行日志管理。

该模块具有潜在的危险功能 eval 和 exec防病毒软件可能会将其视为恶意代码。 这些功能允许AI代理在具有令牌权限的情况下在服务器上执行任意代码。 为了避免防病毒误报,建议将模块添加到例外情况中。模块代码是开放的,您可以独立验证这些功能的使用是否安全。

建议只在测试平台上使用具有PHP/Shell/SQL执行权限的代币!请记住,AI代理错误,可能会删除或破坏您的数据。

🔌 MCP服务器连接示例

Cursor

文件 mcp.json:

{
  "mcpServers": {
    "bitrix": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://{ВАШ_ДОМЕН}/bitrix/services/main/ajax.php?action=delight:mcp.Rpc.handler",
        "--header",
        "Authorization: Bearer {ВАШ_ТОКЕН}"
      ]
    }
  }
}
JetBrains IDE (AI Assistant)

项目文件 /.ai/mcp/mcp.json:

{
  "mcpServers": {
    "bitrix": {
      "command": "npx.cmd",
      "args": [
        "mcp-remote",
        "https://{ВАШ_ДОМЕН}/bitrix/services/main/ajax.php?action=delight:mcp.Rpc.handler",
        "--header",
        "Authorization: Bearer {ВАШ_ТОКЕН}"
      ]
    }
  }
}
Codex

文件 /.codex/config.toml:

[mcp_servers.bitrix]
enabled = true
url = "https://{ВАШ_ДОМЕН}/bitrix/services/main/ajax.php?action=delight:mcp.Rpc.handler"

[mcp_servers.bitrix.http_headers]
Authorization = "Bearer {ВАШ_ТОКЕН}"

命令指示功能 npx

字段值 command 可能取决于操作系统和环境。实例:

"command": "npx"
"command": "npx.cmd"
"command": "C:\\Program Files\\nodejs\\npx.cmd"

如果出现启动错误,请指定完整的路径 npx.

授权功能

在某些系统中,标准标题 Authorization 在后端无法读取,在这种情况下,可以使用标题 X-Authorization.

🧠 Embeddings服务连接

T.附录Bitrix Framework文档将自动添加到MCP服务器资源中,并可根据请求提供给AI代理,因此不迫切需要配置文档搜索,这只能节省上下文。

Bitrix Framework文档搜索服务需要与Embeddings生成服务交互,而Embeddings生成服务不是按内容而是按意义进行搜索。 主要的方法是在自己的服务器上升级Python微服务(Sentence Transformers),微服务代码也在模块中提供,但您可以使用其他选项(OpenAI、Olama等)-您需要根据事件使用它们。 OnBeforeGenerateEmbedding 覆盖Embeddings生成请求参数和其他事件 OnAfterGenerateEmbedding 将响应发送到JSON视图字符串

"[-0.22979317605495453,-0.1455831080675125,-0.2588725686073303,0.0562337264418602,...]"

安装和配置Embeddings微服务

此服务应在后台运行,并在服务器重新启动后自动启动。

下面的说明是为了 BitrixEnv 9+ 假设所有命令都是通过SSH从 根用户。所有的方法都需要更新到你的环境中。

Шаг 1: Установка Python и зависимостей

这些命令将安装Python,为服务创建一个独立的环境,并将所有必要的库加载到其中。

# Устанавливаем Python 3 и менеджер пакетов pip
sudo yum install -y python3 python3-pip

# Задаем путь к модулю
MODULE_PATH="/home/bitrix/www/bitrix/modules/delight.mcp"

# Переходим в директорию, где будет работать сервис
cd $MODULE_PATH/python

# Создаем виртуальное окружение в папке 'venv'
python3 -m venv venv

# Активируем окружение, обновляем pip и устанавливаем библиотеки
source venv/bin/activate
python3 -m pip install --upgrade pip
pip install fastapi uvicorn "sentence-transformers[txt]"
deactivate

# Меняем владельца всех файлов на bitrix, чтобы у сервиса были права доступа
sudo chown -R bitrix:bitrix $MODULE_PATH/python
Шаг 2: Создание фоновой службы (systemd)

以下命令将创建、配置和运行后台进程。

# Задаем имя файла службы
SERVICE_FILE="/etc/systemd/system/delight.embeddings.service"

# Задаем путь к модулю
MODULE_PATH="/home/bitrix/www/bitrix/modules/delight.mcp"

# Создаем unit-файл для systemd с помощью команды tee
# Это позволяет запускать сервис от пользователя bitrix и автоматически перезапускать его
sudo tee $SERVICE_FILE > /dev/null <<EOF
[Unit]
Description=Delight Embeddings Generation Service
After=network.target

[Service]
User=bitrix
Group=bitrix
WorkingDirectory=$MODULE_PATH/python
ExecStart=$MODULE_PATH/python/venv/bin/python -m uvicorn embeddings-service:app --host 0.0.0.0 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# Открываем порт 8000 в брандмауэре
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

# Перечитываем конфигурацию systemd, включаем автозапуск и стартуем сервис
sudo systemctl daemon-reload
sudo systemctl enable delight.embeddings.service
sudo systemctl start delight.embeddings.service
Шаг 3: Проверка статуса

要确保服务成功运行,请执行以下操作:

sudo systemctl status delight.embeddings.service

您必须查看状态 active (running)如果出现错误,可以由团队查看 sudo journalctl -u delight.embeddings.service.

💡 其他1C Bitrix开发人员解决方案:

👨‍💻 作者

德米特里·克罗托夫



模块有用吗?你可以离开。 评论 感谢开发者: https://yoomoney.ru/to/41001510540341