Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

【中文支持】🐳🧩 简单易用的 MCP 构建器与启动器,适用于各种 MCP 服务器,就像 Ollama 管理大模型一样!

Notifications You must be signed in to change notification settings

HildaM/mcp-launcher

 
 

Repository files navigation

MCP-Launcher

MCP-Launcher 是一个用于克隆、构建和启动 MCP (Model Collaboration Protocol) 服务器的工具。它通过自动化处理仓库克隆、Docker 镜像构建和容器创建的过程,简化了 MCP 服务器的部署。

功能特点

  • 自动从 GitHub 等源克隆 MCP 服务器代码
  • 自动构建 Docker 镜像
  • 创建并运行 Docker 容器
  • 支持插件系统进行功能扩展
  • 提供完整的日志记录

快速开始

前置要求

  • Go 1.19 或更高版本
  • Docker
  • Git

安装

  1. 克隆本仓库:
git clone https://github.com/moeru-ai/mcp-launcher.git
cd mcp-launcher
  1. 安装依赖:
go mod download

使用方法

基本用法:

go run ./cmd/mcp-launcher [仓库URL] -d [子目录]

例如:

go run ./cmd/mcp-launcher https://github.com/browserbase/mcp-server-browserbase -d stagehand

参数说明:

  • [仓库URL]: MCP 服务器代码的仓库地址
  • -d, --directory: 可选,指定仓库中包含 MCP 服务器入口点的子目录

构建可执行文件

go build -o mcp-launcher ./cmd/mcp-launcher

项目结构

mcp-launcher/
├── cmd/                    # 命令行应用入口
│   └── mcp-launcher/       # 主命令实现
├── internal/               # 内部包
│   ├── metadata/           # 元数据处理
│   └── plugins/            # 内部插件实现
├── pkg/                    # 公共包
│   ├── jsonpatch/          # JSON补丁工具
│   ├── pluginregistry/     # 插件注册系统
│   ├── plugins/            # 插件接口
│   ├── rules/              # 规则定义
│   └── utils/              # 工具函数
└── docs/                   # 文档

插件系统

MCP-Launcher 提供了一个强大而灵活的插件系统,这是项目的核心特色之一。插件系统允许在部署流程的不同阶段注入自定义逻辑,从而支持各种不同的 MCP 服务器实现。

插件生命周期

插件系统定义了四个主要的生命周期钩子点:

  1. BeforeClone: 在克隆仓库前执行

    • 可用于准备环境、验证参数或执行预检查
    • 实现 PluginBeforeClone 接口
  2. AfterClone: 在克隆仓库后执行

    • 常用于对克隆的代码进行修改或配置调整
    • 实现 PluginAfterClone 接口
  3. BeforeBuild: 在构建 Docker 镜像前执行

    • 用于调整 Dockerfile 或项目构建配置
    • 实现 PluginBeforeBuild 接口
  4. AfterBuild: 在构建 Docker 镜像后执行

    • 用于镜像后处理或元数据收集
    • 实现 PluginAfterBuild 接口

每个插件可以实现一个或多个这些接口,基于需要介入的流程阶段。

插件接口设计

所有插件接口继承自基础 Plugin 接口,并提供两个关键方法:

// 示例:AfterClone 接口
type PluginAfterClone interface {
    Plugin
    
    // 判断插件是否应该处理当前请求
    ShouldHandleAfterClone(ctx context.Context) (bool, error)
    
    // 实际执行的逻辑
    AfterClone(ctx context.Context) error
}

这种设计允许插件自决定是否应该处理特定请求,提供了很高的灵活性。

基于规则的插件

MCP-Launcher 提供了一个基于规则的插件框架(RulesPlugin),简化了插件开发。这个框架支持:

  1. 精确匹配规则:匹配完全相同的仓库 URL
  2. 模式匹配规则:使用 glob 模式匹配仓库 URL

规则可以被赋予不同的优先级,较高优先级的规则会先被评估。

JSON补丁工具

为了方便插件修改配置文件,MCP-Launcher 提供了 jsonpatch 包,支持三种操作:

  • Add: 添加新字段或值
  • Remove: 移除字段
  • Replace: 替换现有值

已实现的插件示例

  1. StageHandMCPServerPlugin

    • 针对 browserbase 的 MCP 服务器
    • 在克隆后修改 package.json,移除 prepare 脚本并添加 start 脚本
    • 使用规则确保只处理特定仓库 URL
  2. SearchAPIMCPServerPlugin

    • 用于 fatwang2 的搜索 API MCP 服务器
    • 类似地修改 package.json 配置
    • 针对不同的仓库 URL 和构建路径

元数据共享

插件间通过 Context 共享元数据,包括:

  • 仓库 URL
  • 克隆路径
  • 子目录设置
  • Docker 信息(镜像哈希、容器哈希等)

这确保了插件可以访问和修改整个流程中的关键信息。

自定义插件开发

创建新插件的步骤

  1. internal/plugins/mcp/sources/ 目录下为特定源创建插件文件
  2. 实现所需的生命周期接口
  3. 使用基于规则的插件框架简化匹配逻辑
  4. internal/plugins/plugins.go 中注册插件

插件实现示例

// 简化示例
type MyCustomPlugin struct {
    repositoryurlrules.RulesPlugin
}

func NewMyCustomPlugin() *MyCustomPlugin {
    return &MyCustomPlugin{
        RulesPlugin: repositoryurlrules.Rules(
            repositoryurlrules.ForExact("https://github.com/myorg/my-repo"),
        ),
    }
}

func (p *MyCustomPlugin) ShouldHandleAfterClone(ctx context.Context) (bool, error) {
    return p.ShouldHandle(ctx, metadata.FromContext(ctx).RepositoryURL), nil
}

func (p *MyCustomPlugin) AfterClone(ctx context.Context) error {
    // 自定义逻辑实现
    // ...
    return nil
}

开发

添加新插件

  1. internal/plugins/mcp/sources/ 目录下为特定源创建新插件
  2. internal/plugins/plugins.go 中注册该插件

插件需要实现 pkg/plugins 中定义的相关接口,如 PluginBeforeClonePluginAfterClone 等。

运行测试

go test ./...

许可证

请查看项目中的 LICENSE 文件了解许可信息。

About

【中文支持】🐳🧩 简单易用的 MCP 构建器与启动器,适用于各种 MCP 服务器,就像 Ollama 管理大模型一样!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 98.3%
  • Dockerfile 1.7%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.