프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. Google로 로그인하면 리뷰를 쓸 수 있어요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Formio MCP

제작자: formio버전 1.0.1i★ 8i내 컴퓨터에서 실행
레지스트리 이름io.form/formio-mcp

설치 방법

개요

제작자가 쓴 설명(영어 원문)

Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 문서, 시트 및 사무 업무
  • 입력해야 할 값: FORMIO_API_KEY

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

검사 3/3 통과 · 내 컴퓨터에서 실행돼요

먼저: 어떤 AI를 쓰시나요?

쓰는 앱을 고르면 아래에 단계가 나옵니다.

Claude에 연결할 수 있지만 먼저 준비가 필요해요

Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요

  1. Node.js 설치

    한 번만 하면 Node.js가 필요한 모든 서버에 쓸 수 있어요

    Node.js 다운로드 페이지 열기 ↗

  2. Formio MCP에 가입하고 키 만들기

    제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.

    Formio MCP 사이트 열기 ↗

  3. 컴퓨터용 Claude 앱 설정 파일 열기

    SettingsDeveloperEdit Config

  4. 이 설정을 붙여 넣고 저장

    {
      "mcpServers": {
        "formio": {
          "command": "npx",
          "args": [
            "-y",
            "@formio/mcp"
          ],
          "env": {
            "FORMIO_PROJECT_URL": "your-value",
            "FORMIO_BASE_URL": "your-value",
            "FORMIO_API_KEY": "your-value",
            "FORMIO_LOGIN_FORM": "your-value",
            "FORMIO_AUTH_HOST": "your-value",
            "FORMIO_AUTH_PORT": "your-value",
            "FORMIO_AUTH_TIMEOUT": "your-value",
            "FORMIO_FORCE_BROWSER": "your-value",
            "FORMIO_REQUEST_TIMEOUT": "your-value",
            "FORMIO_INSECURE_TLS": "your-value"
          }
        }
      }
    }

    키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요

  5. Claude를 끄고 다시 열기

  6. 해 보기

    Formio MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Claude가 Formio MCP을 쓰고 있다고 하거나 답에 Formio MCP 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

ChatGPT는 아직 Formio MCP에 연결할 수 없어요

Formio MCP는 내 컴퓨터에 설치해서 쓰지만 ChatGPT는 웹에서 도는 서버만 연결할 수 있어요

대신 이렇게 할 수 있어요

A · Formio MCP에 연결되는 앱 쓰기

  • Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
  • Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
  • Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
  • Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)

B · 문서, 시트 및 사무 업무에서 ChatGPT에 연결되는 다른 서버

같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요

Claude Code에 연결할 수 있지만 먼저 준비가 필요해요

Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)

  1. Node.js 설치

    한 번만 하면 Node.js가 필요한 모든 서버에 쓸 수 있어요

    Node.js 다운로드 페이지 열기 ↗

  2. Formio MCP에 가입하고 키 만들기

    제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.

    Formio MCP 사이트 열기 ↗

  3. 터미널 열기

    Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기

  4. 이 명령을 붙여 넣고 Enter

    claude mcp add formio --env FORMIO_PROJECT_URL=your-value --env FORMIO_BASE_URL=your-value --env FORMIO_API_KEY=your-value --env FORMIO_LOGIN_FORM=your-value --env FORMIO_AUTH_HOST=your-value --env FORMIO_AUTH_PORT=your-value --env FORMIO_AUTH_TIMEOUT=your-value --env FORMIO_FORCE_BROWSER=your-value --env FORMIO_REQUEST_TIMEOUT=your-value --env FORMIO_INSECURE_TLS=your-value -- npx -y @formio/mcp

    Enter 전에 “your-value”를 내 키로 바꾸세요

    키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요

  5. Claude Code에서 /mcp 입력

    Formio MCP이 목록에 있고 연결됨으로 보이면 돼요

  6. 해 보기

    Formio MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Claude Code가 Formio MCP을 쓰고 있다고 하거나 답에 Formio MCP 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

