混合mcp go
通过模型上下文协议(stdio)将核心Mixin安全API暴露给LLM的最小MCP服务器 运输)。它包裹着当地 bot-api-go-client (安全协议)并镜像第一阶段工具 从 memory-bank/docs/mixin-api-summary-en.md.
使用MCP Go开始流程
服务器旨在直接插入标准MCP Go引导程序,详见 https://mcp-go.dev/getting-started/.将此存储库视为该指南中的stdio命令 客户端配置(Claude、MCP Inspector等),或从本地同一脚手架开始 将演示工具替换为下面的Mixin处理程序。
作为参考,该指南的最小服务器形状如下:
package main
import (
"context"
"fmt"
"github.com/mark3labs/mcp-go/mcp"
"github.com/mark3labs/mcp-go/server"
)
func main() {
s := server.NewMCPServer("Demo", "1.0.0", server.WithToolCapabilities(false))
tool := mcp.NewTool("hello_world",
mcp.WithDescription("Say hello to someone"),
mcp.WithString("name", mcp.Required(), mcp.Description("Who to greet")),
)
s.AddTool(tool, func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
name, err := req.RequireString("name")
if err != nil {
return mcp.NewToolResultError(err.Error()), nil
}
return mcp.NewToolResultText(fmt.Sprintf("Hello, %s!", name)), nil
})
if err := server.ServeStdio(s); err != nil {
fmt.Printf("server error: %v\n", err)
}
}用已连接的安全工具替换内联工具 cmd/mixin-mcp 运行此程序时 项目。
先决条件
- Go工具链(Go 1.25.4通过
toolchain如果需要,指令将自动安装)。 - 为您的机器人/用户提供Mixin安全密钥库:
{
"app_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"session_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"server_public_key": "hex_ed25519_public_key",
"session_private_key": "hex_ed25519_private_key",
"spend_private_key": "hex_spend_private_key"
}另存为 keystore.json 二进制(或集合)旁边 MIXIN_KEYSTORE_PATH).
跑
cd mcp-server-go
go run ./cmd/mixin-mcp要将其与Claude Desktop一起使用(遵循入门流程),请更新 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mixin-mcp": {
"command": "go",
"args": ["run", "/absolute/path/to/mcp-server-go/cmd/mixin-mcp"]
}
}
}或与MCP检查员联系:
npm install -g @modelcontextprotocol/inspector
mcp-inspector go run ./cmd/mixin-mcp环境变量:
MIXIN_KEYSTORE_PATH(默认值keystore.json)MIXIN_KEYSTORE_JSON(内联JSON字符串,覆盖路径)MIXIN_API_BASE(可选备用API主机)
可用的MCP工具
用户和配置文件工具
read_profile--得到/safe/mesearch_user--得到/search/{query}read_user--得到/users/{user_id}
资产工具
list_assets--列出非零余额(UTXO扫描)read_asset--职位/safe/assets/fetch对于单一资产get_top_assets--公共网络顶级资产
交易工具
get_snapshots--得到/safe/snapshots带过滤器read_snapshot--得到/safe/snapshots/{id}create_transfer--通过序列器安全转移到对手get_transaction_status--通过以下方式查找事务请求request_id
消息传递工具(第2阶段)
send_message--向对话发送消息
- 参数: category (PLAIN_TEXT、PLAIN_IMAGE等), data,可选 conversation_id,可选 recipient_id - 备注:要么 conversation_id 或 recipient_id 必须提供。要是…就好了 recipient_id 给定后,将使用确定性UniqueConversationId算法为1对1聊天自动生成会话_id。
acknowledge_message--将邮件标记为“已读”
- 参数: message_id
对话工具(第2阶段)
create_conversation--创建联系人或群组对话
- 参数: category (联系人或小组), participant_id (用于联系), name, announcement, participants (GROUP用逗号分隔)
read_conversation--获取包括参与者在内的对话详细信息
- 参数: conversation_id
资源(第三阶段)
资源是只读数据端点,通过URI为语言模型提供上下文:
静态资源:
mixin://user/profile--当前用户配置文件信息mixin://assets/list--非零余额资产
资源模板:
mixin://assets/{asset_id}--特定资产的详细信息mixin://snapshots/{snapshot_id}--特定快照的详细信息
提示(第3阶段)
提示是指导人工智能交互的可重用模板:
transfer_setup--设置安全转移的指南
- 论据: recipient (必填), asset (可选)
balance_check--检查账户余额工作流程
- 论据: filter (可选资产符号)
transaction_history--分析交易历史
- 论据: asset (可选), opponent (可选), days (可选,默认值:7)
所有工具响应都是返回的JSON blob text 内容便于上游解析。
备注
- 使用本地
../bot-api-go-client通过replace获取中引用的安全端点
memory-bank/docs/mixin-api-summary-en.md.
- 没有坚持;除了内存中的密钥库之外,MCP服务器是无状态的。
