VOOZH about

URL: https://glama.ai/mcp/servers/zhangpanda/gomcp?locale=ko-KR

⇱ GoMCP by zhangpanda | Glama


GoMCP

πŸ‘ Go Version
πŸ‘ License
πŸ‘ Release
πŸ‘ gomcp MCP server

Go둜 MCP μ„œλ²„λ₯Ό κ΅¬μΆ•ν•˜λŠ” λΉ λ₯΄κ³  κ΄€μš©μ μΈ λ°©λ²•μž…λ‹ˆλ‹€.

δΈ­ζ–‡ζ–‡ζ‘£


πŸš€ λΉ λ₯Έ 링크


Related MCP server: Filesystem MCP Server

🎯 GoMCPλž€ λ¬΄μ—‡μΈκ°€μš”?

GoMCPλŠ” λ‹¨μˆœν•œ SDKκ°€ μ•„λ‹Œ, Model Context Protocol (MCP) μ„œλ²„λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. **"MCPλ₯Ό μœ„ν•œ Gin"**이라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

MCPλŠ” AI μ• ν”Œλ¦¬μΌ€μ΄μ…˜(Claude Desktop, Cursor, Kiro, VS Code Copilot)이 μ™ΈλΆ€ 도ꡬλ₯Ό ν˜ΈμΆœν•˜κ³ , 데이터 μ†ŒμŠ€λ₯Ό 읽고, ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•  수 있게 ν•΄μ£ΌλŠ” κ°œλ°©ν˜• ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€. GoMCPλ₯Ό μ‚¬μš©ν•˜λ©΄ μ΄λŸ¬ν•œ μ„œλ²„λ₯Ό 맀우 μ‰½κ²Œ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ™œ GoMCPμΈκ°€μš”?

mcp-go (mark3labs)

곡식 Go SDK

GoMCP

μˆ˜μ€€

SDK

SDK

ν”„λ ˆμž„μ›Œν¬

μŠ€ν‚€λ§ˆ 생성

μˆ˜λ™

jsonschema νƒœκ·Έ

mcp νƒœκ·Έ + μžλ™ 검증

미듀웨어

κΈ°λ³Έ ν›…

μ—†μŒ

전체 체인 (둜거, 인증, 속도 μ œν•œ, OTel λ“±)

도ꡬ κ·Έλ£Ή

μ—†μŒ

μ—†μŒ

지원 (user.get, admin.delete)

Gin 라우트 κ°€μ Έμ˜€κΈ°

μ—†μŒ

μ—†μŒ

βœ… ν•œ 쀄

OpenAPI/Swagger κ°€μ Έμ˜€κΈ°

μ—†μŒ

μ—†μŒ

βœ… ν•œ 쀄

gRPC μ„œλΉ„μŠ€ κ°€μ Έμ˜€κΈ°

μ—†μŒ

μ—†μŒ

βœ…

λ‚΄μž₯ 인증

μ—†μŒ

μ—†μŒ

Bearer, API Key, Basic + RBAC

μΈμŠ€νŽ™ν„° UI

μ—†μŒ

μ—†μŒ

βœ…

ν…ŒμŠ€νŠΈ μœ ν‹Έλ¦¬ν‹°

κΈ°λ³Έ

μ—†μŒ

mcptest νŒ¨ν‚€μ§€


πŸ› οΈ 기술 μŠ€νƒ

ν™˜κ²½ μš”κ΅¬ 사항

μš”κ΅¬ 사항

버전

Go

β‰₯ 1.25

MCP ν”„λ‘œν† μ½œ

2024-11-05 (2025-11-25와 ν•˜μœ„ ν˜Έν™˜)

핡심 μ˜μ‘΄μ„±

기술

μ„€λͺ…

Go ν‘œμ€€ 라이브러리

핡심 ν”„λ ˆμž„μ›Œν¬ β€” μ™ΈλΆ€ μ˜μ‘΄μ„± μ—†μŒ

Gin

μ–΄λŒ‘ν„° μ „μš© β€” κΈ°μ‘΄ Gin 라우트 κ°€μ Έμ˜€κΈ°

gRPC

μ–΄λŒ‘ν„° μ „μš© β€” gRPC μ„œλΉ„μŠ€ κ°€μ Έμ˜€κΈ°

OpenTelemetry

선택 사항 β€” λΆ„μ‚° 좔적

YAML v3

κ³΅κΈ‰μž μ „μš© β€” 도ꡬ μ •μ˜ ν•« λ¦¬λ‘œλ“œ


