Skip to main content
Glama
haode01

romate-mcp-server

by haode01

๐Ÿš€ mcp-proxy-server

HTTP MCP Gateway โ€” ๅฐ†ๆœฌๅœฐ stdio MCP ๅทฅๅ…ทๆšด้œฒไธบ HTTP/SSE ๅ่ฎฎใ€‚

ไฝ ๅช้œ€่ฆ้…็ฝฎๆœฌๅœฐๆ‰ง่กŒ็š„ๅ‘ฝไปค๏ผŒromate-mcp-server ๅฐฑไผš่‡ชๅŠจๅฐ†ไปปๆ„ stdio MCP ๆœๅŠกๅ™จๆณจๅ†Œไธบ HTTP ็ซฏ็‚น๏ผŒ่ฎฉ่ฟœ็จ‹ๅฎขๆˆท็ซฏ๏ผˆๅฆ‚ Claude Desktopใ€Cline ็ญ‰๏ผ‰้€š่ฟ‡็ฝ‘็ปœ่ฐƒ็”จใ€‚


็‰นๆ€ง

็‰นๆ€ง

่ฏดๆ˜Ž

๐Ÿ”Œ ้›ถไปฃ็ ้›†ๆˆ

ๅช้œ€ YAML ้…็ฝฎๅ‘ฝไปค๏ผŒๆ— ้œ€ไฟฎๆ”นไปปไฝ• MCP ๆœๅŠกๅ™จไปฃ็ 

๐ŸŒ HTTP + SSE ๅŒๅ่ฎฎ

ๆ”ฏๆŒ Streamable HTTP ๅ’Œ Server-Sent Events ไธค็งไผ ่พ“ๆ–นๅผ

๐Ÿ”— ่šๅˆๆจกๅผ

ๅ•ไธ€่ทฏๅพ„่šๅˆๆ‰€ๆœ‰ๅทฅๅ…ท๏ผŒ่‡ชๅŠจ proxyName_toolName ๅ‰็ผ€่ทฏ็”ฑ

๐Ÿ” Bearer Token ้‰ดๆƒ

ๅฏ้€‰ Token ้‰ดๆƒ๏ผŒๆ”ฏๆŒๆŽ’้™ค่ทฏๅพ„

โ™ป๏ธ ่‡ชๅŠจ้‡ๅฏ

ๅญ่ฟ›็จ‹ๅดฉๆบƒๅŽ่‡ชๅŠจ้‡ๅฏ๏ผŒๆŒ‡ๆ•ฐ้€€้ฟ็ญ–็•ฅ

โฑ๏ธ ่ถ…ๆ—ถๆŽงๅˆถ

ๆกๆ‰‹่ถ…ๆ—ถ 10s๏ผŒๅทฅๅ…ท่ฐƒ็”จ่ถ…ๆ—ถ 60s

๐Ÿ”„ ้…็ฝฎ็ƒญ้‡่ฝฝ

็›‘ๅฌ้…็ฝฎๆ–‡ไปถๅ˜ๆ›ด๏ผŒ่‡ชๅŠจๅขžๅˆ ๆ”นไปฃ็†ๅฎžไพ‹

๐Ÿฉบ ๅฅๅบทๆฃ€ๆŸฅ

/health ๅ’Œ /tools ็ซฏ็‚น๏ผŒๅฎžๆ—ถ็›‘ๆŽง็Šถๆ€


Related MCP server: mcp_sdk_eyra_accelerator

ๅฟซ้€Ÿๅผ€ๅง‹

ๅฎ‰่ฃ…

git clone https://github.com/haode01/mcp-proxy-server.git && cd romate-mcp-server
npm install
npm run build

้…็ฝฎ

ๅˆ›ๅปบ config.yaml๏ผš

server:
  port: 3100
  host: "0.0.0.0"
  auth:
    token: "your-secret-token"      # ๅฏ้€‰๏ผŒBearer Token ้‰ดๆƒ
    excludePaths:
      - "/health"                    # ๆ— ้œ€้‰ดๆƒ็š„่ทฏๅพ„

tools:
  - name: "filesystem"
    description: "ๆ–‡ไปถ็ณป็ปŸๆ“ไฝœๅทฅๅ…ท"
    command: "npx"
    args:
      - "-y"
      - "@modelcontextprotocol/server-filesystem"
      - "/tmp"
    restart: true
    restartDelay: 2000

  - name: "github"
    description: "GitHub API ๅทฅๅ…ท"
    command: "npx"
    args:
      - "-y"
      - "@modelcontextprotocol/server-github"
    env:
      GITHUB_TOKEN: "${GITHUB_TOKEN}"   # ๆ”ฏๆŒ็Žฏๅขƒๅ˜้‡ๆ’ๅ€ผ

