HTTP代理服务器

Tumiki MCP HTTP Adapter是一个轻量级的Go实现的代理服务器,用于将stdio MCP服务器作为HTTP端点公开,支持动态配置和自定义头映射。

  • by rayven122
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 rayven122/tumiki-mcp-http-adapter

使用说明

Tumiki MCP HTTP 适配器

语言日语 | 英国 英语

目录


概要

将stdio MCP服务器作为HTTP端点公开的Go实现代理服务器

主要特点

  • ✅ 轻便简单的stdio代理
  • ✅ 立即启动: --stdio仅通过标志即可启动
  • ✅ 动态设置可从HTTP头部设置环境变量和参数(支持流式HTTP)
  • ✅ 自定义头部映射可以使用完全自定义的头部名称来指定环境变量和参数

📖 技术细节系统架构、组件设计、安全设计等的详细内容 docs/DESIGN.md(文件名,可译为“文档/设计说明.md”或保持原样,因为文件名通常不翻译) 请参考。


安装

已构建的二进制文件(推荐)

GitHub 发布版(或版本发布) 请从官网下载最新版本。

macOS / Linux(操作系统)

# 最新版を自動ダウンロード&インストール
curl -sL https://github.com/rayven122/tumiki-mcp-http-adapter/releases/latest/download/tumiki-mcp-http_$(uname -s)_$(uname -m).tar.gz | tar xz
sudo mv tumiki-mcp-http /usr/local/bin/

# 確認
tumiki-mcp-http --help

Windows

发布页面请从(相应位置)下载Windows版的zip文件并解压。

去安装

# Go がインストール済みの場合
go install github.com/rayven122/tumiki-mcp-http-adapter/cmd/tumiki-mcp-http@latest

# 確認
tumiki-mcp-http --help

注意: $GOPATH/bin (通常 ~/go/bin请确认该路径是否包含在PATH中。

从源代码构建

# リポジトリをクローン
git clone https://github.com/rayven122/tumiki-mcp-http-adapter.git
cd tumiki-mcp-http-adapter

# ビルド
task build

# バイナリを PATH に配置(オプション)
sudo cp bin/tumiki-mcp-http /usr/local/bin/

# 確認
tumiki-mcp-http --help

使用示例

文件系统服务器

# 起動
tumiki-mcp-http \
  --stdio "npx -y @modelcontextprotocol/server-filesystem /Users/yourname/Documents"

# テスト
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

GitHub服务器(带环境变量)

# 起動
tumiki-mcp-http \
  --stdio "npx -y @modelcontextprotocol/server-github" \
  --env "GITHUB_TOKEN=ghp_xxxxx"

# テスト
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search_repositories",
      "arguments": {"query": "language:go"}
    }
  }'

头部映射(动态设置)

可以从HTTP请求的头部动态设置环境变量和命令行参数。

步骤1:在CLI启动时定义映射

tumiki-mcp-http --stdio "npx -y server-slack" \
  --header-env "X-Slack-Token=SLACK_TOKEN" \
  --header-arg "X-Team-Id=team-id" \
  --header-arg "X-Channel=channel"

步骤2:在发送HTTP请求时传递实际值

curl -X POST http://localhost:8080/mcp \
  -H "X-Slack-Token: xoxp-xxxxx" \
  -H "X-Team-Id: T123" \
  -H "X-Channel: general" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

执行结果:

# 実行されるコマンド
npx -y server-slack --team-id T123 --channel general

# 設定される環境変数
SLACK_TOKEN=xoxp-xxxxx

命令行选项

选项列表

选项 说明 必填 可多选 默认值
--stdio <command> 以stdio模式运行的MCP服务器命令 ✅ ❌ -
--port <port> 服务器端口 ❌ ❌ 8080
--env <KEY=VALUE> 默认环境变量的设置 ❌ ✅ -
--header-env <HEADER=ENV> 从HTTP头到环境变量的映射 ❌ ✅ -
--header-arg <HEADER=ARG> 从HTTP头部到命令行参数的映射 ❌ ✅ -
--log-level <level> 日志级别(debug/info/warn/error,默认:info) ❌ ❌ info

通过环境变量进行设置

服务器的启动设置也可以通过环境变量来指定。

环境变量 说明 默认值
HOST 服务器主机 0.0.0.0
# 例: 環境変数でホスト指定、コマンドラインオプションでポート指定
HOST=127.0.0.1 tumiki-mcp-http --port 3000 --stdio "npx -y server-filesystem /data"

开发

有关开发环境的设置、测试、编码规范等详细信息,请参阅以下内容:

开发指南(docs/DEVELOPMENT.md)


许可证

MIT许可证 - 详情见 许可证 请参考