Naver搜索MCP服务器

Naver搜索MCP服务器是一个通过SSE协议中转Naver搜索和DataLab Open API的单容器服务,支持LangChain等客户端实时通信。

  • by wookja-0
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 wookja-0/naver-mcp-server

使用说明

Naver Search MCP Server–SSE部署指南(单个Dockerfile)

Naver搜索MCP服务器是将Naver搜索和DataLab Open API作为服务器-发送事件(MCP)协议进行中继的单一容器服务。
您可以在一个Dockerfile中构建和运行。 NAVER_API_BASE_URL 您可以仅通过环境变量指定Naver API或代理。
应用程序在容器内部进行SSE通信 mcp-proxy使用。

该服务器旨在让LangChain等MCP客户端与Naver搜索和DataLab API进行实时通信。


1)环境变量

变量名 是否必需 默认值 说明
NAVER_API_BASE_URL 选择 https://openapi.naver.com Naver API默认URL或代理地址
NAVER_API_KEY 必需 - Naver API验证密钥
NAVER_CLIENT_ID 必需 - Naver API客户端ID
NAVER_CLIENT_SECRET 必需 - Naver API客户端机密
NAVER_PROFILE 选择-- 标识服务或部署环境的唯一配置文件ID
BRIDGE_PORT 选择 8080 服务器端口
NODE_ENV 选择 production Node环境变量

在应用程序内部 NAVER_API_BASE_URL 后面 /v1/search, /v1/datalab 路径将自动粘贴。
后行 /将自动删除。


2)源代码clone

git clone https://github.com/wookja-0/naver-mcp-server.git

3)构建/运行Docker

# 빌드
docker build -t <registry>/<repo>/naver-mcp:sse .

环境变量设置示例(未使用代理)

# NAVER_API_BASE_URL 생략 가능 (기본값: https://openapi.naver.com)

docker run -p 8080:8080   -e NAVER_API_KEY=aaaaaa   -e NAVER_CLIENT_ID=xxxxxxxx   -e NAVER_CLIENT_SECRET=yyyyyyyy   <registry>/<repo>/naver-mcp:sse

环境变量设置示例(使用代理)

docker run -p 8080:8080   -e NAVER_API_BASE_URL=http://<proxy-host>:<port>/naver   -e NAVER_API_KEY=aaaaaa   -e NAVER_CLIENT_ID=xxxxxxxx   -e NAVER_CLIENT_SECRET=yyyyyyyy  <registry>/<repo>/naver-mcp:sse

设置外部Proxy(NGINX)

# Naver API (MCP 용)
location /naver/ {
    proxy_pass https://openapi.naver.com/;
    proxy_set_header Host openapi.naver.com;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_ssl_verify off;
    proxy_ssl_server_name on;
    proxy_connect_timeout 30s;
    proxy_send_timeout 30s;
    proxy_read_timeout 30s;

    # SSL 설정 추가
    proxy_ssl_protocols TLSv1.2 TLSv1.3;
    proxy_ssl_ciphers HIGH:!aNULL:!MD5;
}

4)部署K8s时

apiVersion: v1
kind: ConfigMap
metadata:
  name: naver-mcp-config
data:
  NAVER_API_BASE_URL: "http://<proxy-host>:<port>/naver"  # 프록시 서버 사용 시 추가, 미사용 시 제외
  BRIDGE_PORT: "8080"
---
apiVersion: v1
kind: Secret
metadata:
  name: naver-mcp-secret
type: Opaque
stringData:
  NAVER_API_KEY: "<your-api-key>"
  NAVER_CLIENT_ID: "<your-client-id>"
  NAVER_CLIENT_SECRET: "<your-client-secret>"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: naver-mcp-server
  labels: { app: naver-mcp-server }
spec:
  replicas: 1
  selector:
    matchLabels: { app: naver-mcp-server }
  template:
    metadata:
      labels: { app: naver-mcp-server }
    spec:
      containers:
        - name: naver-mcp-server
          image: <registry>/<repo>/naver-mcp:sse
          imagePullPolicy: IfNotPresent
          envFrom:
            - secretRef:
                name: naver-mcp-secret
            - configMapRef:
                name: naver-mcp-config
          env:
            - name: LOG_DIR
              value: "/var/log/naver-mcp"
          ports:
            - name: http
              containerPort: 8080
          volumeMounts:
            - name: logs
              mountPath: /var/log/naver-mcp
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
      volumes:
        - name: logs
          persistentVolumeClaim:
            claimName: naver-mcp-logs

5)后端(客户端)连接示例

from langchain_mcp_adapters.client import MultiServerMCPClient

mcp_client = MultiServerMCPClient(
    {
        "naver-search-mcp": {
            "transport": "sse",
            "url": "http://<mcp-server-host>:8080/sse"  # 예) http://naver-mcp-server.svc.cluster.local:8080/sse
        }
    }
)

暴露到NodePort:使用工作节点IP和NodePort


源和许可证


Smithery专用路径(/@org/server/mcp?...)。
服务器容器包括: NAVER_CLIENT_ID/SECRET(K8s Secret)被注入并调用NAVER API。