ๅฏๅŠจ

# ๅผ€ๅ‘ๆจกๅผ๏ผˆ็ƒญ้‡่ฝฝ๏ผ‰
npm run dev -- ./config.yaml

# ็”Ÿไบงๆจกๅผ
npm run build
node dist/index.js ./config.yaml

่ทฏ็”ฑๆ€ป่งˆ

่ทฏๅพ„

ๆ–นๆณ•

่ฏดๆ˜Ž

/health

GET

ๅฅๅบทๆฃ€ๆŸฅ๏ผˆๆ— ้œ€้‰ดๆƒ๏ผ‰

/tools

GET

ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅทฒๆณจๅ†Œๅทฅๅ…ท

/mcp/:toolName

POST

ๅ•ๅทฅๅ…ท Streamable HTTP

/mcp/:toolName/sse

GET

ๅ•ๅทฅๅ…ท SSE ็ซฏ็‚น

/mcp/:toolName/message?sessionId=

POST

ๅ•ๅทฅๅ…ท SSE ๆถˆๆฏ

/mcp

POST

่šๅˆๆจกๅผ โ€” ๆ‰€ๆœ‰ๅทฅๅ…ท็ปŸไธ€ๅ…ฅๅฃ

/mcp/sse

GET

่šๅˆๆจกๅผ SSE ็ซฏ็‚น

/mcp/message?sessionId=

POST

่šๅˆๆจกๅผ SSE ๆถˆๆฏ


ไฝฟ็”จ็คบไพ‹

ๅ•ๅทฅๅ…ทๆจกๅผ

# ๅˆ—ๅ‡บๅทฅๅ…ท
curl -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -X POST http://localhost:3100/mcp/filesystem \
  -d '{"method":"tools/list","id":1}'

# ่ฐƒ็”จๅทฅๅ…ท
curl -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -X POST http://localhost:3100/mcp/filesystem \
  -d '{
    "method": "tools/call",
    "params": {
      "name": "read_file",
      "arguments": { "path": "/tmp/test.txt" }
    },
    "id": 2
  }'

่šๅˆๆจกๅผ

่šๅˆๆจกๅผไธ‹๏ผŒๅทฅๅ…ทๅ่‡ชๅŠจๆทปๅŠ  {proxyName}_ ๅ‰็ผ€ไปฅ้ฟๅ…ๅ†ฒ็ช๏ผš

# ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅทฅๅ…ท๏ผˆ่ฟ”ๅ›ž echo_echo, filesystem_read_file, github_search_repos ็ญ‰๏ผ‰
curl -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -X POST http://localhost:3100/mcp \
  -d '{"method":"tools/list","id":1}'

# ่ฐƒ็”จๅทฅๅ…ท โ€” ไฝฟ็”จ proxyName_toolName ๆ ผๅผ
curl -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -X POST http://localhost:3100/mcp \
  -d '{
    "method": "tools/call",
    "params": {
      "name": "filesystem_read_file",
      "arguments": { "path": "/tmp/test.txt" }
    },
    "id": 2
  }'

SSE ๆจกๅผ๏ผˆ้€‚็”จไบŽ Claude Desktop ็ญ‰ๅฎขๆˆท็ซฏ๏ผ‰

# 1. ๅฎขๆˆท็ซฏๅปบ็ซ‹ SSE ่ฟžๆŽฅ
GET /mcp/filesystem/sse
โ†’ event: endpoint
โ†’ data: http://localhost:3100/mcp/filesystem/message?sessionId=filesystem-1
โ†’ event: tools_list
โ†’ data: [...]

# 2. ๅฎขๆˆท็ซฏๅ‘ endpoint URL ๅ‘้€ JSON-RPC ่ฏทๆฑ‚
POST http://localhost:3100/mcp/filesystem/message?sessionId=filesystem-1
Content-Type: application/json

{"method":"tools/list","id":1}

# 3. ๅ“ๅบ”้€š่ฟ‡ SSE ่ฟžๆŽฅ่ฟ”ๅ›ž
โ†’ event: message
โ†’ data: {"jsonrpc":"2.0","result":{"tools":[...]},"id":1}

MCP ๅฎขๆˆท็ซฏ้…็ฝฎ

