OpenShock MCP Server | OpenShock MCP 服务器
______________________________________________________________________
英语
用于控制OpenShock设备的模型上下文协议(MCP)服务器,使用官方Python MCP SDK构建。具有自动冲击强度限制和基于HTTP的安全通信功能。
特性
- 官方MCP SDK:使用官方
mcpAnthropic的Python包 - 完整的MCP协议:通过适当的工具定义全面实施MCP标准
- 可用工具:
- SHOCK:发送具有自动强度限制的电击命令 - VIBRATE:发送振动命令 - BEEP:发送声音/蜂鸣声命令 - STOP:停止所有命令
- 安全功能:通过以下方式自动限制冲击强度
SHOCK_LIMIT环境变量 - HTTP传输:使用JSON-RPC 2.0的现代基于HTTP的MCP服务器
- 连接池:高效的HTTP客户端连接管理
- Docker支持:使用Docker和Docker compose轻松部署
建筑
此服务器使用:
- 快速API 用于HTTP传输层和MCP JSON-RPC 2.0端点
- HTTPX 用于具有连接池的异步HTTP客户端
- OpenShock API v2 用于设备控制
安装
先决条件
- Docker和Docker组合(推荐)
- 或者使用pip的Python 3.11+
- 有效的OpenShock API令牌
配置
- 克隆存储库:
git clone
cd openshock-mcp-server- 复制
.env.example到.env:
cp .env.example .env- 编辑
.env使用您的配置文件:
OPENSHOCK_API_TOKEN=your_openshock_token_here
MCP_AUTH_TOKEN=your_secure_mcp_token_here
SHOCK_LIMIT=50 # Optional: limit shock intensity (0 = no limit)从Docker Compose开始(推荐)
docker-compose up -d服务器将可在以下位置访问 http://localhost:8000
从Docker开始
docker build -t openshock-mcp-server .
docker run -p 8000:8000 \
-e OPENSHOCK_API_TOKEN=your_token \
-e MCP_AUTH_TOKEN=your_mcp_token \
-e SHOCK_LIMIT=50 \
openshock-mcp-server本地开发
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export OPENSHOCK_API_TOKEN=your_token
export MCP_AUTH_TOKEN=your_mcp_token
export SHOCK_LIMIT=50
# Run the server
python app.py用法
MCP客户端连接
将您的MCP客户端连接到 http://localhost:8000/mcp 使用JSON-RPC 2.0格式的HTTP POST请求。
需要身份验证: 所有请求都必须在 Authorization 头球这 Bearer 前缀对于MCP客户端兼容性是可选的:
Authorization: Bearer your_mcp_auth_token或
Authorization: your_mcp_auth_token这 /health 端点无需身份验证即可公开访问。
可用的MCP工具
1.休克
发送具有自动强度限制的电击命令。
参数:
shockers(列表):震撼配置列表
- id (字符串):电击器ID - intensity (整数):冲击强度1-100(由Shock_LIMIT自动限制) - duration (整数):持续时间(毫秒)(300-30000)
例子:
{
"name": "SHOCK",
"arguments": {
"shockers": [
{
"id": "your_shocker_id",
"intensity": 80,
"duration": 1000
}
]
}
}如果 SHOCK_LIMIT=50,强度将自动降低到50。
2.振动
发送振动命令(不受SHOCK_LIMIT的影响)。
参数:
shockers(列表):震撼配置列表
- id (字符串):电击器ID - intensity (整数):振动强度1-100 - duration (整数):持续时间(毫秒)(300-30000)
例子:
{
"name": "VIBRATE",
"arguments": {
"shockers": [
{
"id": "your_shocker_id",
"intensity": 30,
"duration": 2000
}
]
}
}3.嘟嘟声
发送蜂鸣/声音命令。
参数:
shockers(列表):震撼配置列表
- id (字符串):电击器ID - intensity (整数):蜂鸣音量强度1-100(默认为50) - duration (整数):持续时间(毫秒)(300-30000)
例子:
{
"name": "BEEP",
"arguments": {
"shockers": [
{
"id": "your_shocker_id",
"intensity": 50,
"duration": 500
}
]
}
}4.停止
停止指定电击器上的所有命令。
参数:
shockers(列表):要阻止的震惊事件列表
- id (字符串):电击器ID
例子:
{
"name": "STOP",
"arguments": {
"shockers": [
{
"id": "your_shocker_id"
}
]
}
}安全功能
冲击极限
这 SHOCK_LIMIT 环境变量为冲击指令提供自动安全限制:
SHOCK_LIMIT=0:无限制(默认行为)SHOCK_LIMIT=50:自动将冲击强度限制在最大50SHOCK_LIMIT=25:自动将冲击强度限制在最大25
行为:
- 命令强度高于
SHOCK_LIMIT是 未被拒绝 - 强度为 自动减少 达到配置的限制
- 回复包括有关调整的详细信息
- 记录所有调整以进行安全审计
备注:只有 SHOCK 命令受以下因素影响 SHOCK_LIMIT. VIBRATE 和 BEEP 命令不受限制。
环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
OPENSHOCK_API_TOKEN | OpenShock API令牌 | ✅ 是 | - |
MCP_AUTH_TOKEN | MCP身份验证令牌(在授权标头中发送,承载前缀可选) | ✅ 是 | - |
SHOCK_LIMIT | 最大冲击强度(0=无限制) | ❌ 否 | 0 |
OPENSHOCK_API_URL | OpenShock API网址 | ❌ 否 | https://api.openshock.app |
MCP_SERVER_NAME | MCP服务器名称 | ❌ 否 | openshock mcp服务器 |
MCP_VERSION | 服务器版本 | ❌ 否 | 2.1.0 |
PORT | 监听端口 | ❌ 否 | 8000 |
健康检查
服务器在以下位置提供健康检查端点 /health:
curl http://localhost:8000/health答复:
{
"status": "healthy"
}安全最佳实践
- ⚠️ 令牌安全:两者都保留
OPENSHOCK_API_TOKEN和MCP_AUTH_TOKEN安全,从不将其提交给版本控制 - 🔑 强代币:使用强随机生成的令牌
MCP_AUTH_TOKEN(例如UUID或32+个字符的随机字符串) - 🔒 HTTPS在生产中:在生产环境中始终使用HTTPS/TLS
- 🎯 配置SHOCK_LIMIT:设置适当的
SHOCK_LIMIT根据您的安全要求 - 🔐 网络安全:使用防火墙限制对服务器的网络访问
- 📊 审计日志:记录所有强度调整和身份验证失败,以进行安全审计
故障排除
服务器无法启动
- 验证
OPENSHOCK_API_TOKEN设置正确 - 检查日志
docker-compose logs -f(Docker)或控制台输出(本地)
命令不起作用
- 验证震惊者ID是否正确
- 检查OpenShock API令牌是否具有适当的权限
- 查看日志中的错误消息
连接问题
- 确保服务器在配置的端口上可访问
- 检查防火墙规则
- 验证MCP客户端是否已配置为使用JSON-RPC 2.0进行HTTP传输
发展
此服务器是使用以下方式构建的:
- 模型上下文协议 -MCP规范
- MCP Python SDK -官方Python实现
- OpenShock API -OpenShock设备控制API
要贡献或报告问题,请使用GitHub存储库。
版本历史
v2.1.0 (当前)
- 架构更改:从SSE(服务器发送事件)切换到纯HTTP JSON-RPC 2.0
- 通过直接JSON响应简化响应处理
- 改进了与标准JSON-RPC客户端的兼容性
- 更新文档以反映仅HTTP传输
v2.0.1
- 安全修复:重新实现身份验证(v2.0.0存在严重漏洞)
- 使用中间件进行承载令牌身份验证
- 除以下端点外,所有端点都需要身份验证
/health
v2.0.0版本 (请勿使用-安全问题)
- 使用官方MCP Python SDK完成重写
- 严重错误:身份验证被意外删除
- 添加了HTTP客户端连接池
- 更好的错误处理
- 完整的英文代码库,包含双语文档
v1.0.0
- 带有自定义MCP实现的初始版本
______________________________________________________________________
法语
用于控制OpenShock设备的模型上下文协议(MCP)服务器,使用官方MCP Python SDK构建。包括自动冲击强度限制和基于HTTP的安全通信。
功能
- 官方MCP SDK:使用Python包构建
mcp官方Anthropic - 完整MCP协议:全面实施MCP标准,并定义适当的工具
- 可用工具:
- SHOCK:发送具有自动强度限制的冲击命令 - VIBRATE:发送振动命令 - BEEP:发送声音命令 - STOP:停止所有命令
- 安全功能:通过变量自动限制冲击强度
SHOCK_LIMIT - 传输HTTP:使用JSON-RPC 2.0的现代基于HTTP的MCP服务器
- 连接池:高效管理HTTP客户端连接
- 支持Docker:使用Docker和Docker Compose轻松部署
建筑
此服务器使用:
- 快速API 对于HTTP传输层和MCP端点JSON-RPC 2.0
- HTTPX 对于具有连接池的异步HTTP客户端
- API OpenShock v2 用于控制设备
安装
先决条件
- Docker和Docker组合(推荐)
- 或使用Pip的Python 3.11+。
- 代币API OpenShock缬ide
配置
- 克隆存储库:
git clone
cd openshock-mcp-server- 复制
.env.example朝向.env:
cp .env.example .env- 编辑文件
.env使用您的配置:
OPENSHOCK_API_TOKEN=votre_token_openshock
MCP_AUTH_TOKEN=votre_token_mcp_securise
SHOCK_LIMIT=50 # Optionnel: limite l'intensité des chocs (0 = pas de limite)Docker Compose入门(推荐)
docker-compose up -d服务器将可访问 http://localhost:8000
Docker入门
docker build -t openshock-mcp-server .
docker run -p 8000:8000 \
-e OPENSHOCK_API_TOKEN=votre_token \
-e MCP_AUTH_TOKEN=votre_token_mcp \
-e SHOCK_LIMIT=50 \
openshock-mcp-server地方发展
# Installer les dépendances
pip install -r requirements.txt
# Définir les variables d'environnement
export OPENSHOCK_API_TOKEN=votre_token
export MCP_AUTH_TOKEN=votre_token_mcp
export SHOCK_LIMIT=50
# Lancer le serveur
python app.py使用
Connexion客户端MCP
将MCP客户端连接到 http://localhost:8000/mcp 使用JSON-RPC 2.0格式的HTTP POST请求。
认证要求: 所有请求必须在头中包含身份验证令牌 Authorization.前缀 Bearer 可选,以便与MCP客户端兼容:
Authorization: Bearer votre_token_mcp或
Authorization: votre_token_mcpLe端点 /health 无需身份验证即可公开访问。
MCP工具可用
1.休克
发送具有自动强度限制的冲击命令。
设置 :
shockers(列表):冲击器配置列表
- id (string):ID du shock - intensity (整数):冲击强度1-100(由shock-limit自动限制) - duration (整数):以毫秒为单位的持续时间(300-30000)
示例:
{
"name": "SHOCK",
"arguments": {
"shockers": [
{
"id": "votre_id_shocker",
"intensity": 80,
"duration": 1000
}
]
}
}是 SHOCK_LIMIT=50强度将自动降低到50。
2.振动
发送振动命令(不受shock-limit影响)。
设置 :
shockers(列表):冲击器配置列表
- id (string):ID du shock - intensity (整数):振动强度1-100 - duration (整数):以毫秒为单位的持续时间(300-30000)
示例:
{
"name": "VIBRATE",
"arguments": {
"shockers": [
{
"id": "votre_id_shocker",
"intensity": 30,
"duration": 2000
}
]
}
}3.嘟嘟声
发送声音命令。
设置 :
shockers(列表):冲击器配置列表
- id (string):ID du shock - intensity (整数):音量强度1-100(默认为50) - duration (整数):以毫秒为单位的持续时间(300-30000)
示例:
{
"name": "BEEP",
"arguments": {
"shockers": [
{
"id": "votre_id_shocker",
"intensity": 50,
"duration": 500
}
]
}
}4.停止
停止指定冲击器上的所有命令。
设置 :
shockers(列表):要停止的冲击者列表
- id (string):ID du shock
示例:
{
"name": "STOP",
"arguments": {
"shockers": [
{
"id": "votre_id_shocker"
}
]
}
}安全功能
冲击极限
环境变量 SHOCK_LIMIT 为冲击控制提供自动安全限制:
SHOCK_LIMIT=0:无限制(默认行为)SHOCK_LIMIT=50:自动将冲击强度限制为最大50SHOCK_LIMIT=25:自动将冲击强度限制为最大25
行为:
- 强度大于的命令
SHOCK_LIMIT他们不是 未被拒绝 - 强度是 自动减少 在配置的限制
- 答案包括调整的细节
- 记录所有调整以进行安全审计
备注:只有命令 SHOCK 受影响 SHOCK_LIMIT.命令 VIBRATE 和 BEEP 不受限制。
环境变量
| 变量 | 描述 | 必需 | 默认 |
|---|---|---|---|
OPENSHOCK_API_TOKEN OpenShock API令牌 | ✅ 是的 | - | |
MCP_AUTH_TOKEN | MCP身份验证令牌(在报头授权中发送,可选承载前缀) | ✅ 是的 | - |
SHOCK_LIMIT | 最大冲击强度(0=无限制) | ❌ 否 | 0 |
OPENSHOCK_API_URL | api openshock的URL | ❌ 没有 | https://api.openshock.app |
MCP_SERVER_NAME MCP服务器名称 | ❌ 否 | openshock mcp服务器 | |
MCP_VERSION | 服务器版本 | ❌ 否 | 2.1.0 |
PORT | 监听端口 | ❌ 否 | 8000 |
健康检查
服务器向提供运行状况检查端点 /health :
curl http://localhost:8000/health答复:
{
"status": "healthy"
}良好安全做法
- ⚠️ 代币安全:同时保持
OPENSHOCK_API_TOKEN和MCP_AUTH_TOKEN安全,永远不要在版本控制中提交它们 - 🔑 代币Forts:使用强随机生成的令牌
MCP_AUTH_TOKEN(例如:UUID或32个以上字符的随机字符串) - 🔒 HTTPS en生产:在生产环境中始终使用HTTPS/TLS
- 🎯 配置器SHOCK_LIMIT:定义一个
SHOCK_LIMIT适合您的安全要求 - 🔐 网络安全:使用防火墙限制对服务器的网络访问
- 📊 审计日志记录:记录所有强度调整和身份验证失败,以进行安全审核
故障排除
服务器无法启动
- 检查
OPENSHOCK_API_TOKEN定义正确 - 查看日志
docker-compose logs -f(Docker)或控制台输出(本地)
命令不起作用
- 检查Shockers ID是否正确
- 验证OpenShock API令牌是否具有适当的权限
- 检查日志以查找错误消息
连接问题
- 确保在配置的端口上可以访问服务器
- 检查防火墙规则
- 验证MCP客户端是否配置为使用JSON-RPC 2.0进行HTTP传输
发展
此服务器构建有:
- 模型上下文协议 MCP规范
- SDK Python MCP -官方Python实现
- API OpenShock -OpenShock设备控制API
要贡献或报告问题,请使用GitHub存储库。
版本历史
v2.1.0 (当前)
- 建筑结构变更:使用JSON-RPC 2.0从服务器发送事件(SSE)切换到纯HTTP
- 使用JSON Direct简化响应管理
- 改进了与标准JSON-RPC客户端的兼容性
- 更新文档以仅反映HTTP传输
v2.0.1
- 安全纠正:重新实现身份验证(v2.0.0存在严重漏洞)
- 使用中间件的Token Bearer身份验证
- 所有端点都需要身份验证,除非
/health
v2.0.0版本 (不使用-安全问题)
- 使用官方MCP Python SDK完全重写
- BUG批评:身份验证被意外删除
- 添加HTTP客户端连接池
- 更好地管理错误
- 代码完全用英语编写,带有双语文档
v1.0.0
- 具有自定义MCP实现的初始版本