🌟 핡심 κΈ°λŠ₯

πŸ”§ 도ꡬ 개발

  • ꡬ쑰체 νƒœκ·Έ μžλ™ μŠ€ν‚€λ§ˆ β€” Go ꡬ쑰체와 mcp νƒœκ·Έλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄ JSON μŠ€ν‚€λ§ˆκ°€ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

  • νƒ€μž… μ§€μ • ν•Έλ“€λŸ¬ β€” func(*Context, Input) (Output, error) β€” μˆ˜λ™ λ§€κ°œλ³€μˆ˜ νŒŒμ‹±μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.

  • λ§€κ°œλ³€μˆ˜ 검증 β€” ν•„μˆ˜, μ΅œμ†Œ/μ΅œλŒ€, μ—΄κ±°ν˜•, νŒ¨ν„΄ β€” ν•Έλ“€λŸ¬ μ‹€ν–‰ 전에 κ²€μ¦λ©λ‹ˆλ‹€.

  • μ»΄ν¬λ„ŒνŠΈ 버전 관리 β€” μ—¬λŸ¬ 버전을 λ“±λ‘ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈκ°€ name@version으둜 ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 비동기 μž‘μ—… β€” 였래 κ±Έλ¦¬λŠ” λ„κ΅¬λŠ” μž‘μ—… IDλ₯Ό λ°˜ν™˜ν•˜λ©°, 폴링 및 μ·¨μ†Œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

πŸ”Œ μ–΄λŒ‘ν„° (핡심 차별점)

  • Gin μ–΄λŒ‘ν„° β€” κΈ°μ‘΄ Gin 라우트λ₯Ό ν•œ μ€„λ‘œ MCP λ„κ΅¬λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

  • OpenAPI μ–΄λŒ‘ν„° β€” Swagger/OpenAPI 3.x λ¬Έμ„œμ—μ„œ 도ꡬλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

  • gRPC μ–΄λŒ‘ν„° β€” gRPC μ„œλΉ„μŠ€ λ©”μ„œλ“œλ₯Ό MCP λ„κ΅¬λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

πŸ” λ³΄μ•ˆ

  • BearerAuth β€” JWT 토큰 검증

  • APIKeyAuth β€” 헀더λ₯Ό ν†΅ν•œ API ν‚€ 검증

  • BasicAuth β€” HTTP κΈ°λ³Έ 인증

  • RequireRole / RequirePermission β€” 도ꡬ 그룹에 λŒ€ν•œ RBAC κΆŒν•œ λΆ€μ—¬

🧩 ν”„λ ˆμž„μ›Œν¬ κΈ°λŠ₯

  • 미듀웨어 체인 β€” 둜거, 볡ꡬ, μš”μ²­ ID, νƒ€μž„μ•„μ›ƒ, 속도 μ œν•œ, OpenTelemetry

  • 도ꡬ κ·Έλ£Ή β€” 접두사와 κ·Έλ£Ή μˆ˜μ€€ λ―Έλ“€μ›¨μ–΄λ‘œ 도ꡬ ꡬ성

  • λ¦¬μ†ŒμŠ€ 및 ν”„λ‘¬ν”„νŠΈ β€” URI ν…œν”Œλ¦Ώ 및 λ§€κ°œλ³€μˆ˜ν™”λœ ν”„λ‘¬ν”„νŠΈλ₯Ό ν¬ν•¨ν•œ 전체 MCP 지원

  • μžλ™ μ™„μ„± β€” ν”„λ‘¬ν”„νŠΈ/λ¦¬μ†ŒμŠ€ μΈμˆ˜μ— λŒ€ν•œ κ°’ μ œμ•ˆ

πŸš€ ν”„λ‘œλ•μ…˜ μ€€λΉ„ μ™„λ£Œ

  • 닀쀑 전솑 β€” stdio (Claude Desktop, Cursor, Kiro) 및 SSEλ₯Ό μ‚¬μš©ν•˜λŠ” 슀트리밍 κ°€λŠ₯ HTTP

  • MCP μΈμŠ€νŽ™ν„° β€” 도ꡬ 탐색 및 ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ λ‚΄μž₯ μ›Ή 디버그 UI

  • ν•« λ¦¬λ‘œλ“œ β€” 파일 κ°μ‹œλ₯Ό 톡해 YAML νŒŒμΌμ—μ„œ 도ꡬ μ •μ˜ λ‘œλ“œ

  • mcptest νŒ¨ν‚€μ§€ β€” μŠ€λƒ…μƒ· 지원을 ν¬ν•¨ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈμš© 인메λͺ¨λ¦¬ ν΄λΌμ΄μ–ΈνŠΈ


