Skip to main content
Glama

MCP Gateway

by Timandes
README.md5.53 kB
# MCP Gateway MCP (Model Context Protocol) Gateway can translate MCP tool callings to traditional HTTP API requests. It can provide a configurable way to get existing HTTP API to MCP territory. ## Getting Started Create config file from `config.example.yaml`: ```shell $ cp config.example.yaml config.yaml ``` Edit `config.yaml` file, map all APIs to MCP tools. Then start launch it with SSE transport: ```shell $ 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) ``` Default is 3001. ## Server Control ### Change Port Provide parameter `--port=<port_no>` in command line will change the port to SSE transport. Launch gateway with port 3002: ```shell $ 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) ``` ### stdio Transport Provide parameter `--transport=stdio` in command line will change the transport to stdio. E.G.: ```shell $ uv run mcp-gateway --transport=stdio ``` It's meaningless to **manually** launch gateway in stdio transport. You can configure in Cursor or Cline like: ```json { "mcpServers": { "mcp-gateway": { "command": "uv", "args": ["run", "mcp-gateway", "--transport=stdio"] } } } ``` Or MCP Inspector with form values: | Item | Value | | -------------- | --------------------------------- | | Transport Type | STDIO | | Command | uv | | Arguments | run mcp-gateway --transport=stdio | ## Configuration File There is two parts in configuration YAML, `server` and `tools`. `server` defines the basic info for gateway server use. `tools` defines the mapping from single MCP tool to HTTP API request. ```yaml 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 }} ``` ### Server | Item | Description | | ------ | ------------------------------------------------------------ | | name | Server name | | config | Key/Value pairs that can be referenced by var `{{.config.xxx}}` in templates | ### Tools `tools` is list of MCP tools mapping. Single tool props. are defined as follows: | Item | Description | | ---------------- | ------------------------------------------------------------ | | name | Tool name (Function name), which is provided to LLM. | | description | Tool description through which LLM can understand what the tool could do. | | args | Arguments of tool (Function arguments). | | requestTemplate | Request mapping to target HTTP API. | | responseTemplate | Response mapping for response of target HTTP API. | Single argument props. are defined as follows: | Item | Type | Description | | ----------- | ------- | ------------------------------------------------------------ | | name | | Argument name, which is provided to LLM. | | description | | Argument description through which LLM can understand and decide what value should be filled. | | required | Boolean | Required argument or not. | Request template props. are defined as follows: | Item | Description | | ------- | ---------------------------- | | method | HTTP method | | url | Target HTTP API url template | | headers | HTTP headers | HTTP headers are defined as follows: | Item | Description | | ----- | --------------------- | | key | Header key | | value | Header value template | Response template props are defined as follows: | Item | Description | | ---- | ---------------------- | | body | Response body template | ## Contribution All kinds of contribution are welcomed.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Timandes/mcp-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server