Cursor에 연결할 수 있지만 먼저 준비가 필요해요

Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)

  1. Node.js 설치

    한 번만 하면 Node.js가 필요한 모든 서버에 쓸 수 있어요

    Node.js 다운로드 페이지 열기 ↗

  2. Formio MCP에 가입하고 키 만들기

    제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.

    Formio MCP 사이트 열기 ↗

  3. 이 버튼으로 Cursor 열기

    Cursor에서 열기

    Cursor가 설치를 확인하면 Install을 누르세요

  4. 키 입력

    Formio MCP 설정에서 FORMIO_PROJECT_URL, FORMIO_BASE_URL, FORMIO_API_KEY, FORMIO_LOGIN_FORM, FORMIO_AUTH_HOST, FORMIO_AUTH_PORT, FORMIO_AUTH_TIMEOUT, FORMIO_FORCE_BROWSER, FORMIO_REQUEST_TIMEOUT, FORMIO_INSECURE_TLS가 비어 있어요. 내 키를 넣고 저장하세요

    키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요

  5. Cursor에서 AI 채팅을 Agent 모드로 열기

  6. 해 보기

    Formio MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ Cursor가 Formio MCP을 쓰고 있다고 하거나 답에 Formio MCP 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

VS Code에 연결할 수 있지만 먼저 준비가 필요해요

Formio MCP 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)

  1. Node.js 설치

    한 번만 하면 Node.js가 필요한 모든 서버에 쓸 수 있어요

    Node.js 다운로드 페이지 열기 ↗

  2. Formio MCP에 가입하고 키 만들기

    제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.

    Formio MCP 사이트 열기 ↗

  3. 이 버튼으로 VS Code 열기

    VS Code에서 열기

    VS Code가 설치를 확인하면 Install을 누르세요

  4. 키 입력

    Formio MCP 설정에서 FORMIO_PROJECT_URL, FORMIO_BASE_URL, FORMIO_API_KEY, FORMIO_LOGIN_FORM, FORMIO_AUTH_HOST, FORMIO_AUTH_PORT, FORMIO_AUTH_TIMEOUT, FORMIO_FORCE_BROWSER, FORMIO_REQUEST_TIMEOUT, FORMIO_INSECURE_TLS가 비어 있어요. 내 키를 넣고 저장하세요

    키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요

  5. VS Code에서 AI 채팅을 Agent 모드로 열기

  6. 해 보기

    Formio MCP을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐

    ✓ VS Code가 Formio MCP을 쓰고 있다고 하거나 답에 Formio MCP 도구 이름이 나오면 연결된 거예요

메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요

Windsurf, Zed, Gemini CLI 같은 다른 MCP 앱은 추가 방법이 저마다 달라요. 앱 목록에서 확인하세요

MCP를 쓰는 앱 모두 보기 →

JSON 설정은 아래 “개발자용”에 있어요

막혔나요? Formio MCP을 쓰는 사람에게 물어보세요💬 토론 →
개발자용: 터미널 명령과 JSON 설정

컴퓨터에 설치

Claude Code

claude mcp add formio --env FORMIO_PROJECT_URL=your-value --env FORMIO_BASE_URL=your-value --env FORMIO_API_KEY=your-value --env FORMIO_LOGIN_FORM=your-value --env FORMIO_AUTH_HOST=your-value --env FORMIO_AUTH_PORT=your-value --env FORMIO_AUTH_TIMEOUT=your-value --env FORMIO_FORCE_BROWSER=your-value --env FORMIO_REQUEST_TIMEOUT=your-value --env FORMIO_INSECURE_TLS=your-value -- npx -y @formio/mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "formio": {
      "command": "npx",
      "args": [
        "-y",
        "@formio/mcp"
      ],
      "env": {
        "FORMIO_PROJECT_URL": "your-value",
        "FORMIO_BASE_URL": "your-value",
        "FORMIO_API_KEY": "your-value",
        "FORMIO_LOGIN_FORM": "your-value",
        "FORMIO_AUTH_HOST": "your-value",
        "FORMIO_AUTH_PORT": "your-value",
        "FORMIO_AUTH_TIMEOUT": "your-value",
        "FORMIO_FORCE_BROWSER": "your-value",
        "FORMIO_REQUEST_TIMEOUT": "your-value",
        "FORMIO_INSECURE_TLS": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "formio": {
      "command": "npx",
      "args": [
        "-y",
        "@formio/mcp"
      ],
      "env": {
        "FORMIO_PROJECT_URL": "your-value",
        "FORMIO_BASE_URL": "your-value",
        "FORMIO_API_KEY": "your-value",
        "FORMIO_LOGIN_FORM": "your-value",
        "FORMIO_AUTH_HOST": "your-value",
        "FORMIO_AUTH_PORT": "your-value",
        "FORMIO_AUTH_TIMEOUT": "your-value",
        "FORMIO_FORCE_BROWSER": "your-value",
        "FORMIO_REQUEST_TIMEOUT": "your-value",
        "FORMIO_INSECURE_TLS": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "formio": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@formio/mcp"
      ],
      "env": {
        "FORMIO_PROJECT_URL": "your-value",
        "FORMIO_BASE_URL": "your-value",
        "FORMIO_API_KEY": "your-value",
        "FORMIO_LOGIN_FORM": "your-value",
        "FORMIO_AUTH_HOST": "your-value",
        "FORMIO_AUTH_PORT": "your-value",
        "FORMIO_AUTH_TIMEOUT": "your-value",
        "FORMIO_FORCE_BROWSER": "your-value",
        "FORMIO_REQUEST_TIMEOUT": "your-value",
        "FORMIO_INSECURE_TLS": "your-value"
      }
    }
  }
}