πŸ—οΈ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ User Code β”‚
β”‚ s.Tool() / s.ToolFunc() / s.Resource() / s.Prompt() β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Framework Core β”‚
β”‚ Router β†’ Middleware Chain β†’ Validation β†’ Handler β†’ Result β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Schema β”‚ Validator β”‚ Adapters β”‚ Observability β”‚
β”‚ Generator β”‚ Engine β”‚ Gin/OpenAPI/ β”‚ OTel / Logger β”‚
β”‚ (mcp tags) β”‚ (auto) β”‚ gRPC β”‚ / Inspector β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Protocol Layer β”‚
β”‚ JSON-RPC 2.0 / MCP / Capability Negotiation β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Transport Layer β”‚
β”‚ stdio / Streamable HTTP + SSE β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ν”„λ‘œμ νŠΈ ꡬ쑰

gomcp/
β”œβ”€β”€ server.go # Server core, tool/resource/prompt registration
β”œβ”€β”€ context.go # Request context with typed accessors
β”œβ”€β”€ group.go # Tool groups with prefix naming
β”œβ”€β”€ middleware.go # Middleware interface and chain execution
β”œβ”€β”€ middleware_builtin.go # Logger, Recovery, RequestID, Timeout, RateLimit
β”œβ”€β”€ middleware_auth.go # BearerAuth, APIKeyAuth, BasicAuth, RBAC
β”œβ”€β”€ middleware_otel.go # OpenTelemetry tracing
β”œβ”€β”€ schema/ # struct tag β†’ JSON Schema generator + validator
β”œβ”€β”€ transport/ # stdio + Streamable HTTP
β”œβ”€β”€ adapter/ # Gin, OpenAPI, gRPC adapters
β”œβ”€β”€ mcptest/ # Testing utilities
β”œβ”€β”€ task.go # Async task support
β”œβ”€β”€ completion.go # Auto-completions
β”œβ”€β”€ inspector.go # Web debug UI
β”œβ”€β”€ provider.go # Hot-reload from YAML
└── examples/ # Working examples

πŸ“¦ μ„€μΉ˜

go get github.com/zhangpanda/gomcp

⚑ λΉ λ₯Έ μ‹œμž‘

5μ€„λ‘œ λ§Œλ“œλŠ” MCP μ„œλ²„

package main

import (
 "fmt"
 "github.com/zhangpanda/gomcp"
)

type SearchInput struct {
 Query string `json:"query" mcp:"required,desc=Search keyword"`
 Limit int `json:"limit" mcp:"default=10,min=1,max=100"`
}

type SearchResult struct {
 Items []string `json:"items"`
 Total int `json:"total"`
}

func main() {
 s := gomcp.New("my-server", "1.0.0")

 s.ToolFunc("search", "Search documents by keyword", func(ctx *gomcp.Context, in SearchInput) (SearchResult, error) {
 items := []string{fmt.Sprintf("Result for %q", in.Query)}
 return SearchResult{Items: items, Total: len(items)}, nil
 })

 s.Stdio()
}

SearchInput κ΅¬μ‘°μ²΄λŠ” λ‹€μŒ JSON μŠ€ν‚€λ§ˆλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€:

{
 "type": "object",
 "properties": {
 "query": { "type": "string", "description": "Search keyword" },
 "limit": { "type": "integer", "default": 10, "minimum": 1, "maximum": 100 }
 },
 "required": ["query"]
}

잘λͺ»λœ λ§€κ°œλ³€μˆ˜λŠ” ν•Έλ“€λŸ¬κ°€ μ‹€ν–‰λ˜κΈ° 전에 κ±°λΆ€λ©λ‹ˆλ‹€:

validation failed: query: required; limit: must be <= 100

πŸ“– μ‚¬μš© κ°€μ΄λ“œ

ꡬ쑰체 νƒœκ·Έ μ°Έμ‘°

νƒœκ·Έ

νƒ€μž…

μ„€λͺ…

μ˜ˆμ‹œ

required

ν”Œλž˜κ·Έ

ν•„μˆ˜ ν•„λ“œ

mcp:"required"

desc

λ¬Έμžμ—΄

μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” μ„€λͺ…

