AI 해결 노트 · 2026-09-17 · 실측 2026-09-17

윈도우에서 Claude Code에 MCP 서버 붙이기 — claude mcp add --scope project 최소 구성과 Pending approval 풀기

한 줄로

윈도우 PowerShell에서 claude mcp add 이름 --scope project -- npx -y 패키지 인자를 치면 프로젝트 폴더에 .mcp.json이 생깁니다. 저희 환경(2.1.274)에서는 npxcmd /c로 감싸지 않아도 연결됐고, 승인 전에는 ⏸ Pending approval로 표시됐습니다.

이번 실측의 claude mcp listget에서는 미승인 프로젝트 서버가 ⏸ Pending approval로 나왔습니다. 대화형 세션에서 승인하거나, 이번 실측처럼 --settings로 그 실행에만 승인을 적용해 확인할 수 있습니다.

이런 분께

강좌대로 claude mcp add를 쳤는데 claude mcp listPending approval만 뜨는 분. 윈도우에서 npx 서버를 붙일 때 cmd /c가 필요한지 궁금한 분. 사용자 설정 파일을 건드리지 않고 한 프로젝트에만 서버를 넣고 싶은 분.

실측 환경

항목
OSWindows 11 Home (10.0.26200)
PowerShell 7 (claude mcp add/list/get), Git Bash (파일 확인)
Claude Code2.1.274(작업 세션 기록 기준)
Node.js / npxv24.19.0 / 11.17.0
서버@modelcontextprotocol/server-filesystem (npx로 실행)
실험 폴더C:\Users\User\AppData\Local\Temp\longtail_C\proj (깃 저장소 아님)

범위부터 고르기

claude mcp add --help의 범위 옵션입니다.

  -s, --scope <scope>          Configuration scope (local, user, or project)
                               (default: "local")

기본값이 local이라는 점이 중요합니다. 공식 문서(code.claude.com/docs/en/mcp, 2026-09-17 확인)의 표를 보면 localuser는 둘 다 ~/.claude.json에 저장되고, project.mcp.json in project root에 저장됩니다. 윈도우에서 ~/.claude.json%USERPROFILE%\.claude.json이라고 빠른 시작 문서(code.claude.com/docs/en/mcp-quickstart, 같은 날 확인)에 적혀 있습니다. 개인 설정 파일을 건드리지 않으려고 이번에는 --scope project만 썼습니다.

1단계 — 추가

Set-Location 'C:\Users\User\AppData\Local\Temp\longtail_C\proj'
claude mcp add tempfs --scope project -- npx -y @modelcontextprotocol/server-filesystem 'C:\Users\User\AppData\Local\Temp\longtail_C\proj'
Added stdio MCP server tempfs with command: npx -y @modelcontextprotocol/server-filesystem C:\Users\User\AppData\Local\Temp\longtail_C\proj to project config
File modified: C:\Users\User\AppData\Local\Temp\longtail_C\proj\.mcp.json

-- 뒤는 서버 실행 명령입니다. 문서도 "Everything after -- is passed to the server untouched."라고 설명합니다. 만들어진 .mcp.json은 이렇습니다. 윈도우 경로의 백슬래시는 JSON 안에서 두 개로 바뀌어 저장됩니다.

{
  "mcpServers": {
    "tempfs": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\Users\\User\\AppData\\Local\\Temp\\longtail_C\\proj"
      ],
      "env": {}
    }
  }
}

2단계 — 상태 보기, 그리고 Pending approval

$ claude mcp get tempfs
tempfs:
  Scope: Project config (shared via .mcp.json)
  Status: ⏸ Pending approval (run `claude` to approve)
  Type: stdio
  Command: npx
  Args: -y @modelcontextprotocol/server-filesystem C:\Users\User\AppData\Local\Temp\longtail_C\proj

claude mcp list도 같은 상태였습니다. 도움말에 "Unapproved .mcp.json servers are shown as ⏸ Pending approval and not connected to"라고 되어 있으니 연결 시도조차 하지 않은 상태입니다. 문서가 안내하는 정식 방법은 이 폴더에서 claude를 대화형으로 켜서 승인하는 것입니다.

이번에는 대화 세션을 열지 않고 확인하려고, 문서가 신뢰하지 않은 폴더에서도 적용된다고 적은 --settings로 이번 실행에만 승인을 줬습니다.