직접 입력할 값

  • FORMIO_PROJECT_URL env
    Optional, and the WEAKEST of the three project sources: a committed formio.json found by walking up from the working directory wins, then the per-directory mapping project_set writes, then this. It p…
  • FORMIO_BASE_URL env
    Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and…
  • FORMIO_API_KEY 비밀 env
    Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browse…
  • FORMIO_LOGIN_FORM env
    URL of a custom login form used by the browser-based portal login flow. Defaults to the deployment's portal login form.
  • FORMIO_AUTH_HOST env
    Address the browser-login page binds to. Optional; defaults to 127.0.0.1. Set it to 0.0.0.0, together with FORMIO_AUTH_PORT, when the server runs in a container or on a remote machine and the login p…
  • FORMIO_AUTH_PORT env
    Fixed port for the browser-login page, so a container can publish it (e.g. 43117). Optional; a positive integer, and by default the page takes an ephemeral port.
  • FORMIO_AUTH_TIMEOUT env
    Seconds to wait for a browser login before the call fails with an error naming the remedies. Optional; a positive integer no larger than 2147483, and any other value is ignored. Defaults to 900.
  • FORMIO_FORCE_BROWSER env
    Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser els…
  • FORMIO_REQUEST_TIMEOUT env
    Seconds a Form.io request may go unanswered before the call fails with a network error naming the URL. Optional; a positive integer no larger than 2147483, and any other value is ignored. Defaults to…
  • FORMIO_INSECURE_TLS env
    Set to 1 to skip TLS certificate verification only for requests to the configured deployment (the hosts of the resolved project URL and base URL); every other host is verified as usual. For local dev…

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

한눈에 보기

주간 다운로드i
919/주
확인된 도메인
✓ form.io
연결 방식
내 컴퓨터에서 실행
최신 버전i
1.0.1
레지스트리 공개i
2026년 10월 14일
코드 마지막 변경i
2026년 11월 6일
제작자
formio
패키지
npm: @formio/mcp
웹사이트
form.io
레지스트리 상태
활성

어떤 앱에서 쓸 수 있나요

이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.

내 컴퓨터에서 실행하는 앱

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

모든 앱과 장단점 →

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 12일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 도메인 form.io 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)

  • ✓ 통과

    계속 관리되고 있음

    코드 마지막 변경: 5일 전

  • ✓ 통과

    라이선스 있음

    MIT 사용

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

토론

질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.

아직 글이 없어요. 처음으로 질문하거나 공유해 보세요.

이곳의 글은 사용자가 쓴 것으로, PopNx 팀의 글이 아니에요.

Google로 로그인하고 글쓰기

사용자 리뷰

아직 리뷰가 없어요

Google로 로그인하고 리뷰 쓰기

문서, 시트 및 사무 업무 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 3773개 중 93%보다 스타가 많아요
  • 이 카테고리의 다른 서버 3773개 중 51%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 3773개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Formio MCP, 안전한가요?

해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: FORMIO_API_KEY

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 5일 전 변경됐고, 최신 버전(1.0.1)은 29일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Puter MCP, XcodeBuildMCP, XcodeBuildMCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Puter MCP

Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more

제작자: HeyPuter널리 사용됨★ 4.4만5개월 전 업데이트

클라우드에서 실행✓ puter.com

XcodeBuildMCP

XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.

제작자: getsentry널리 사용됨↓ 13만/주★ 6.6천4개월 전 업데이트