mcp:"desc=검색 ν‚€μ›Œλ“œ"

default

μž„μ˜

κΈ°λ³Έκ°’

mcp:"default=10"

min

숫자

μ΅œμ†Œκ°’ (포함)

mcp:"min=0"

max

숫자

μ΅œλŒ€κ°’ (포함)

mcp:"max=100"

enum

λ¬Έμžμ—΄

νŒŒμ΄ν”„λ‘œ κ΅¬λΆ„λœ ν—ˆμš© κ°’

`mcp:"enum=asc

desc"`

pattern

λ¬Έμžμ—΄

μ •κ·œμ‹ 검증

mcp:"pattern=^[a-z]+$"

μ‘°ν•©: mcp:"required,desc=μ‚¬μš©μž 이메일,pattern=^[^@]+@[^@]+$"

지원 νƒ€μž…: string, int, float64, bool, []T, 쀑첩 ꡬ쑰체.

도ꡬ

κ°„λ‹¨ν•œ ν•Έλ“€λŸ¬:

s.Tool("hello", "Say hello", func(ctx *gomcp.Context) (*gomcp.CallToolResult, error) {
 return ctx.Text("Hello, " + ctx.String("name")), nil
})

νƒ€μž… μ§€μ • ν•Έλ“€λŸ¬ (ꢌμž₯):

type Input struct {
 Name string `json:"name" mcp:"required,desc=User name"`
 Email string `json:"email" mcp:"required,pattern=^[^@]+@[^@]+$"`
}

s.ToolFunc("create_user", "Create user", func(ctx *gomcp.Context, in Input) (User, error) {
 return db.CreateUser(in.Name, in.Email)
})

λ¦¬μ†ŒμŠ€

// Static
s.Resource("config://app", "App config", func(ctx *gomcp.Context) (any, error) {
 return map[string]any{"version": "1.0"}, nil
})

// Dynamic URI template
s.ResourceTemplate("db://{table}/{id}", "DB record", func(ctx *gomcp.Context) (any, error) {
 return db.Find(ctx.String("table"), ctx.String("id")), nil
})

ν”„λ‘¬ν”„νŠΈ

s.Prompt("code_review", "Code review",
 []gomcp.PromptArgument{gomcp.PromptArg("language", "Language", true)},
 func(ctx *gomcp.Context) ([]gomcp.PromptMessage, error) {
 return []gomcp.PromptMessage{
 gomcp.UserMsg(fmt.Sprintf("Review this %s code for bugs.", ctx.String("language"))),
 }, nil
 },
)

미듀웨어

s.Use(gomcp.Logger()) // Log tool name + duration
s.Use(gomcp.Recovery()) // Recover from panics
s.Use(gomcp.RequestID()) // Unique request ID
s.Use(gomcp.Timeout(10 * time.Second)) // Deadline enforcement
s.Use(gomcp.RateLimit(100)) // 100 calls/minute
s.Use(gomcp.OpenTelemetry()) // Distributed tracing
s.Use(gomcp.BearerAuth(tokenValidator)) // JWT auth
s.Use(gomcp.APIKeyAuth("X-API-Key", keyValidator)) // API key auth

μ‚¬μš©μž μ •μ˜ 미듀웨어:

func AuditLog() gomcp.Middleware {
 return func(ctx *gomcp.Context, next func() error) error {
 start := time.Now()
 err := next()
 log.Printf("tool=%s duration=%s err=%v", ctx.String("_tool_name"), time.Since(start), err)
 return err
 }
}

도ꡬ κ·Έλ£Ή

user := s.Group("user", authMiddleware)
user.Tool("get", "Get user", getUser) // β†’ user.get
user.Tool("update", "Update user", updateUser) // β†’ user.update

admin := user.Group("admin", gomcp.RequireRole("admin"))
admin.Tool("delete", "Delete user", deleteUser) // β†’ user.admin.delete

μ–΄λŒ‘ν„°

Gin β€” κΈ°μ‘΄ APIλ₯Ό κ°€μ Έμ˜€λŠ” ν•œ 쀄 μ½”λ“œ:

adapter.ImportGin(s, ginRouter, adapter.ImportOptions{
 IncludePaths: []string{"/api/v1/"},
})
// GET /api/v1/users/:id β†’ Tool get_api_v1_users_by_id (id = required param)

OpenAPI β€” Swagger λ¬Έμ„œμ—μ„œ 생성:

adapter.ImportOpenAPI(s, "./swagger.yaml", adapter.OpenAPIOptions{
 TagFilter: []string{"pets"},
 ServerURL: "https://api.example.com",
})

gRPC:

adapter.ImportGRPC(s, grpcConn, adapter.GRPCOptions{
 Services: []string{"user.UserService"},
})

μ»΄ν¬λ„ŒνŠΈ 버전 관리

s.ToolFunc("search", "v1", searchV1, gomcp.Version("1.0"))
s.ToolFunc("search", "v2 with embeddings", searchV2, gomcp.Version("2.0"))
// "search" β†’ latest, "search@1.0" β†’ exact version

비동기 μž‘μ—…

s.AsyncTool("report", "Generate report", func(ctx *gomcp.Context) (*gomcp.CallToolResult, error) {
 // long-running work
 return ctx.Text("done"), nil
})
// Client gets taskId immediately, polls tasks/get, can tasks/cancel

ν•« λ¦¬λ‘œλ“œ

s.LoadDir("./tools/", gomcp.DirOptions{Watch: true})

MCP μΈμŠ€νŽ™ν„°

s.Dev(":9090") // http://localhost:9090 β€” browse and test all tools

ν…ŒμŠ€νŠΈ

func TestSearch(t *testing.T) {
 c := mcptest.NewClient(t, setupServer())
 c.Initialize()

 result := c.CallTool("search", map[string]any{"query": "golang"})
 result.AssertNoError(t)
 result.AssertContains(t, "golang")

 mcptest.MatchSnapshot(t, "search_result", result)
}

전솑 방식

s.Stdio() // Claude Desktop, Cursor, Kiro
s.HTTP(":8080") // Remote deployment with SSE
s.Handler() // Embed in existing HTTP server

AI ν΄λΌμ΄μ–ΈνŠΈμ™€ ν•¨κ»˜ μ‚¬μš©

{
 "mcpServers": {
 "my-server": {
 "command": "/path/to/your/binary"
 }
 }
}

Claude Desktop, Cursor, Kiro, Windsurf, VS Code Copilot 및 λͺ¨λ“  MCP ν˜Έν™˜ ν΄λΌμ΄μ–ΈνŠΈμ™€ μž‘λ™ν•©λ‹ˆλ‹€.


πŸ“‹ λ‘œλ“œλ§΅

  • [x] 핡심: 전체 MCP ν”„λ‘œν† μ½œ 지원을 ν¬ν•¨ν•œ 도ꡬ, λ¦¬μ†ŒμŠ€, ν”„λ‘¬ν”„νŠΈ

  • [x] ꡬ쑰체 νƒœκ·Έ μžλ™ μŠ€ν‚€λ§ˆ 생성 + λ§€κ°œλ³€μˆ˜ 검증

  • [x] 미듀웨어 체인 (둜거, 볡ꡬ, 속도 μ œν•œ, νƒ€μž„μ•„μ›ƒ, μš”μ²­ ID)

  • [x] 인증 미듀웨어 (Bearer / API Key / Basic) + RBAC κΆŒν•œ λΆ€μ—¬

  • [x] 접두사 λͺ…λͺ… 및 쀑첩 그룹을 μ§€μ›ν•˜λŠ” 도ꡬ κ·Έλ£Ή

  • [x] stdio + SSE μ•Œλ¦Όμ„ ν¬ν•¨ν•œ 슀트리밍 κ°€λŠ₯ HTTP 전솑

  • [x] Gin μ–΄λŒ‘ν„° β€” κΈ°μ‘΄ Gin 라우트λ₯Ό MCP λ„κ΅¬λ‘œ κ°€μ Έμ˜€κΈ°

  • [x] OpenAPI μ–΄λŒ‘ν„° β€” Swagger/OpenAPI λ¬Έμ„œμ—μ„œ 도ꡬ 생성

  • [x] gRPC μ–΄λŒ‘ν„° β€” gRPC μ„œλΉ„μŠ€λ₯Ό MCP λ„κ΅¬λ‘œ κ°€μ Έμ˜€κΈ°

  • [x] OpenTelemetry 톡합

  • [x] μŠ€λƒ…μƒ· ν…ŒμŠ€νŠΈλ₯Ό ν¬ν•¨ν•œ mcptest νŒ¨ν‚€μ§€

  • [x] μ»΄ν¬λ„ŒνŠΈ 버전 관리 + 지원 쀑단(deprecation)

  • [x] 폴링 및 μ·¨μ†Œλ₯Ό μ§€μ›ν•˜λŠ” 비동기 μž‘μ—…

  • [x] MCP μΈμŠ€νŽ™ν„° μ›Ή 디버그 UI

  • [x] YAMLμ—μ„œ λ‘œλ“œν•˜λŠ” ν•« λ¦¬λ‘œλ“œ κ³΅κΈ‰μž

  • [x] ν”„λ‘¬ν”„νŠΈ/λ¦¬μ†ŒμŠ€ μΈμˆ˜μ— λŒ€ν•œ μžλ™ μ™„μ„±


