MCP Gateway

Um gateway para traduzir chamadas de ferramentas M

Documentação

MCP Gateway

O MCP (Model Context Protocol) Gateway pode traduzir chamadas de ferramentas MCP para requisições HTTP API tradicionais. Ele pode fornecer uma forma configurável de levar APIs HTTP existentes para o território MCP.

Começando

Crie o arquivo de configuração a partir de config.example.yaml:

$ cp config.example.yaml config.yaml

Edite o arquivo config.yaml, mapeando todas as APIs para ferramentas MCP.

Em seguida, inicie-o com transporte SSE:

$ uv run mcp-gateway
INFO:     Started server process [15400]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3001 (Press CTRL+C to quit)

O padrão é 3001.

Controle do Servidor

Alterar Porta

Fornecer o parâmetro --port=<port_no> na linha de comando alterará a porta para o transporte SSE.

Inicie o gateway com a porta 3002:

$ uv run mcp-gateway --port=3002
INFO:     Started server process [15400]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3002 (Press CTRL+C to quit)

Transporte stdio

Fornecer o parâmetro --transport=stdio na linha de comando alterará o transporte para stdio.

Ex.:

$ uv run mcp-gateway --transport=stdio

Não faz sentido iniciar manualmente o gateway com transporte stdio. Você pode configurá-lo no Cursor ou Cline da seguinte forma:

{
    "mcpServers": {
        "mcp-gateway": {
          "command": "uv",
          "args": ["run", "mcp-gateway", "--transport=stdio"]
        }
      }
}

Ou no MCP Inspector com os valores do formulário:

ItemValor
Tipo de TransporteSTDIO
Comandouv
Argumentosrun mcp-gateway --transport=stdio

Arquivo de Configuração

Há duas partes no YAML de configuração: server e tools. server define as informações básicas para uso do servidor gateway. tools define o mapeamento de uma única ferramenta MCP para uma requisição HTTP API.

server:
  name: rest-amap-server
  config:
    apiKey: foo
tools:
- name: maps-geo
  description: "将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标"
  args:
  - name: address
    description: "待解析的结构化地址信息"
    required: true
  - name: city
    description: "指定查询的城市"
    required: false
  requestTemplate:
    url: "https://restapi.amap.com/v3/geocode/geo?key={{.config.apiKey}}&address={{.args.address}}&city={{.args.city}}&source=ts_mcp"
    method: GET
    headers:
    - key: x-api-key
      value: "{{.config.apiKey}}"
    - key: Content-Type
      value: application/json
  responseTemplate:
    body: |
      # 地理编码信息
      {{- range $index, $geo := .Geocodes }}
      ## 地点 {{add $index 1}}

      - **国家**: {{ $geo.Country }}
      - **省份**: {{ $geo.Province }}
      - **城市**: {{ $geo.City }}
      - **城市代码**: {{ $geo.Citycode }}
      - **区/县**: {{ $geo.District }}
      - **街道**: {{ $geo.Street }}
      - **门牌号**: {{ $geo.Number }}
      - **行政编码**: {{ $geo.Adcode }}
      - **坐标**: {{ $geo.Location }}
      - **级别**: {{ $geo.Level }}
      {{- end }}

Servidor

ItemDescrição
nameNome do servidor
configPares Chave/Valor que podem ser referenciados pela variável {{.config.xxx}} nos templates

Ferramentas

tools é a lista de mapeamento de ferramentas MCP. As propriedades de uma única ferramenta são definidas da seguinte forma:

ItemDescrição
nameNome da ferramenta (nome da função), que é fornecido ao LLM.
descriptionDescrição da ferramenta pela qual o LLM pode entender o que a ferramenta pode fazer.
argsArgumentos da ferramenta (argumentos da função).
requestTemplateMapeamento da requisição para a HTTP API de destino.
responseTemplateMapeamento da resposta para a resposta da HTTP API de destino.

As propriedades de um único argumento são definidas da seguinte forma:

ItemTipoDescrição
nameNome do argumento, que é fornecido ao LLM.
descriptionDescrição do argumento pela qual o LLM pode entender e decidir qual valor deve ser preenchido.
requiredBooleanoArgumento obrigatório ou não.

As propriedades do template de requisição são definidas da seguinte forma:

ItemDescrição
methodMétodo HTTP
urlTemplate de URL da HTTP API de destino
headersCabeçalhos HTTP

Os cabeçalhos HTTP são definidos da seguinte forma:

ItemDescrição
keyChave do cabeçalho
valueTemplate do valor do cabeçalho

As propriedades do template de resposta são definidas da seguinte forma:

ItemDescrição
bodyTemplate do corpo da resposta

Contribuição

Todos os tipos de contribuição são bem-vindos.