romate-mcp-server ๅ…ผๅฎนๆ‰€ๆœ‰ๆ”ฏๆŒ HTTP/SSE ไผ ่พ“็š„ MCP ๅฎขๆˆท็ซฏใ€‚ไปฅไธ‹ๆ˜ฏไธ€ไบ›ๅธธ่งๅฎขๆˆท็ซฏ็š„้…็ฝฎๆ–นๅผ๏ผš

Claude Desktop

ๅœจ claude_desktop_config.json ไธญๆทปๅŠ  MCP ๆœๅŠกๅ™จ้…็ฝฎ๏ผš

{
  "mcpServers": {
    "romate-filesystem": {
      "type": "sse",
      "url": "http://your-server:3100/mcp/filesystem/sse",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    },
    "romate-github": {
      "type": "sse",
      "url": "http://your-server:3100/mcp/github/sse",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    }
  }
}

Cline / Roo Code / Claude Dev

ๅœจ MCP ้…็ฝฎๆ–‡ไปถ๏ผˆ้€šๅธธไธบ ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json ๆˆ–็ฑปไผผ่ทฏๅพ„๏ผ‰ไธญๆทปๅŠ ๏ผš

{
  "mcpServers": {
    "romate-filesystem": {
      "type": "sse",
      "url": "http://your-server:3100/mcp/filesystem/sse",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    }
  }
}

่šๅˆๆจกๅผๅฎขๆˆท็ซฏ้…็ฝฎ

ๅฆ‚ๆžœๅธŒๆœ›ๅœจไธ€ไธช SSE ่ฟžๆŽฅไธญ่ฎฟ้—ฎๆ‰€ๆœ‰ๅทฅๅ…ท๏ผŒไฝฟ็”จ่šๅˆ็ซฏ็‚น๏ผš

{
  "mcpServers": {
    "romate-all-tools": {
      "type": "sse",
      "url": "http://your-server:3100/mcp/sse",
      "headers": {
        "Authorization": "Bearer your-secret-token"
      }
    }
  }
}

ๆณจๆ„๏ผš่šๅˆๆจกๅผไธ‹ๅทฅๅ…ทๅไผšๅธฆๆœ‰ {proxyName}_ ๅ‰็ผ€๏ผŒไพ‹ๅฆ‚ filesystem_read_fileใ€github_search_reposใ€‚

่‡ชๅฎšไน‰ๅฎขๆˆท็ซฏ๏ผˆStreamable HTTP๏ผ‰

ๆ”ฏๆŒ MCP Streamable HTTP ไผ ่พ“็š„ๅฎขๆˆท็ซฏๅฏไปฅ็›ดๆŽฅไฝฟ็”จ POST ็ซฏ็‚น๏ผš

POST http://your-server:3100/mcp/filesystem
Content-Type: application/json
Authorization: Bearer your-secret-token

{"method":"tools/list","id":1}

้…็ฝฎๅ‚่€ƒ

server ้…็ฝฎ

ๅญ—ๆฎต

็ฑปๅž‹

้ป˜่ฎคๅ€ผ

่ฏดๆ˜Ž

port

number

3100

HTTP ็›‘ๅฌ็ซฏๅฃ

host

string

"0.0.0.0"

็›‘ๅฌๅœฐๅ€

auth.token

string

โ€”

Bearer Token๏ผŒไธ้…็ฝฎๅˆ™ไธๅฏ็”จ้‰ดๆƒ

auth.excludePaths

string[]

["/health"]

ๆ— ้œ€้‰ดๆƒ็š„่ทฏๅพ„ๅ‰็ผ€

tools[] ้…็ฝฎ

ๅญ—ๆฎต

็ฑปๅž‹

้ป˜่ฎคๅ€ผ

่ฏดๆ˜Ž

name

string

โ€”

ๅฟ…ๅกซใ€‚ๅทฅๅ…ทๅ”ฏไธ€ๆ ‡่ฏ†ๅ

description

string

""

ๅทฅๅ…ทๆ่ฟฐ

command

string

โ€”

ๅฟ…ๅกซใ€‚ๅฏๅŠจๅ‘ฝไปค

args

string[]

[]

ๅ‘ฝไปคๅ‚ๆ•ฐ

env

object

{}

็Žฏๅขƒๅ˜้‡๏ผŒๆ”ฏๆŒ ${VAR_NAME} ๆ’ๅ€ผ

cwd

string

โ€”

ๅทฅไฝœ็›ฎๅฝ•

restart

boolean

true

ๅดฉๆบƒๅŽๆ˜ฏๅฆ่‡ชๅŠจ้‡ๅฏ

restartDelay

number

2000