🀝 ν”Όλ“œλ°± 및 지원

πŸ’‘ ꢌμž₯ 읽기: μ§ˆλ¬Έν•˜λŠ” 방법 (Smart Way)


πŸ”’ λ³΄μ•ˆ

λ³΄μ•ˆ 취약점을 λ³΄κ³ ν•˜λ €λ©΄ SECURITY.mdλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.


βš–οΈ μ €μž‘κΆŒ 및 λΌμ΄μ„ μŠ€

Copyright Β© 2026 GoMCP Contributors

Apache License 2.0에 따라 λΌμ΄μ„ μŠ€κ°€ λΆ€μ—¬λ©λ‹ˆλ‹€.

μ€‘μš” μ°Έκ³  사항

  1. 이 ν”„λ‘œμ νŠΈλŠ” Apache 2.0 λΌμ΄μ„ μŠ€μ— 따라 개인 및 상업적 μš©λ„λ‘œ μ˜€ν”ˆ μ†ŒμŠ€μ΄λ©° λ¬΄λ£Œμž…λ‹ˆλ‹€.

  2. μ†Œν”„νŠΈμ›¨μ–΄μ˜ λͺ¨λ“  사본 λ˜λŠ” 상당 뢀뢄에 μ €μž‘κΆŒ κ³ μ§€, λΌμ΄μ„ μŠ€ ν…μŠ€νŠΈ 및 λͺ¨λ“  귀속 κ³ μ§€λ₯Ό μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  3. Apache 2.0 λΌμ΄μ„ μŠ€μ—λŠ” κΈ°μ—¬μžλ‘œλΆ€ν„° μ‚¬μš©μžμ—κ²Œ λΆ€μ—¬λ˜λŠ” λͺ…μ‹œμ μΈ νŠΉν—ˆκΆŒ λΆ€μ—¬κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

  4. 이 ν”„λ‘œμ νŠΈμ— λŒ€ν•œ κΈ°μ—¬λŠ” λ™μΌν•œ Apache 2.0 λΌμ΄μ„ μŠ€μ— 따라 λΌμ΄μ„ μŠ€κ°€ λΆ€μ—¬λ©λ‹ˆλ‹€.

  5. μ €μž‘κΆŒ κ³ μ§€λ₯Ό λ¬΄λ‹¨μœΌλ‘œ μ œκ±°ν•  경우 법적 μ‘°μΉ˜κ°€ μ·¨ν•΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΉν—ˆ κ³ μ§€

이 ν”„λ ˆμž„μ›Œν¬μ˜ νŠΉμ • κΈ°λŠ₯(ꡬ쑰체 νƒœκ·Έ μŠ€ν‚€λ§ˆ 생성, HTTP-to-MCP μžλ™ μ–΄λŒ‘ν„°, OpenAPI-to-MCP μžλ™ μ–΄λŒ‘ν„°)은 ν˜„μž¬ νŠΉν—ˆ μΆœμ› μ€‘μž…λ‹ˆλ‹€. Apache 2.0 λΌμ΄μ„ μŠ€λŠ” κ·€ν•˜μ—κ²Œ 이 μ†Œν”„νŠΈμ›¨μ–΄μ˜ μΌλΆ€λ‘œμ„œ μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλŠ” 영ꡬ적이고 μ „ 세계적이며 λ‘œμ—΄ν‹°κ°€ μ—†λŠ” νŠΉν—ˆ λΌμ΄μ„ μŠ€λ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€.


⭐ Star History

GoMCPκ°€ μœ μš©ν•˜λ‹€λ©΄ λ³„ν‘œλ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”! λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ ν”„λ‘œμ νŠΈλ₯Ό λ°œκ²¬ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

A
license - permissive license
A
quality
A
maintenance

Maintenance

–Maintainers
<1hResponse time
6dRelease cycle
3Releases (12mo)
Commit activity

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/zhangpanda/gomcp'

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