mcp-exports
mcp-exports
사내 MCP 서버들을 위한 공용 단일 사용 다운로드 호스트입니다.
https://exports.example.com · 호스트 포트 8114 · 고객 로그인 없음
MCP server --POST /put (service token)--> mcp-exports --> download URL
customer --GET /d/{token} (no auth) --> mcp-exports --> the file, once존재 이유
일주일 분량의 통화 기록을 인라인으로 반환하는 도구는 약 530,000 토큰을 소비합니다. 같은 데이터를 CSV로 제공하면 1MB이고 1.6초 만에 생성됩니다. 그래서 내보내기는 링크를 반환합니다. 첫 번째 버전은 MCP 서버 자체에서 그 링크를 제공했는데, 세 가지 방식으로 문제가 발생했습니다:
MCP 호스트는 Anthropic 전용 IP 허용 목록 뒤에 있습니다. 하지만 다운로드를 가져오는 것은 임의의 주소에 있는 고객의 브라우저입니다. 별도의 호스트 이름은 두 액세스 정책이 충돌하지 않게 해줍니다. MCP에 필요한 스트리밍 설정을 담은 프록시 설정에서 경로 예외를 뚫는 대신 말입니다.
MCP 컨테이너는 푸시할 때마다 재배포되며, 인메모리 저장소도 함께 사라졌습니다. 그 결과 대화 중에 유효한 링크가 무효화되었습니다.
저장소는 하나의 프로세스에 속해 있었기 때문에, 두 번째 워커는 무작위로 404를 반환했습니다.
Related MCP server: agent-secret
보안 모델, 명확히 말하면
다운로드 URL은 **권한(capability)**입니다. 그것을 가진 사람은 누구나 로그인 없이 파일을 얻습니다. 이는 우리가 이미 제공하는 NetSapiens 녹음 URL 및 Odoo 포털 PDF와 같은 트레이드오프이며, 채팅 창에서 클릭했을 때 링크가 작동하게 만드는 이유이기도 합니다. 이것은 인증이 아닙니다. 그리고 약점은 실제로 존재합니다. URL은 전달될 수 있고, 프록시에 기록될 수 있으며, 대화 기록에 영원히 남을 수 있습니다.
그래서 설계는 실제로 도움이 되는 것에 의존합니다:
제어 | 이유 |
단일 사용 (기본값 | 바이트는 일단 다운로드되면 삭제되므로 이후에 유출된 링크는 이미 죽은 것입니다. 사용 가능한 가장 강력한 제어입니다. 권한 URL은 공유를 되돌릴 수 없기 때문입니다. |
짧은 TTL — 데이터 1시간, 금융 15분 | 노출 창을 줄입니다. 금융 데이터는 더 짧게 노출됩니다. |
256비트 | 추측 불가, 열거 불가 |
누락 / 잘못된 형식 / 만료 / 사용됨에 대해 동일한 404 | 차이로부터 배울 수 있는 것이 없음 |
| HTML 또는 SVG 내보내기는 우리 오리진에서 렌더링되어서는 안 됩니다. 그렇게 되면 이 호스트가 저장형 XSS 벡터가 되기 때문입니다. |
| 캐시되지 않음, 색인되지 않음, 리퍼러 누출 없음 |
토큰 접두어만 포함하는 액세스 로그 | 업로드↔다운로드 상관관계를 파악하기에는 충분하지만, 파일보다 더 많은 사람이 읽을 수 있는 로그에서 작동하는 URL을 재구성하기에는 충분하지 않습니다. |
업로드는 인증됩니다 — 서버별 베어러 토큰을 사용합니다. 공개 호스트에 파일을 게시하는 것은 인터넷이 마음대로 할 수 있는 일이 아니기 때문입니다. 서비스는 허용 목록이 비어 있으면 시작을 거부합니다.
API
POST /put?filename=x.csv&sensitivity=data|financial&customer=Acme%20Movers
&ttl=3600&max_downloads=1
Authorization: Bearer <server token>
-> 201 {download_url, filename, size, expires_in_seconds, expires_at,
max_downloads, single_use}
GET /d/{token} -> 200 the file (then it is gone), or 404
GET /healthz -> counters + bytes heldttl은 그대로 따르지 않고 상한이 적용됩니다 — 일주일을 요청하면 MCP_EXPORTS_TTL_MAX를 받게 되며, 응답은 실제로 받은 값을 알려줍니다.
MCP 서버에서 사용하기
서버에 client/export_client.py를 복사하고 MCP_EXPORTS_URL + MCP_EXPORTS_TOKEN을 설정하세요. ExportClient.from_env()는 구성되지 않은 경우 None을 반환하므로, 서버는 항상 실패하는 도구를 광고하는 대신 호스트가 실제로 연결된 곳에서만 내보내기 도구를 제공할 수 있습니다.
인라인 행으로 폴백하지 않고 오류를 발생시킵니다. 호스트가 다운되면 안전한 저하가 없습니다. 행을 반환하는 것이 내보내기가 방지하려는 실패 모드이기 때문입니다.
배포
Portainer → Stacks → Repository, refs/heads/main, 포트 8114. MCP 서버별로 토큰을 생성하세요:
python -c "import secrets; print(secrets.token_urlsafe(32))"NPM: exports.example.com → 10.0.0.10:8114, Access List 없음 (그게 핵심입니다), Websockets 끔, 표준 타임아웃.
테스트
python -m pytest tests -q47개의 테스트, 네트워크 없음. 이 테스트는 보안 속성을 구체적으로 다룹니다: 단일 사용이 실제로 바이트를 삭제하는지, 모든 잘못된 토큰 형태가 구별 불가능한지, 파일 이름이 이스케이프하거나 헤더를 주입할 수 없는지, 금융 TTL이 더 짧은지, 그리고 Dockerfile이 root 권한을 내려놓기 전에 볼륨 마운트 지점을 chown하는지 — 그렇게 하지 않으면 named volume이 root 소유로 생성되어 모든 업로드가 EACCES로 실패합니다.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides secure OAuth2-based credential management for MCP servers, allowing agents to obtain short-lived token references without exposing raw secrets.718MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for one-time secret sharing, enabling AI agents to securely claim and store secrets (e.g., API keys) via claim codes without exposing them in chat transcripts.3MIT
- FlicenseNot gradedqualityBmaintenanceEnables sharing self-contained HTML files via public or access-key-protected private links. Provides MCP tools to create shares, retrieve public share metadata, and describe the service.2
- FlicenseNot gradedqualityBmaintenanceMCP server for end-to-end encrypted secret storage and retrieval, enabling LLM agents to fetch secrets by name via one-time URLs while keeping plaintext out of model context and logs.1
Related MCP Connectors
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Remote MCP for C2PA intake verifier MCP, structured receipts, audit logs, and reviewer-ready evidenc
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/JohnGilligan2/mcp-exports'
If you have feedback or need assistance with the MCP directory API, please join our Discord server