내 컴퓨터에서 실행✓ xcodebuildmcp.com

XcodeBuildMCP

XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.

제작자: cameroncooke널리 사용됨↓ 13만/주★ 6.6천14개월 전 업데이트

내 컴퓨터에서 실행

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Formio MCP server

The MCP server (@formio/mcp) is independently usable from any MCP-aware client. It speaks stdio: the client spawns it and owns stdin/stdout. There is no port to open and nothing to start by hand.

From a clone of this repo, the entry point is src/stdio.ts:

pnpm install

pnpm --filter @formio/mcp exec tsx src/stdio.ts

Run that way it waits for MCP traffic on stdin, which only tells you it starts cleanly — point a client at the command instead. A built package exposes the same entry point as the formio-mcp bin and as dist/stdio.js.

Transport
TransportCommandCompatible with
stdionpx -y @formio/mcp@1.0.1 (or node dist/stdio.js)Claude Code, Claude Desktop, Cursor, VS Code, Codex, Windsurf, Cline — anything that speaks MCP over stdio

There is no HTTP or SSE transport. The server's only HTTP listener is the temporary browser-login page described under Authentication, which carries no MCP traffic.

Connect a client

The same stdio entry works everywhere, but the file it goes in and the key it goes under both vary by client — .mcp.json under mcpServers for Claude Code, .cursor/mcp.json under mcpServers for Cursor, .vscode/mcp.json under `servers` for VS Code, and .codex/config.toml as TOML for Codex. There is no universal .mcp.json. The root README carries the full per-client table; the JSON mcpServers shape is:

{

"mcpServers": { "formio-mcp": { "command": "npx", "args": ["-y", "@formio/mcp@1.0.1"], "env": { "FORMIO_PROJECT_URL": "https://your-project.form.io" } } } }

Every tool that reaches Form.io needs a project. It can come from a committed formio.json, from a per-directory mapping written by the project_set tool, or from FORMIO_PROJECT_URL in the environment — in that order, narrowest scope first, so a mapping overrides the environment and a committed file overrides both. FORMIO_BASE_URL is optional and usually unnecessary: the base URL is derived from the project URL's shape — https://api.form.io for a project on a form.io host, the parent path for a sub-directory-routed one — and is asked for only when it cannot be derived. No plugin manifest prompts for either value; every client records them per directory with project_set or a committed formio.json, and the .mcpb desktop bundle is the one exception because a desktop host has no working directory to interview in.

The server starts without either one, so a client can connect and list the tools before anything is configured — the project URL is only demanded at the point a tool needs it, and server_status works regardless.

Run in Docker

The server ships a Dockerfile and is published to Docker Hub as formio/mcp for linux/amd64 and linux/arm64. The image speaks stdio, so the MCP client owns stdin/stdout and the container must be run with -i:

docker run -i --rm \

-e FORMIO_PROJECT_URL=https://your-project.form.io \ -e FORMIO_API_KEY=your-api-key \ formio/mcp

Wired into a client — the same entry as Connect a client, with command and args pointed at Docker — that becomes (shown in the JSON mcpServers shape; VS Code uses servers and Codex uses TOML, as noted there):

{

"mcpServers": { "formio-mcp": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "FORMIO_PROJECT_URL", "-e", "FORMIO_API_KEY", "formio/mcp" ], "env": { "FORMIO_PROJECT_URL": "https://your-project.form.io", "FORMIO_API_KEY": "your-api-key" } } } }

Authentication in a container

FORMIO_API_KEY is the recommended path — no browser, nothing interactive. Browser login also works if you publish the auth port; see Headless environments for both.

Two container-specific notes regardless of auth mode. Prefer the FORMIO_PROJECT_URL environment variable over the project_set tool: project_set persists its per-directory mapping to ~/.formio/projects.json, which lives inside the container and is discarded when it exits. And the cwd argument every tool takes refers to a path *inside* the container, not on your host — while a workspace root the client reports is a host path, so pass cwd explicitly.

To reuse a token across container runs, mount the cache directory — it must be writable, since the server rewrites the file when a token is refreshed or cleared:

-v "$HOME/.formio:/root/.formio"
Self-hosted deployments

Two things commonly bite when the deployment is not public:

Hostname resolution. A private hostname won't resolve inside the container. Map it explicitly:

docker run -i --rm --add-host forms.internal:10.0.0.5 \

-e FORMIO_BASE_URL=https://forms.internal \ -e FORMIO_PROJECT_URL=https://forms.internal/my-project \ -e FORMIO_API_KEY=your-api-key \ formio/mcp

Private or self-signed certificates. The image trusts only the standard CA bundle. A certificate your host trusts — via the macOS keychain, say — will still fail inside the container, surfacing as a bare fetch failed from the tool. There are two cases, and they behave differently:

*Issued by a private CA.* Mount the CA certificate and point Node at it:

-v /path/to/rootCA.pem:/certs/rootCA.pem:ro -e NODE_EXTRA_CA_CERTS=/certs/rootCA.pem

*A fully self-signed server certificate* — one where subject and issuer are identical and there is no CA:TRUE basic constraint. NODE_EXTRA_CA_CERTS cannot fix this, even if you mount the server's own certificate: Node requires a trust anchor to be a CA, and rejects the chain with DEPTH_ZERO_SELF_SIGNED_CERT. Confirm which case you have with:

echo | openssl s_client -connect your-host:443 -servername your-host 2>/dev/null \

| openssl x509 -noout -subject -issuer

If subject and issuer match, your only option is FORMIO_INSECURE_TLS=1, which skips certificate verification only for requests to the configured deployment; every other host the server reaches is still verified. Use it for local development only — never against a production deployment.

Building the image locally

The build context is the repository root, not this directory: the image installs its dependencies from the repository's pnpm-lock.yaml with a frozen lockfile, so it carries exactly the versions the repository tested. Run this from the repository root:

docker build -f packages/mcp-server/Dockerfile -t formio-mcp .
Inspect it with MCP Inspector

The MCP Inspector connects to the server and lets you browse and call its tools by hand — useful for confirming a config works before wiring it into an agent. Start the web portal:

npx @modelcontextprotocol/inspector

It prints a URL carrying an auth token and opens a browser. The default port is 6274; if something already holds it, move both with CLIENT_PORT=6284 SERVER_PORT=6285.

Copy inspector-config.example.json to inspector-config.json, fill in your project URL and API key, and you have the file the next step asks for. That name is gitignored, so a filled-in copy cannot be committed by accident.

The same run, step by step:

1. Choose Add Servers → Import from client config.

2. Click "From file…". The dialog takes a client config file or a client installed on this machine — there is nowhere to paste JSON.

3. Select your `inspector-config.json`, and the server it defines is listed as new. Confirm with "Import 1 server".

4. Enable the server with the toggle on its card. It turns green and reports the negotiated protocol version once the container is up; the first connection is slower because Docker has to start it.

5. Open the Tools tab for the tools this server exposes. Every server lists all 25 — including project_set and project_get, which are registered for every client.

6. Pick a tool, fill in its arguments, and press "Execute Tool". The result appears in the middle pane and the JSON-RPC exchange in the right-hand Protocol panel. server_status touches no credentials and makes no Form.io request, so it isolates transport problems from auth problems; form_list below is a real call against a project.

Importing writes the server into the inspector's own catalog at ~/.mcp-inspector/mcp.json, so it is still there next time — remove it from the card when you are done. A tool that fails with a bare fetch failed is usually the deployment, not the server: see Self-hosted deployments for hostname resolution and certificate trust inside a container.


MCP server tools

The bundled @formio/mcp server exposes these 25 tools. Skills prefer these over raw HTTP whenever an operation is covered.

Forms
ToolPurpose
form_createCreate a new form. Use the formio-schema skill first to build the JSON definition. On a deployment licensed for revisions, revisions defaults to "original".
form_getFetch a single form definition by _id or path (formIdOrPath). draft: true fetches its draft instead.
form_listList forms, one page at a time, filtered by type and by tags (forms carrying every tag given). Returns summary fields unless select asks for others.
form_updateUpdate a form with its edited JSON. Call form_get first, edit with formio-schema, then update. draft: true saves a draft instead of the live form.
form_publishPublish a form's draft as its live version (formId, note). Fails with NO_DRAFT when the form has no draft. Needs the revisions licence (Security Module).
form_revertRestore a prior revision's components, tags, properties and display onto the live form (formId, version, note). Needs the revisions licence (Security Module).

| form_revision_list | List a form's revision summaries (_id, _vid, _vnote, _vuser, created, `

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요