claude --settings '{"enableAllProjectMcpServers": true}' mcp get tempfs
tempfs:
  Scope: Project config (shared via .mcp.json)
  Status: ✔ Connected
  Type: stdio
  Command: npx

npxcmd /c로 감싸지 않은 설정 그대로 ✔ Connected가 나왔습니다. 공식 문서 7쪽(mcp, mcp-quickstart, setup, troubleshooting, troubleshoot-install, settings, settings-reference)의 원문에서 cmd /c를 검색했을 때도 0건이었습니다.

프로젝트 폴더의 .claude/settings.json"enableAllProjectMcpServers": true를 넣는 방법은 이 폴더에서 효과가 없었습니다(Pending approval 유지). 신뢰하지 않은 폴더에서는 공유 설정의 프로젝트 서버 승인 설정이 무시된다는 문서 설명과 같습니다. 같은 파일의 disabledMcpjsonServers 거부 설정은 적용됐습니다. 파일별 비교는 Claude Code settings.json 위치와 우선순위에 따로 적었습니다.

3단계 — 지우기

$ claude mcp remove tempfs --scope project
Removed MCP server tempfs from project config
File modified: C:\Users\User\AppData\Local\Temp\longtail_C\proj\.mcp.json

지운 뒤 .mcp.json은 파일이 남고 내용만 {"mcpServers": {}}로 비었습니다. claude mcp list에서도 tempfs 줄이 사라졌습니다. 실험 뒤 %USERPROFILE%\.claude.json에서 longtail_Ctempfs 문자열을 세어 보니 둘 다 0건이었습니다(내용은 열지 않고 건수만 셈).

결과

단계명령결과
추가claude mcp add tempfs --scope project -- npx -y ….mcp.json 생성(266바이트), 종료 코드 0
확인(승인 전)claude mcp list / get⏸ Pending approval
확인(--settings 승인)claude --settings '{…}' mcp get tempfs✔ Connected
거부 목록이 있을 때.claude/settings.jsondisabledMcpjsonServersget: ✘ Rejected (see disabledMcpjsonServers in settings), list에서는 안 보임
제거claude mcp remove tempfs --scope project.mcp.json 내용 비워짐(22바이트)
사용자 파일 흔적~/.claude.json 문자열 건수0건

알아 둘 것 두 가지

PowerShell에서 claude mcp list 출력을 변수에 담아 다시 찍었더니 ??로 깨졌습니다. [Console]::OutputEncoding$OutputEncoding을 모두 [Text.Encoding]::UTF8로 지정한 뒤에는 제대로 나왔습니다. 빠른 시작 문서는 윈도우 10 기본 콘솔 같은 옛 콘솔에서 , 대신 , ×가 보일 수 있다고도 적고 있습니다.

claude mcp list의 확인 대상에는 이 폴더 서버 말고 다른 범위의 서버도 포함될 수 있습니다. 다만 미승인·거부·비활성 서버에는 연결하지 않고, WebSocket 서버는 목록에 나오지 않는다고 도움말과 문서에 적혀 있습니다. 저희 PC에서는 실험이 끝난 뒤 다른 서버(mcp-remote 계열)의 프로세스 몇 개가 부모 프로세스 없이 남아 있었습니다. 이 헬스체크가 띄운 것인지는 확인하지 못했습니다. 첫 실행이 느리면 문서가 안내하는 MCP_TIMEOUT 환경변수(밀리초, 기본 30초)를 늘려 볼 수 있습니다.

같은 날 이 작업을 한 Claude Code 세션을 시작할 때 gemini (CONNECTION_CLOSED): "Connection closed"라는 알림이 떴습니다. 원인은 조사하지 않았고, 이번 tempfs 실험과의 관계도 확인하지 않았습니다.

실패한 것

실험 폴더를 끝까지 지우지 못했습니다. 파일은 모두 지웠지만 빈 proj 폴더가 "being used by another process"로 남았습니다. 그 시점에 최근 시작된 프로세스는 mcp-remote 계열이었고(부모 프로세스는 이미 종료), 이들은 종료하지 않고 그대로 뒀습니다. 이 프로세스가 claude mcp list/get에서 나온 것인지, 폴더를 잡고 있는 것이 이 프로세스인지는 확인하지 못했습니다.

확인하지 않은 것

함께 보기