Gantz Run

Gantz Run

让 AI 代理秒连本地工具

6点赞
2026-01-03
Gantz Run screenshot 1
点击查看大图
Gantz Run screenshot 2
点击查看大图

全面介绍

✨ Gantz Run: 让 AI 代理秒连本地工具 ✨

Gantz Run 致力于为您的本地 MCP 服务器即时搭建安全通道,让 AI 代理轻松访问您本地的服务。告别复杂的配置,一键即可将您的本地服务暴露给 AI 代理!

💡 无需 ngrok、无需端口映射、无需任何部署,即刻畅享本地 AI 协作!

🚀 为什么选择 Gantz Run?

  • MCP 原生支持:专为 MCP 服务器设计,而非通用隧道,提供更稳定、高效的连接。
  • 零配置,无需账号:开箱即用,省去繁琐的注册和配置步骤。
  • 内置认证令牌:保障您的连接安全可靠。
  • 数据隐私保障:我们不存储您的任何数据,完全免费。

🎯 理想的运用场景:

  • 在本地数据库上测试 AI 代理。
  • 快速原型化您的 MCP 工具。
  • 轻松让 Claude 等 AI 访问您的本地脚本。

🛠️ 如何快速开始 (不到一分钟!)

1. 安装 Gantz Run

根据您的系统选择安装方式:

  • 推荐安装脚本 (macOS/Linux):
    curl -fsSL https://gantz.run/install.sh | sh
  • Homebrew (macOS):
    brew install gantz-run
  • Go 开发者:
    go install gantz.run/gantz@latest

2. 创建 gantz.yaml 配置文件

定义您的本地工具,支持多种类型:

  • 脚本工具 (Script Tools):

    运行带有参数占位符 {{param}} 的 shell 命令。

    name: my-tools
    version: "1.0.0"
    tools:
      - name: hello
        description: Say hello to someone
        parameters:
          - name: name
            type: string
            required: true
        script:
          shell: echo "Hello, {{name}}!"
  • HTTP 工具 (HTTP Tools):

    调用 REST API,支持自定义请求头和 JSON 提取。

    name: api-tools
    version: "1.0.0"
    tools:
      - name: list_products
        description: Get all products
        parameters: []
        http:
          method: GET
          url: "https://mockserver.gantz.ai/products"
          extract_json: "data"

3. 启动服务器

轻松一句命令即可启动您的 MCP 服务器:

$ gantz run
Gantz Run v0.1.0
Loaded 2 tools from gantz.yaml
Connecting to relay server...
MCP Server URL: https://happy-panda.gantz.run
Press Ctrl+C to stop

🌟 Gantz Run 功能一览:

  • 即时隧道 (Instant Tunneling):无需端口转发,即可获得公共 URL。
  • 环境变量 (Environment Vars):使用 ${VAR} 安全注入敏感信息。
  • JSON 提取 (JSON Extraction):通过点表示法轻松提取嵌套数据。
  • 跨平台支持 (Cross-Platform):预构建的二进制文件,支持所有主流平台。

🔗 将您的 MCP 服务器连接到 AI 模型:

Gantz Run 提供与主流 AI 模型的集成示例,方便您快速连接:

Anthropic Claude

# mcp_client_anthropic.py
pip install anthropic

#!/usr/bin/env python3
"""Gantz MCP Client for Anthropic Claude"""
import anthropic

ANTHROPIC_API_KEY = "your-anthropic-api-key"
MCP_URL = "https://YOUR-TUNNEL.gantz.run/sse"

def main():
    client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)
    response = client.beta.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=2000,
        messages=[{"role": "user", "content": "list all files"}],
        mcp_servers=[{
            "type": "url",
            "url": MCP_URL,
            "name": "gantz",
        }],
        betas=["mcp-client-2025-04-04"]
    )
    for content in response.content:
        if hasattr(content, 'text'):
            print(content.text)

if __name__ == "__main__":
    main()

Google Gemini

# mcp_client_gemini.py
pip install google-genai httpx

#!/usr/bin/env python3
"""Gantz MCP Client for Google Gemini"""
import httpx
from google import genai
from google.genai import types

GEMINI_API_KEY = "your-gemini-api-key"
MCP_URL = "https://YOUR-TUNNEL.gantz.run"

class MCPClient:
    def __init__(self, url):
        self.url = url
        self.tools = []

    def list_tools(self):
        resp = httpx.post(self.url, json={
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/list"
        })
        self.tools = resp.json().get("result", {}).get("tools", [])
        return self.tools

    def call_tool(self, name, arguments):
        resp = httpx.post(self.url, json={
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {"name": name, "arguments": arguments}
        })
        content = resp.json().get("result", {}).get("content", [])
        return content[0].get("text", "") if content else ""

    def get_gemini_tools(self):
        return [types.FunctionDeclaration(
            name=t["name"],
            description=t.get("description", ""),
            parameters=t.get("inputSchema", {"type": "object"})
        ) for t in self.tools]

def main():
    mcp = MCPClient(MCP_URL)
    mcp.list_tools()
    client = genai.Client(api_key=GEMINI_API_KEY)
    tool_config = types.Tool(function_declarations=mcp.get_gemini_tools())
    response = client.models.generate_content(
        model="gemini-2.0-flash",
        contents="list all files",
        config=types.GenerateContentConfig(tools=[tool_config])
    )
    for part in response.candidates[0].content.parts:
        if part.function_call:
            result = mcp.call_tool(part.function_call.name, dict(part.function_call.args))
            print(result)

if __name__ == "__main__":
    main()

OpenAI Agents SDK

# mcp_client_openai.py
pip install openai-agents

#!/usr/bin/env python3
"""Gantz MCP Client for OpenAI Agents SDK"""
import asyncio
from openai import AsyncOpenAI
from agents import Agent, Runner, set_default_openai_client
from agents.mcp import MCPServerStreamableHttp

OPENAI_API_KEY = "your-openai-api-key"
MCP_URL = "https://YOUR-TUNNEL.gantz.run/sse"

async def main():
    set_default_openai_client(AsyncOpenAI(api_key=OPENAI_API_KEY))
    async with MCPServerStreamableHttp(
        name="Gantz MCP Server",
        params={"url": MCP_URL, "timeout": 30},
    ) as server:
        agent = Agent(
            name="Assistant",
            instructions="You are a helpful assistant.",
            mcp_servers=[server],
        )
        result = await Runner.run(agent, "list all files")
        print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

🔒 我们不存储您的请求或响应数据。隧道 URL 均为临时性质。

产品评分

暂无评分
登录后即可评分
访问官网

相关产品