Token导航 LogoToken导航TokenDH.com
MCP Golang Wasm Example logo
AI代理stdio官方级别未说明来源级核验

MCP Golang Wasm Example

MCP Server

一个基于Go语言实现的WebAssembly MCP服务器,可在浏览器中运行,支持JSON-RPC协议和MCP协议规范的客户端通信。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
GoVS CodeGo语言VS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

carljmosca

提供方

carljmosca

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m http.server 8080

详细介绍

MCP Go WASM服务器

A. 模型上下文协议(MCP) Go中的服务器实现,通过WebAssembly在浏览器中运行。该项目演示了如何构建一个可以使用WASM在客户端执行的MCP服务器,从而实现无需外部依赖的流式HTTP通信。

🌟 特性

  • 纯Go实现:使用Go的标准库构建,没有外部依赖
  • WebAssembly支持:完全通过WASM在浏览器中运行
  • 符合MCP协议:实现模型上下文协议规范(2024-11-05版)
  1. Go WASM模块:编译为WebAssembly并公开JavaScript函数
  2. JavaScript桥:处理浏览器和WASM之间的通信
  3. JSON-RPC协议:工具调用的标准请求/响应模式
  4. MCP合规性:遵循模型上下文协议规范

🚀 快速开始

先决条件

  • 达到1.21或更高
  • Python 3(用于本地HTTP服务器)
  • 支持WebAssembly的现代web浏览器
  • 或者将附带的Dev容器用于预配置的环境

使用开发容器(推荐)

该项目包括 Dev容器 VS代码的配置。你不需要在本地安装Go或Python。

步骤:

  1. 在VS Code中打开项目。
  2. 如果系统提示,请“在容器中重新打开”(或使用命令选项板: Dev Containers: Reopen in Container).
  3. 容器将使用预装的Go和Python构建,并启用Go和Python的VS Code扩展。
  4. 使用集成终端运行 make buildmake serve 如下所述。

这确保了所有贡献者都有一个一致的开发环境。

构建并运行

# Build the WASM binary
make build

# Serve the application (builds automatically)
make serve

# Or combine both steps
make run

然后打开浏览器 http://localhost:8080

手动构建

# Build WASM
GOOS=js GOARCH=wasm go build -o main.wasm main.go

# Copy the Go WASM runtime
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

# Serve with any HTTP server
python3 -m http.server 8080

📖 用法

使用Web界面

  1. 初始化服务器:点击“初始化服务器”建立MCP连接
  2. 列出工具:查看所有可用工具及其模式
  3. 呼叫工具:从下拉列表中选择一个工具,输入参数(空格分隔),然后执行该工具。例如,使用 add 2 3 要获得2和3的和,或选择 getCurrentTime 没有参数。

程序化使用

// Send a JSON-RPC request to the MCP server
const request = {
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
        name: "add",
        arguments: { a: 2, b: 3 }
    }
};

const responseJSON = mcpHandleRequest(JSON.stringify(request));
const response = JSON.parse(responseJSON);
console.log(response.result);

🛠️ MCP协议实现

支持的方法

方法说明
initialize初始化MCP服务器连接
tools/list列出所有可用工具
tools/call执行特定工具

示例工具

获取当前时间

{
    "name": "getCurrentTime",
    "description": "Returns the current time in RFC3339 format",
    "inputSchema": {
        "type": "object",
        "properties": {},
        "required": []
    }
}

添加

{
    "name": "add",
    "description": "Returns the sum of two numbers (a + b)",
    "inputSchema": {
        "type": "object",
        "properties": {
            "a": { "type": "number" },
            "b": { "type": "number" }
        },
        "required": ["a", "b"]
    }
}

🔧 添加新工具

🔧 添加或使用工具

要使用工具,请从UI中的下拉列表中选择它并输入其参数(空格分隔)。例如:

  • 对于 add,输入: 2 3 (返回5)
  • 对于 getCurrentTime,不需要参数

要向服务器添加新工具,请在中定义它 NewMCPServer() 并在中实现其处理程序 handleToolCall(),然后重建WASM二进制文件。

📁 项目结构

.
├── main.go           # MCP server implementation
├── index.html        # Web interface
├── go.mod           # Go module definition
├── Makefile         # Build automation
└── README.md        # This file

🎨 设计理念

该实施优先考虑:

  • 简洁:无外部依赖,纯Go标准库
  • 效率:开销最小,直接JavaScript桥接
  • 成语Go:遵循Go最佳实践和惯例
  • 浏览器优先:专为WASM/浏览器环境设计
  • MCP合规性:遵守模型上下文协议规范

🔍 技术细节

WASM大桥

Go代码向JavaScript公开了一个函数:

js.Global().Set("mcpHandleRequest", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
    requestJSON := args[0].String()
    response := server.HandleRequest(requestJSON)
    return response
}))

JSON-RPC 2.0

所有通信均遵循JSON-RPC 2.0规范:

  • 请求: { jsonrpc, id, method, params }
  • 回应: { jsonrpc, id, result }{ jsonrpc, id, error }

错误代码

标准JSON-RPC错误代码:

  • -32700:分析错误
  • -32601:未找到方法
  • -32602:无效参数

🧪 测试

使用web界面或浏览器控制台测试服务器:

// Initialize
mcpHandleRequest('{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}')

// List tools
mcpHandleRequest('{"jsonrpc":"2.0","id":2,"method":"tools/list"}')

// Call tool
mcpHandleRequest('{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"getCurrentTime"}}')

📝 许可证

MIT许可证-您可以在自己的项目中自由使用!

🤝 贡献

欢迎投稿!请随意:

  • 添加新的示例工具
  • 优化用户界面
  • 加强错误处理
  • 添加测试
  • 改进文档

🔗 资源

______________________________________________________________________

内置于❤️ 使用Go和WebAssembly

目录标签

目录标签

GoVS CodeGo语言WebAssembly本地部署MCP协议JSON-RPC浏览器端服务器

支持客户端

VS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

来源信息

继续浏览同类 MCP