MCP 인증 및 설정 매뉴얼
MCP 인증 및 설정 매뉴얼
작성일: 2026-07-02 적용 범위: te-claude 웹 페이지의 MCP 관리, 대화에서의 사용, 워크스페이스
.mcp.json구체화, Slack / Feishu / Lark / DingTalk 등 협업용 MCP 연동.
1. 전체 원칙
te-claude의 MCP 연동은 두 가지 경로로 나뉩니다.
- 웹 페이지 대화 경로: 사용자가 MCP 관리 페이지에서 MCP를 설정하면 자격 증명이 te-claude DB에 저장됩니다. 대화 실행 시 사용자, 회사, 시스템 공개 범위에 따라 MCP를 해석하고 자격 증명을 주입합니다.
- 샌드박스 / 워크스페이스 경로: 워크스페이스
.mcp.json에는 디스크에 안전하게 기록할 수 있는 MCP 설정만 구체화합니다. OAuth token, App Secret, 민감한 Header는.mcp.json에 기록하지 않으며, 민감한 MCP는 managed helper/proxy를 통해 런타임 설정을 간접적으로 가져옵니다.
따라서 다음과 같습니다.
- 웹 페이지 대화는 워크스페이스
.mcp.json에 의존하지 않습니다. .mcp.json은 주로 내 샌드박스의 Claude Code / 터미널 도구를 위한 것입니다.- 웹 페이지의 OAuth 자격 증명과 Claude Code 로컬 OAuth 자격 증명은 자동으로 공유되지 않습니다.
- 사용자가 OAuth MCP를 처음 사용할 때 인증이 필요하며, 이후 대화에서는 DB의 자격 증명을 재사용합니다.
- 자격 증명이 만료되었거나 업스트림에서 유효하지 않다고 판정하면 MCP 상태가 재인증 필요로 바뀝니다. 이때 MCP를 자동으로 비활성화해서는 안 됩니다.
2. 지원하는 전송 방식
| 전송 방식 | 적용 시나리오 | 웹 페이지 커스텀 MCP | 연결 템플릿 | 설명 |
|---|---|---|---|---|
| streamable-http | 새 버전 원격 MCP, DingTalk MCP, Slack hosted MCP | 지원 | 지원 | 우선 사용을 권장합니다. Claude Code도 이 타입을 인식하므로 http로 바꿀 필요가 없습니다. |
| http | 일부 원격 MCP 호환 | 지원 | 템플릿에 따라 다름 | 서버 측 HTTP MCP에 적합합니다. |
| sse | 구형 SSE MCP | 지원 | 템플릿에 따라 다름 | 아직 SSE transport를 사용하는 MCP에 적합합니다. |
| stdio | 로컬/관리형 명령형 MCP(예: Feishu/Lark OpenAPI MCP) | 커스텀 모드에서는 제공하지 않음 | 지원 | 일반 사용자는 command/args를 직접 입력하지 않으며, 연결 템플릿으로 managed helper 설정을 생성합니다. |
커스텀 MCP는 기본적으로 URL 타입 MCP인 sse, http, streamable-http만 제공합니다. stdio는 관리되는 연결 템플릿을 통해서만 사용할 수 있으며, 사용자가 명령, 경로, 키를 직접 작성하여 통제할 수 없는 위험이 생기는 것을 방지합니다.
3. 지원하는 인증 유형
| 인증 유형 | 적용 MCP | 설정 방법 | 자격 증명 저장 | 만료 처리 |
|---|---|---|---|---|
| 수동 헤더 | 일반 비공개 MCP, DingTalk URL 타입 MCP, 일부 자체 구축 게이트웨이 | Header 행 편집기에 key/value 입력, 암호화 저장 선택 가능 | 일반 Header는 설정과 함께 저장, 암호화 Header는 secretJson에 저장 | 사용자가 Header 또는 URL 업데이트 |
| OAuth 2.0 | Slack hosted MCP, 표준 OAuth를 지원하는 원격 MCP | OAuth Client ID/Secret, scopes, 권한 부여 주소, Token 주소, resource 등 설정 | 사용자 OAuth token을 암호화하여 McpCredential에 저장 | token 만료 또는 invalid_token 시 재인증 트리거 |
| App Secret | Feishu OpenAPI MCP, Lark OpenAPI MCP | 연결 템플릿에 App ID, App Secret, tools 입력 | App Secret을 암호화하여 secretJson에 저장 | App Secret 만료 시 관리자가 설정 업데이트 |
| 추가 인증 불필요 | URL에 임시 key가 이미 포함된 MCP(예: 일부 DingTalk MCP 게이트웨이 URL) | URL 자체에 key 포함 | URL을 일반 설정으로 저장 | URL/key 만료 시 DingTalk에서 생성한 URL을 다시 복사 |
Header 행 편집기 규칙
MCP 양식의 Headers는 통일된 행 편집기를 사용합니다.
- 각 행에는
key,value,암호화 저장, 추가 버튼, 삭제 버튼이 있습니다. key는 필수이며 HTTP Header token 형식을 따라야 하고, 공백, 콜론, 제어 문자를 포함할 수 없습니다.value는 필수입니다. Header를 삭제하려면 행 전체를 삭제합니다.- Header key는 대소문자를 구분하지 않고 중복을 제거하므로
Authorization과authorization은 중복으로 간주됩니다. - 암호화 저장을 켜면 value가 암호화되어 저장됩니다.
- 기존 암호화 값을 편집할 때
********는 원래 값을 유지한다는 뜻입니다.*,*********,1등으로 바꾸면 모두 실제 새 값으로 저장됩니다.
4. OAuth MCP 공통 인증 절차
OAuth MCP의 목표는 사용자가 처음 사용할 때 인증을 트리거하고, 인증이 완료되면 te-claude가 사용자 자격 증명을 저장하여 이후 대화에서 자동으로 주입하는 것입니다.
4.1 설정 단계
관리자나 사용자가 OAuth MCP를 생성할 때 다음을 설정해야 합니다.
- 서비스 이름: 영문 runtime name입니다. 예:
slack. - 표시 이름: 중국어도 사용할 수 있습니다. 예:
Slack MCP. - 전송 방식: 일반적으로
streamable-http또는http입니다. - 서비스 주소: MCP endpoint입니다. 예:
https://mcp.slack.com/mcp. - OAuth Client ID。
- OAuth Client Secret。
- scopes。
- 권한 부여 주소.
- Token 주소.
- OAuth resource(서비스 제공자가 요구하는 경우).
일반 사용자는 providerKey를 입력할 필요가 없습니다. providerKey는 시스템 내부 필드로, 시스템 템플릿이나 연결 템플릿만 기록할 수 있습니다.
4.2 콜백 주소
OAuth 콜백 주소는 te-claude의 현재 배포 도메인을 사용해야 하며, localhost는 사용할 수 없습니다.
형식:
https://<te-claude-host>/<basePath>/api/mcp-auth/callback
배포에 base path가 있는 경우(예: /agent) 예시는 다음과 같습니다.
https://example.com/agent/api/mcp-auth/callback
서비스 제공자 관리 콘솔에 설정한 redirect URI는 te-claude가 인증을 시작할 때 사용하는 redirect URI와 같아야 합니다.
4.3 사용자의 첫 사용
사용자가 대화에서 OAuth MCP를 선택하면 다음과 같이 진행됩니다.
- te-claude가 해당 사용자에게 유효한 자격 증명이 있는지 확인합니다.
- 인증되지 않았거나 재인증이 필요하면 이번 메시지를 보내기 전에 차단합니다.
- 페이지에서 OAuth 인증 창을 엽니다.
- 사용자가 서비스 제공자 측에서 권한 부여를 완료합니다.
- 서비스 제공자가 te-claude callback을 호출합니다.
- te-claude가 token을 저장하고, 인증 창을 간단한 성공 페이지로 표시하거나 자동으로 닫습니다.
- 메인 페이지가 인증 상태를 폴링하여 MCP 상태를 인증됨으로 새로 고칩니다.
- 사용자가 메시지를 다시 보내면 런타임에 MCP가 주입됩니다.
4.4 자격 증명 만료와 재인증
OAuth 자격 증명은 만료될 수 있으며, 일반적인 원인은 다음과 같습니다.
- access token 만료.
- refresh token 만료 또는 철회.
- 사용자가 서비스 제공자 측에서 권한 부여를 취소함.
- 서비스 제공자가
invalid_token을 반환함. - 관리자가 OAuth App scopes 또는 권한을 조정함.
처리 방식:
- 만료되었거나 유효하지 않으면 te-claude가 MCP를 재인증 필요로 표시합니다.
- 재인증 필요는 비활성화와 다르며, MCP는 여전히 대화에서 선택할 수 있습니다.
- 다시 보내면 인증 창이 트리거됩니다.
- 사용자가 직접 MCP를 끄거나 인증을 해제한 경우에만 비활성화로 간주합니다.
5. Slack MCP 설정
5.1 권장 연동 방식
Slack은 공식 hosted MCP를 사용합니다.
https://mcp.slack.com/mcp
Slack은 연결 템플릿으로 연동합니다. 생성자는 자신의 Slack App OAuth Client ID / Client Secret / scopes를 설정해야 하며, 각 사용자는 처음 사용할 때 개인 OAuth 권한 부여를 완료합니다.
Slack OAuth App은 workspace / customer와 밀접하게 연관됩니다. 사내 Slack MCP는 일반적으로 회사에서 통합 관리하는 Slack App을 사용하고, 개인 Slack MCP는 일반적으로 개인 테스트나 개인 workspace 연동에 사용합니다.
권장 사용 방식:
| 생성 범위 | 적용 시나리오 | 인증 경험 |
|---|---|---|
| 사내 MCP | 회사에서 Slack App을 통합 관리하며 같은 회사 사용자가 사용 | 회사 관리자가 템플릿 설정을 생성하고, 각 사용자는 처음 사용할 때 각자 OAuth 권한 부여를 완료합니다. |
| 개인 MCP | 개인 테스트 또는 개인 workspace 연동 | 사용자가 생성에 성공한 후 바로 인증하러 이동하거나, 처음 사용할 때 인증할 수 있습니다. |
5.2 Slack App 관리 화면 설정
Slack App 관리 화면에서 다음을 확인해야 합니다.
- Slack App을 생성했는지.
- OAuth redirect URL을 설정했는지:
https://<te-claude-host>/<basePath>/api/mcp-auth/callback
- scopes가 실제로 사용할 Slack 도구를 포함하는지.
- Slack App에서 MCP / App Assistant 관련 기능을 활성화했는지.
- 정적
xoxptoken을 장기적인 방안으로 Header에 기록하는 것은 권장하지 않습니다.
5.3 te-claude 설정
시스템 MCP 권장 설정:
MCP 관리 페이지에서 다음을 선택합니다.
연결 템플릿 -> Slack MCP
템플릿에서 고정되거나 권장되는 설정:
| 필드 | 예시 |
|---|---|
| 서비스 이름 | slack |
| 표시 이름 | Slack MCP |
| 전송 방식 | streamable-http |
| 인증 방식 | OAuth 2.0 |
| URL | https://mcp.slack.com/mcp |
| OAuth Client ID | Slack App의 Client ID |
| OAuth Client Secret | Slack App의 Client Secret |
| scopes | 실제 필요에 따라 Slack MCP 도구 권한 선택 |
Slack MCP의 OAuth Client ID / Client Secret은 현재 MCP 인스턴스의 암호화된 설정에 저장됩니다. Slack Channel 설정은 IM 채널 연결에 사용하고 Slack MCP 설정은 MCP 도구 인증에 사용하며, 두 설정은 별도로 관리됩니다.
사용자가 사용할 때:
- 대화에서 Slack MCP를 선택합니다.
- 인증되지 않았으면 페이지에서 자동으로 OAuth를 트리거합니다.
- 인증이 완료되면 메시지를 다시 보냅니다.
개인 Slack MCP를 생성한 경우, 저장에 성공하면 te-claude가 바로 Slack 인증으로 이동할지 묻습니다. 나중에를 선택해도 설정에는 영향이 없으며, 이후 처음 사용할 때 인증이 트리거됩니다.
6. Feishu OpenAPI MCP 설정
Feishu는 현재 OpenAPI MCP 연결 템플릿 사용을 권장하며, 관리자나 사용자가 커스텀 앱의 App ID / App Secret과 도구 목록을 설정합니다.
6.1 Feishu 커스텀 앱 생성
Feishu Open Platform에서 기업 커스텀 앱을 생성합니다.
- 앱을 생성하고 App ID와 App Secret을 기록합니다.
- 봇 기능을 활성화합니다.
- 앱 공개 범위를 설정합니다.
- 주소록 권한 범위를 설정합니다.
- 실제 도구 목록에 따라 OpenAPI 권한을 신청합니다. 예시는 6.3 예시 도구 목록, 6.4 도구와 권한 대응표를 참조하십시오.
- 앱을 게시하고 권한이 적용될 때까지 기다립니다.
- 사용자 OAuth / UAT 방식을 사용하는 경우 redirect URL도 설정해야 합니다. OpenAPI App Secret 템플릿 자체는 일반적으로 사용자 OAuth redirect에 의존하지 않습니다.
6.2 te-claude 연결 템플릿
MCP 관리 페이지에서 다음을 선택합니다.
연결 템플릿 -> Feishu OpenAPI MCP
입력 항목:
| 필드 | 설명 |
|---|---|
| 서비스 이름 | 영문 runtime name(예: feishu-openapi) |
| 표시 이름 | 예: Feishu OpenAPI MCP |
| App ID | Feishu 커스텀 앱의 App ID |
| App Secret | Feishu 커스텀 앱의 App Secret |
| 도구 목록 | 쉼표로 구분한 OpenAPI 도구명 또는 preset |
템플릿 고정 항목:
| 필드 | 고정값 |
|---|---|
| 전송 방식 | stdio |
| 인증 방식 | 앱 시크릿 |
| 카테고리 | 개발자 도구 |
6.3 예시 도구 목록
"그룹 생성, 담당자 초대, 리포트 발송, 메시지 읽기, Base에 기록"이 목표라면 다음 도구 중에서 선택할 수 있습니다.
im.v1.chat.create,
im.v1.chat.list,
im.v1.chatMembers.get,
im.v1.message.create,
im.v1.message.list,
wiki.v2.space.getNode,
wiki.v1.node.search,
docx.v1.document.rawContent,
drive.v1.permissionMember.create,
docx.builtin.import,
docx.builtin.search,
bitable.v1.app.create,
bitable.v1.appTable.create,
bitable.v1.appTable.list,
bitable.v1.appTableField.list,
bitable.v1.appTableRecord.search,
bitable.v1.appTableRecord.create,
bitable.v1.appTableRecord.update,
contact.v3.user.batchGetId
범위가 더 넓은 preset을 먼저 사용할 수도 있습니다.
preset.default,preset.im.default,preset.doc.default
운영 환경에서는 권한 감사와 위험 관리를 위해 명시적인 도구 목록으로 바꾸는 것을 권장합니다.
6.4 도구와 권한 대응표
| API 이름 | 기능 설명 | 필요 권한 |
|---|---|---|
| im.v1.chat.create | 그룹 생성 | 그룹 생성(im:chat:create) |
| im.v1.chat.list | 사용자 또는 봇이 속한 그룹 목록 조회 | 그룹 정보 조회 및 업데이트(im:chat) |
| im.v1.chatMembers.get | 그룹 멤버 목록 조회 | 그룹 정보 조회 및 업데이트(im:chat) |
| im.v1.message.create | 메시지 보내기 | 1:1 채팅 및 그룹 메시지 조회 및 보내기(im:message) |
| im.v1.message.list | 대화 기록 메시지 조회 | 1:1 채팅 및 그룹 메시지 조회 및 보내기(im:message) |
| wiki.v2.space.getNode | 위키 스페이스 노드 정보 조회 | 위키 보기, 편집 및 관리(wiki:wiki) |
| wiki.v1.node.search | Wiki 검색 | 위키 보기(wiki:wiki:readonly) |
| docx.v1.document.rawContent | 문서의 일반 텍스트 내용 조회 | 새 버전 문서 생성 및 편집(docx:document) |
| drive.v1.permissionMember.create | 협업자 권한 추가 | 위키 보기, 편집 및 관리(wiki:wiki) |
| docx.builtin.import | 문서 가져오기(소재/파일 업로드, 가져오기 작업 생성, 가져오기 작업 결과 조회 포함) | Base 보기, 댓글, 편집 및 관리(bitable:app); 드라이브의 모든 파일 보기, 댓글, 편집 및 관리(drive:drive); 클라우드 문서 가져오기 작업 보기 및 생성(docs:document:import) |
| docx.builtin.search | 클라우드 문서 검색 | 드라이브의 모든 파일 보기, 댓글, 편집 및 관리(drive:drive) |
| bitable.v1.app.create | Base 생성 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTable.create | 데이터 테이블 추가 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTable.list | 데이터 테이블 나열 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTableField.list | 필드 나열 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTableRecord.search | 레코드 조회 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTableRecord.create | 레코드 추가 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| bitable.v1.appTableRecord.update | 레코드 업데이트 | Base 보기, 댓글, 편집 및 관리(bitable:app) |
| contact.v3.user.batchGetId | 휴대폰 번호 또는 이메일로 사용자 ID 조회 | 휴대폰 번호 또는 이메일로 사용자 ID 조회(contact:user.id:readonly) |
6.5 일반적인 제한 사항
- 도구가 있다고 해서 권한이 적용된 것은 아닙니다. Feishu 앱에서 권한을 신청하고 게시해야 합니다.
- 주소록 API는 앱 공개 범위와 주소록 권한 범위의 제한도 받습니다.
contact.v3.user.batchGetId는 휴대폰 번호나 이메일로만 사용자 ID를 조회할 수 있으며, 이름으로 퍼지 검색하는 기능이 아닙니다.- 그룹 생성, 메시지 보내기 등의 작업은 일반적으로 봇 기능이 활성화되어 있어야 합니다.
- 봇이 대상 그룹에 있거나, 앱에 해당 그룹 작업 권한이 있어야 합니다.
7. Lark OpenAPI MCP 설정
Lark OpenAPI MCP는 Feishu OpenAPI MCP와 구조가 같으며, 국제판 오픈 플랫폼 도메인이 다르다는 점만 다릅니다.
te-claude의 Lark 템플릿은 다음을 자동으로 추가합니다.
["--domain", "https://open.larksuite.com"]
사용자가 domain을 직접 입력할 필요는 없습니다.
설정 단계:
- Lark Developer에서 커스텀 앱을 생성합니다.
- App ID / App Secret을 가져옵니다.
- Bot 기능을 활성화합니다.
- 앱 공개 범위와 권한을 설정합니다.
- 도구 목록에 해당하는 OpenAPI 권한을 신청합니다.
- te-claude에서
Lark OpenAPI MCP연결 템플릿을 선택합니다. - App ID, App Secret, tools를 입력합니다.
권장 서비스 이름:
lark-openapi
예시 도구 목록은 Feishu OpenAPI MCP의 도구명을 재사용할 수 있습니다. 권한 이름은 Lark Developer 관리 콘솔에 실제로 표시되는 이름을 기준으로 합니다.
8. DingTalk MCP 설정
DingTalk MCP는 현재 URL 타입 연결 템플릿으로 연동하는 것을 권장합니다. DingTalk MCP 마켓플레이스에는 여러 MCP가 있고 이름과 URL이 모두 DingTalk에서 생성되므로 te-claude에서 고정해서는 안 되기 때문입니다.
8.1 DingTalk MCP 마켓플레이스에서 활성화
진입 주소:
https://aihub.dingtalk.com/#/mcp
DingTalk MCP 마켓플레이스에서 로봇 메시지, DingTalk 그룹 채팅 등 필요한 MCP를 선택하고, 활성화한 후 설정 JSON을 복사합니다.
예시:
{
"mcpServers": {
"机器人消息": {
"type": "streamable-http",
"url": "https://mcp-gw.dingtalk.com/server/2de***"
}
}
}
8.2 te-claude에서 설정
MCP 관리 페이지에서 다음을 선택합니다.
연결 템플릿 -> DingTalk MCP
템플릿 고정 항목:
| 필드 | 고정값 |
|---|---|
| 전송 방식 | streamable-http |
| 인증 방식 | 수동 헤더 |
| 카테고리 | 개발자 도구 |
사용자가 입력할 항목:
| 필드 | 예시 | 설명 |
|---|---|---|
| 서비스 이름 | dingtalk-robot-message | 영문, 숫자, 밑줄 또는 하이픈만 사용할 수 있으며, runtime name으로 사용됩니다. |
| 표시 이름 | 로봇 메시지 | DingTalk JSON의 mcpServers 아래에 있는 중국어 key를 사용할 수 있습니다. |
| 서비스 주소 | https://mcp-gw.dingtalk.com/server/2de*** | DingTalk에서 생성한 url을 복사합니다. |
DingTalk URL에 이미 key가 포함되어 있으면 일반적으로 추가 Header가 필요하지 않습니다. 이 URL은 민감 정보로 취급해야 하며, 문서, Issue, 코드 저장소에 공개적으로 붙여 넣지 마십시오.
8.3 DingTalk의 일반적인 제한 사항
- DingTalk 그룹 채팅 MCP는 멤버가 자사 기업 사용자여야 할 수 있습니다.
- 그룹 생성, 메시지 보내기는 기업 보안 정책의 제한을 받습니다.
- 일부 MCP는 주소록 기능과 함께 사용하여 이름을 DingTalk
userId로 변환해야 합니다. - URL 또는 권한 부여가 만료되면 DingTalk MCP 마켓플레이스로 돌아가 설정을 다시 생성해야 합니다.
9. Feishu 원격 MCP는 당분간 연결 템플릿으로 제공하지 않음
Feishu 원격 MCP를 사용하려면 사용자가 다음 Header 중 하나를 직접 발급받아야 합니다.
X-Lark-MCP-UAT: 사용자 신원 token.X-Lark-MCP-TAT: 앱 신원 token.
또한 다음도 필요합니다.
Content-Type: application/jsonX-Lark-MCP-Allowed-Tools
이 경로는 token 발급, 갱신, 권한 진단의 난도가 높아 현재는 te-claude 연결 템플릿으로 제공하지 않습니다.
꼭 사용해야 한다면 일반 커스텀 URL MCP로 직접 설정할 수 있습니다.
| 필드 | 예시 |
|---|---|
| 전송 방식 | streamable-http |
| 서비스 주소 | https://mcp.feishu.cn/mcp |
| Header | X-Lark-MCP-UAT 또는 X-Lark-MCP-TAT |
| Header | X-Lark-MCP-Allowed-Tools |
다만 제품화 측면에서는 여전히 Feishu / Lark OpenAPI MCP를 우선 권장합니다.
10. 생성 범위와 권한
| 생성 범위 | 공개 범위 | 생성 가능한 사용자 | 적용 시나리오 |
|---|---|---|---|
| 시스템 MCP | 전체 사이트에 공개 | 시스템 seed / 관리자 사전 설정 | 고객의 비공개 OAuth App / App Secret에 의존하지 않는 전역 사전 설정 MCP. |
| 사내 MCP | 같은 회사에 공개 | 회사 관리자 | Feishu/Lark OpenAPI와 같은 회사 수준의 App Secret. |
| 개인 MCP | 본인만 볼 수 있음 | 모든 로그인 사용자 | 개인 테스트, 개인 DingTalk URL, 개인 OAuth MCP. |
연결 템플릿 진입점은 모든 로그인 사용자에게 표시됩니다. 관리자가 아닌 사용자도 템플릿으로 개인 MCP를 생성할 수 있지만, 사내 MCP를 생성하려면 여전히 관리자 권한이 필요합니다.
11. 워크스페이스 .mcp.json 규칙
워크스페이스에서 MCP를 저장할 때 te-claude는 MCP 타입에 따라 .mcp.json을 생성합니다.
11.1 일반 URL MCP
민감하지 않은 일반 URL MCP는 바로 기록할 수 있습니다.
{
"mcpServers": {
"dingtalk-robot-message": {
"type": "streamable-http",
"url": "https://mcp-gw.dingtalk.com/server/2de***"
}
}
}
11.2 관리형 MCP
OAuth, App Secret, 민감한 Header MCP는 평문 자격 증명을 기록하지 않고 managed helper를 기록합니다.
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "node",
"args": ["/app/dist/mcp/managed-mcp-remote.js", "--server-id", "system-mcp-slack"]
}
}
}
Feishu/Lark OpenAPI MCP도 App Secret을 파일에 기록하지 않고 helper를 기록합니다.
12. 자주 발생하는 문제 해결
12.1 대화에 "MCP 도구 없음" 메시지가 표시되는 경우
확인 사항:
- 대화 입력창에서 해당 MCP를 선택했는지.
- MCP가 활성화되어 있는지.
- OAuth MCP가 인증되었는지, 재인증이 필요한지.
- 도구 목록을 정상적으로 불러올 수 있는지.
- te-claude 서버에서 업스트림 MCP URL에 접근할 수 있는지.
- Feishu/Lark OpenAPI의 경우 App 권한을 신청하고 게시했는지.
12.2 도구 목록 조회 실패
일반적인 원인:
- URL이 잘못됨.
- 서버 측 네트워크에 연결할 수 없음(예:
ECONNREFUSED,ENOTFOUND,ETIMEDOUT). - 업스트림이 MCP JSON-RPC 응답이 아닌 HTML을 반환함.
- OAuth token이 만료됨.
- Feishu/Lark App Secret이 잘못됨.
- Feishu/Lark 도구명이 존재하지 않거나 권한이 부족함.
네트워크 연결 불가는 인증 문제가 아닙니다. 먼저 te-claude 배포 환경에서 해당 MCP 주소에 접근할 수 있는지 확인해야 합니다.
12.3 Feishu/Lark 도구는 있지만 호출에 실패하는 경우
확인 사항:
- 앱을 게시했는지.
- 권한이 승인되었는지.
- 봇 기능이 활성화되어 있는지.
- 앱 공개 범위에 대상 사용자가 포함되는지.
- 주소록 권한 범위에 대상 사용자가 포함되는지.
- 봇이 대상 그룹에 있는지.
- 도구 목록에 실제로 호출하는 OpenAPI 도구명이 포함되어 있는지.
12.4 DingTalk MCP는 저장되지만 호출에 실패하는 경우
확인 사항:
- 전체 URL을 복사했는지.
- URL의 key가 만료되었는지.
- 조직 보안 정책이 해당 작업을 허용하는지.
- 그룹 생성이나 1:1 메시지 발송에 DingTalk
userId가 필요한지. - 해당 MCP를 DingTalk MCP 마켓플레이스에서 활성화했는지.
12.5 Slack 인증에 성공했는데도 만료로 표시되는 경우
확인 사항:
- Slack App redirect URL이 te-claude callback과 같은지.
- Slack App에서 MCP / App Assistant 관련 기능을 활성화했는지.
- scopes가 도구 호출에 충분한지.
- 사용자가 권한 부여를 철회했는지.
- 오래된 token이나 정적 token 방식을 사용하고 있는지.
13. 권장 연동 순서
- Slack MCP: 범용 OAuth MCP, 사용자 인증, 자격 증명 만료 후 재인증을 검증합니다.
- Feishu OpenAPI MCP: 중국 내 IM / 문서 / Base 기업 프로세스를 검증합니다.
- Lark OpenAPI MCP: 국제판 Lark 기업 고객을 검증합니다.
- DingTalk URL 타입 MCP: DingTalk MCP 마켓플레이스에서 생성한 URL의 연동 경험을 검증합니다.
- 일반 커스텀 MCP: 고객이 자체 구축한 MCP와 서드파티 MCP를 포괄합니다.
14. 최소 검수 체크리스트
MCP 하나를 설정한 후 최소한 다음을 확인합니다.
- MCP 관리 페이지에서 설정을 저장할 수 있음.
- 도구 목록을 정상적으로 읽을 수 있거나, 오류 원인이 명확하게 표시됨.
- 대화에서 해당 MCP를 선택할 수 있음.
- 인증되지 않은 OAuth MCP는 Agent가 바로 "도구가 없습니다"라고 답하는 대신 인증 창을 트리거함.
- 인증이 완료되면 MCP 상태가 인증됨으로 바뀜.
- 워크스페이스
.mcp.json에 OAuth token, App Secret, 민감한 Header의 평문이 포함되지 않음. - Feishu/Lark OpenAPI MCP의 도구 목록이 앱 권한과 일치함.
- DingTalk MCP의 서비스 이름은 영문이며, 표시 이름에는 중국어를 사용할 수 있음.
관련 페이지와 다음 단계