้‡ๅฏๅŸบ็ก€ๅปถ่ฟŸ(ms)๏ผŒๆŒ‡ๆ•ฐ้€€้ฟ x2๏ผŒไธŠ้™ 30s


ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  HTTP Client                     โ”‚
โ”‚        (Claude Desktop, Cline, curl, etc.)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚ HTTP/SSE
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              romate-mcp-server                   โ”‚
โ”‚                                                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚  Auth    โ”‚  โ”‚  Routes  โ”‚  โ”‚  Health  โ”‚       โ”‚
โ”‚  โ”‚ Middlewareโ”‚  โ”‚  /mcp/*  โ”‚  โ”‚  /health โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ”‚                     โ”‚                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚            ProxyManager                      โ”‚ โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚ โ”‚
โ”‚  โ”‚  โ”‚ McpProxy โ”‚  โ”‚ McpProxy โ”‚  โ”‚ McpProxy โ”‚   โ”‚ โ”‚
โ”‚  โ”‚  โ”‚ (echo)   โ”‚  โ”‚(fs)      โ”‚  โ”‚(github)  โ”‚   โ”‚ โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ”‚              โ”‚              โ”‚
           โ–ผ              โ–ผ              โ–ผ
     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
     โ”‚  stdio   โ”‚  โ”‚  stdio   โ”‚  โ”‚  stdio   โ”‚
     โ”‚ MCP ่ฟ›็จ‹ โ”‚  โ”‚ MCP ่ฟ›็จ‹ โ”‚  โ”‚ MCP ่ฟ›็จ‹ โ”‚
     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅทฅไฝœๆต็จ‹

  1. ๅฏๅŠจ โ†’ ๅŠ ่ฝฝ YAML ้…็ฝฎ โ†’ ไธบๆฏไธชๅทฅๅ…ทๅˆ›ๅปบ McpProxy ๅฎžไพ‹

  2. ่ฟžๆŽฅ โ†’ ๆฏไธช McpProxy ้€š่ฟ‡ StdioClientTransport ๅฏๅŠจๅญ่ฟ›็จ‹ โ†’ ๅฎŒๆˆ MCP ๆกๆ‰‹ โ†’ ็ผ“ๅญ˜ tools/resources/prompts

  3. ไปฃ็† โ†’ HTTP ่ฏทๆฑ‚ๅˆฐ่พพ โ†’ ้‰ดๆƒ โ†’ ่ทฏ็”ฑๅˆฐๅฏนๅบ” McpProxy โ†’ JSON-RPC ่ฐƒ็”จ่ฝฌๅ‘ๅˆฐๅญ่ฟ›็จ‹ โ†’ ่ฟ”ๅ›ž็ป“ๆžœ

  4. ๅฎน้”™ โ†’ ๅญ่ฟ›็จ‹ๅดฉๆบƒ โ†’ onclose ่งฆๅ‘ โ†’ ๆŒ‡ๆ•ฐ้€€้ฟ่‡ชๅŠจ้‡ๅฏ๏ผˆrestart: true ๆ—ถ๏ผ‰

  5. ็ƒญ้‡่ฝฝ โ†’ ้…็ฝฎๆ–‡ไปถๅ˜ๆ›ด โ†’ ๅฏนๆฏ”ๆ–ฐๆ—ง้…็ฝฎ โ†’ ่‡ชๅŠจๅขž/ๅˆ /ๆ”นไปฃ็†ๅฎžไพ‹


ๅผ€ๅ‘

# ็ฑปๅž‹ๆฃ€ๆŸฅ
npm run typecheck

# ๅผ€ๅ‘ๆจกๅผ๏ผˆtsx watch ่‡ชๅŠจ้‡ๅฏ๏ผ‰
npm run dev -- ./config.yaml

# ๆž„ๅปบ
npm run build

# ็”ŸไบงๅฏๅŠจ
npm start -- ./config.yaml

่ฎธๅฏ่ฏ

MIT

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A dual-transport MCP server that exposes your API as tools to LLM clients, supporting both stdio transport for local clients like Claude Desktop and HTTP/SSE transport for remote clients like OpenAI's Responses API.
  • F
    license
    Not graded
    quality
    D
    maintenance
    A standalone MCP server that exposes API endpoints as tools for AI assistants by proxying requests to a target API defined in an OpenAPI specification. It supports various authentication methods and utilizes Server-Sent Events (SSE) to facilitate integration with clients like Claude and ChatGPT.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes any stdio-based MCP server to the internet via HTTP/SSE transport, enabling remote agents to access MCP tools over a network.
    21
    MIT

Latest Blog Posts

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/haode01/mcp-proxy-server'

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