Token导航 LogoToken导航

MCP Server · 开发工具

Papilio Loader MCP

Papilio Loader MCP Server是一个用于通过网络加载FPGA位文件和ESP32固件的服务器,支持远程客户端编程设备。

stdio官方级别未说明来源级核验工具 8
PythonClaude开发工具Claude DesktopVS Code

快速开始

作者 / 组织
Papilio-Labs
提供方
Papilio-Labs
运行时
Python

工具数量

8

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Papilio Loader MCP 属于开发工具类 MCP Server,公开资料标注 8 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude、VS Code,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

开发工具

传输方式

stdio

认证方式

API Key

部署方式

公开资料未说明

安装与配置

安装命令

python start_mcp_server.py

客户端配置示例

{
  "mcpServers": {
    "papilio-loader-mcp": {
      "command": "python",
      "args": [
        "start_mcp_server.py"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 8 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

Papilio加载器MCP服务器

MCP(模型上下文协议)服务器,用于通过网络加载FPGA位文件和ESP32固件。该服务器在Windows上运行,可直接访问USB/串行端口,同时允许远程客户端(如WSL或Linux机器)通过网络对设备进行编程。

🎉 新增:桌面应用程序可用!

Papilio Loader现在可作为 桌面应用程序 与系统托盘集成!非常适合想要简单易用界面的最终用户。

👉 下载桌面应用安装程序

看 桌面_APP.md 有关安装和使用说明。

特性

  • 桌面应用程序 (新增!):Windows系统托盘应用程序,一键安装
  • OTA 更新 (新增!):通过WiFi/网络无需USB连接的闪存设备

- 在本地网络上发现支持OTA的设备 - Flash ESP32固件和FPGA比特流无线传输 - 支持具有HTTP OTA端点(端口3232)的设备

  • 网络界面:基于浏览器的现代用户界面,供最终用户手动设备闪烁

- 保存文件库:保存带有说明的常用固件文件,以便于重用

  • MCP服务器:与Claude Desktop和其他MCP客户端集成,用于人工智能辅助设备编程
  • REST API:用于远程网络访问的基于FastAPI的HTTP API
  • 双编程工具:

- ESP32编程的官方esptool(安全稳定) - pesptool(GadgetFactory分支)仅用于FPGA编程

  • Gowin FPGA支持:通过pesptool使用.bin文件的Flash Papilio板(Gowin FPGA)
  • ESP32支持:使用官方esptool闪存ESP32设备,带有bin/elf文件,支持多分区闪存
  • 基于网络:在具有串行端口访问的Windows上运行,通过网络从WSL/Linux进行控制

快速开始

选项1:桌面应用程序(最简单)

  1. 下载并安装 PapilioLoader-Setup-x.x.x.exe 从 发布
  2. 从“开始”菜单启动Papilio Loader
  3. 系统托盘图标出现-右键单击并选择“打开Web界面”

看 桌面_APP.md 了解详情。

选项2:Web界面(Python)

# 1. Install dependencies
uv pip install -e .

# 2. Start the combined server (MCP + Web Interface)
.\start.ps1

# 3. Open browser to http://localhost:8000/web/login
# Default credentials: admin/admin

看 WEBINTERFACE_GUIDE.md 详细说明。

选项3:仅限MCP服务器

# Install and configure for Claude Desktop or other MCP clients
# See documentation/QUICKSTART.md

建筑

┌─────────────────┐         Network          ┌──────────────────┐
│   Web Browser   │ ◄────────────────────► │  Windows Host    │
│  WSL / Linux    │      HTTP/MCP           │ Combined Server  │
│  Build Machine  │                         │                  │
│ - Manual Upload │                         │ - Web UI         │
│ - Build FPGA    │                         │ - MCP Server     │
│ - Build ESP32   │                         │ - REST API       │
│ - Send files    │                         │ - pyserial       │
│                 │                         │ - esptool (ESP32)│
│                 │                         │ - pesptool (FPGA)│
└─────────────────┘                         └────────┬─────────┘
                                                     │ USB/Serial
                                                     ▼
                                            ┌─────────────────┐
                                            │ FPGA / ESP32    │
                                            │ Hardware        │
                                            └─────────────────┘

安装

先决条件

  1. Python 3.12+:运行服务器所需
  2. esptool:Espressif官方ESP32编程工具(通过pip自动安装)
  3. 比索托:GadgetFactory的FPGA编程分支(包含在git子模块中)

- 仅用于将FPGA比特流编程到外部闪存 - ESP32使用官方esptool确保安全性和稳定性

设置

# Clone the repository
git clone https://github.com/papilio-labs/papilio-loader-mcp.git
cd papilio-loader-mcp

# Initialize submodules
git submodule update --init --recursive

# Create virtual environment using uv
uv venv

# Install dependencies
uv pip install -e .

配置

设置环境变量以配置服务器:

# Network settings
PAPILIO_BIND_ADDRESS=0.0.0.0  # Use 0.0.0.0 for remote access, 127.0.0.1 for local only
PAPILIO_PORT=8000

# Security
PAPILIO_API_KEY=your-secret-key-here  # Optional API authentication
PAPILIO_CORS_ORIGINS=["http://localhost:3000"]  # Comma-separated list

# Limits
PAPILIO_MAX_UPLOAD_SIZE=52428800  # 50 MB in bytes
PAPILIO_RATE_LIMIT=60  # Requests per minute

# Serial settings
PAPILIO_DEFAULT_BAUD_RATE=115200
PAPILIO_SERIAL_TIMEOUT=10

用法

作为独立的HTTP/SSE服务器(建议用于远程访问)

HTTP/SSE服务器作为独立的Windows进程运行,并允许VS Code(或其他MCP客户端)通过HTTP与服务器发送事件(SSE)传输连接。

优点:

  • 不需要VS Code来生成服务器进程
  • 服务器持续运行,与VS代码无关
  • 可以设置为Windows服务
  • 多个客户端可以连接到同一服务器实例
  • 更适合远程/网络访问场景

启动服务器:

# Using the startup script
python start_mcp_server.py

# Or run the module directly
python -m papilio_loader_mcp.http_server --port 8765

# Or with custom host/port
python -m papilio_loader_mcp.http_server --host 0.0.0.0 --port 8765

服务器将于启动 http://127.0.0.1:8000 SSE端点位于 /sse.

配置VS代码:

更新 .vscode/mcp.json 在您的项目中:

{
  "servers": {
    "papilio-loader": {
      "type": "sse",
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

注: VS代码使用 "servers" 在顶层(不是 "mcpServers" 用于克劳德桌面)。

对于来自其他计算机的网络访问,请使用 "url": "http://YOUR_WINDOWS_IP:8000/sse".

设置为Windows服务(可选):

要在Windows启动时自动运行服务器,您可以使用NSSM(非吸吮服务管理器)或任务计划程序:

# Download NSSM from https://nssm.cc/download
nssm install PapilioMCP "C:\Python314\python.exe" "C:\development\papilio-loader-mcp\start_mcp_server.py"
nssm start PapilioMCP

作为MCP服务器(VS Code-stdio模式下的GitHub Copilot)

此项目已为GitHub Copilot MCP集成进行了预配置。安装后:

  1. 重新加载VS代码窗口(Ctrl+Shift+P → “开发人员:重新加载窗口”)
  2. 打开GitHub Copilot聊天
  3. MCP工具将自动可用

看 VSCODE_SETUP.md 有关详细的设置说明。

作为MCP服务器(克劳德桌面)

  1. 添加到您的Claude Desktop配置(%APPDATA%\Claude\claude_desktop_config.json):
{
  "mcpServers": {
    "papilio-loader": {
      "type": "sse",
      "url": "http://localhost:8000/sse"
    }
  }
}

注: Claude Desktop使用 "mcpServers" 在顶层(不是 "servers" 用于VS码)。

  1. 重新启动克劳德桌面
  1. 使用自然语言进行交互:

- “列出可用串行端口” - “将此位文件闪存到COM3” - “在/dev/ttyUSB0上获取ESP32芯片信息”

作为REST API服务器

# Start the API server
python -m papilio_loader_mcp.api

# Or use uvicorn directly
uvicorn papilio_loader_mcp.api:api --host 0.0.0.0 --port 8000

API终点

健康检查
curl http://localhost:8000/health
列出串行端口
curl -H "X-API-Key: your-key" http://localhost:8000/ports
获取设备信息
curl -X POST http://localhost:8000/device/info \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-key" \
  -d '{"port": "COM3", "device_type": "esp32"}'
闪存设备
curl -X POST http://localhost:8000/flash/upload \
  -H "X-API-Key: your-key" \
  -F "file=@firmware.bin" \
  -F "port=COM3" \
  -F "device_type=esp32" \
  -F "address=0x1000" \
  -F "verify=true"

MCP工具

服务器提供以下MCP工具:

USB/串行编程

  • list_serial_ports:列出所有可用的COM端口
  • get_device_info:查询设备信息(FPGA/ESP32)
  • get_flash_status:获取闪存状态和信息
  • flash_device:通过USB/串行将固件闪存到设备进行验证

OTA(无线)编程

  • discover_ota_devices:扫描本地网络以查找支持OTA的设备(端口3232上的HTTP端点)
  • check_device_ip:检查特定IP地址是否有可用的OTA端点
  • flash_device_ota:通过WiFi/网络闪存ESP32固件或FPGA比特流

OTA使用示例

发现网络上的设备:

# Returns list of devices with their IP addresses and endpoints
discover_ota_devices(timeout=2, port=3232)

检查特定设备:

# Verify device at known IP has OTA capability
check_device_ip(ip="10.0.4.35", port=3232)

通过OTA进行闪光:

# Flash ESP32 firmware
flash_device_ota(
    ip="10.0.4.35",
    device_type="esp32",
    file_path="build/fpga_companion.bin",
    port=3232
)

# Flash FPGA bitstream
flash_device_ota(
    ip="10.0.4.35",
    device_type="fpga",
    file_path="impl/pnr/a2600nano_retrocade.bin",
    port=3232
)

注: OTA闪烁要求:

  • 设备必须在端口3232上运行HTTP OTA服务器的固件
  • 设备必须连接到同一网络
  • ESP32 OTA端点: POST http://IP:3232/update
  • FPGA OTA端点: POST http://IP:3232/fpga-update

发展

项目结构

papilio-loader-mcp/
├── src/
│   └── papilio_loader_mcp/
│       ├── __init__.py
│       ├── server.py          # MCP server implementation
│       ├── api.py             # FastAPI REST API
│       ├── config.py          # Configuration management
│       └── tools/             # Tool implementations
│           ├── serial_ports.py
│           ├── device_info.py
│           ├── flash_status.py
│           ├── fpga_flash.py
│           └── esp_flash.py
├── tools/
│   └── pesptool/             # Git submodule (GadgetFactory/esptool)
├── temp/                     # Temporary file uploads
├── logs/                     # Application logs
├── pyproject.toml
└── README.md

运行测试

# TODO: Add tests
uv run pytest

客户示例

Python客户端

import requests

API_URL = "http://windows-host:8000"
API_KEY = "your-key"

headers = {"X-API-Key": API_KEY}

# List ports
response = requests.get(f"{API_URL}/ports", headers=headers)
print(response.json())

# Flash ESP32
with open("firmware.bin", "rb") as f:
    files = {"file": f}
    data = {
        "port": "COM3",
        "device_type": "esp32",
        "address": "0x1000",
        "verify": "true"
    }
    response = requests.post(
        f"{API_URL}/flash/upload",
        headers=headers,
        files=files,
        data=data
    )
    print(response.json())

WSL/Linux客户端

#!/bin/bash
# flash_from_wsl.sh

WINDOWS_HOST="192.168.1.100:8000"
API_KEY="your-key"

# Build your project
make build

# Flash to device via Windows host
curl -X POST "http://${WINDOWS_HOST}/flash/upload" \
  -H "X-API-Key: ${API_KEY}" \
  -F "file=@build/firmware.bin" \
  -F "port=COM3" \
  -F "device_type=esp32" \
  -F "address=0x1000"

curl示例

# List ports
curl http://localhost:8000/ports

# Get device info
curl -X POST http://localhost:8000/device/info \
  -H "Content-Type: application/json" \
  -d '{"port": "COM3", "device_type": "fpga"}'

# Flash FPGA
curl -X POST http://localhost:8000/flash/upload \
  -F "file=@design.bit" \
  -F "port=COM3" \
  -F "device_type=fpga"

故障排除

港口准入问题

  • 确保没有其他程序正在使用串行端口
  • 在Windows上,检查设备管理器中的COM端口分配
  • 验证您的设备是否安装了USB驱动程序

权限错误

  • 如果访问USB端口失败,请在Windows上以管理员身份运行
  • 检查网络访问的防火墙设置

未找到比索托

  • 确保git子模块已初始化: git submodule update --init
  • 检查一下 tools/pesptool/esptool.py 存在
  • pesptool是FPGA和ESP32编程的统一工具

许可证

\[在此处添加您的许可证\]

贡献

欢迎投稿!请打开问题或拉取请求。

参考文献

工具与能力

工具数量

8

资源数量

0

提示词数量

0

能力标签

FPGA编程Python本地部署ESP32固件网络加载远程控制设备编程

支持客户端

Claude DesktopClaudeVS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 8 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude、VS Code,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Papilio Loader MCP

MCP World · 本页

8stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Papilio Loader MCP 怎么安装?

公开资料给出的安装命令是 python start_mcp_server.py,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Papilio Loader MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Papilio Loader MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Papilio Loader MCP 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Papilio Loader MCP 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP