MCP URL Fetcher
MCP URL 형식 변환기
모든 URL에서 콘텐츠를 가져와 원하는 출력 형식으로 변환하는 MCP(Model Context Protocol) 서버입니다.
개요
MCP URL 형식 변환기는 모든 웹 URL에서 콘텐츠를 검색하여 원본 콘텐츠 유형에 관계없이 다양한 형식(HTML, JSON, 마크다운 또는 일반 텍스트)으로 변환하는 도구를 제공합니다. Claude for Desktop을 포함한 모든 MCP 호환 클라이언트와 호환되도록 설계되어 LLM이 일관된 형식으로 웹 콘텐츠에 액세스하고, 변환하고, 분석할 수 있도록 지원합니다.
Related MCP server: MCP Web Tools Server
특징
🔄 형식 변환 : 모든 웹 콘텐츠를 HTML, JSON, 마크다운 또는 일반 텍스트로 변환합니다.
🌐 범용 입력 지원 : 웹사이트, API, 원시 파일 등을 처리합니다.
🔍 자동 콘텐츠 감지 : 소스 형식을 지능적으로 식별합니다.
🧰 강력한 라이브러리 지원 : 업계 표준 라이브러리 사용:
HTML 파싱에 대한 Cheerio
마크다운 처리를 위해 표시됨
XML 처리를 위한 Fast-XML-Parser
CSV 변환을 위한 CSVtoJSON
보안을 위한 HTML Sanitize
HTML-마크다운 변환에 대한 턴다운
🔧 고급 포맷 처리 :
메타데이터 추출을 통한 HTML 구문 분석
JSON 예쁘게 인쇄 및 구조 보존
스타일링을 통한 마크다운 렌더링
CSV-테이블 변환
XML-JSON 변환
📜 기록 추적 : 최근에 가져온 URL의 로그를 유지합니다.
🛡️ 보안 초점 : XSS 공격을 방지하기 위한 콘텐츠 정리
설치
필수 조건
Node.js 16.x 이상
npm 또는 yarn
빠른 시작
저장소를 복제합니다.
지엑스피1
종속성 설치:
npm install프로젝트를 빌드하세요:
npm run build서버를 실행합니다:
npm start
데스크톱용 Claude와 통합
Claude for Desktop 구성 파일을 엽니다.
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
구성에 URL 변환 서버를 추가합니다.
{ "mcpServers": { "url-converter": { "command": "node", "args": ["/absolute/path/to/mcp-url-converter/build/index.js"] } } }데스크톱용 Claude를 다시 시작하세요
사용 가능한 도구
fetch
모든 URL에서 콘텐츠를 가져와 가장 적합한 출력 형식을 자동으로 감지합니다.
매개변수:
url(문자열, 필수): 콘텐츠를 가져올 URLformat(문자열, 선택 사항): 변환할 형식(auto,html,json,markdown,text). 기본값:auto
예:
Can you fetch https://example.com and choose the best format to display it?fetch-json
모든 URL에서 콘텐츠를 가져와 JSON 형식으로 변환합니다.
매개변수:
url(문자열, 필수): 콘텐츠를 가져올 URLprettyPrint(부울, 선택 사항): JSON을 예쁘게 인쇄할지 여부입니다. 기본값:true
예:
Can you fetch https://example.com and convert it to JSON format?fetch-html
모든 URL에서 콘텐츠를 가져와 HTML 형식으로 변환합니다.
매개변수:
url(문자열, 필수): 콘텐츠를 가져올 URLextractText(부울, 선택 사항): 텍스트 콘텐츠만 추출할지 여부입니다. 기본값:false
예:
Can you fetch https://api.example.com/users and convert it to HTML?fetch-markdown
모든 URL에서 콘텐츠를 가져와 마크다운 형식으로 변환합니다.
매개변수:
url(문자열, 필수): 콘텐츠를 가져올 URL
예:
Can you fetch https://example.com and convert it to Markdown?fetch-text
모든 URL에서 콘텐츠를 가져와 일반 텍스트 형식으로 변환합니다.
매개변수:
url(문자열, 필수): 콘텐츠를 가져올 URL
예:
Can you fetch https://example.com and convert it to plain text?web-search 및 deep-research
이러한 도구는 Perplexity 검색 기능에 대한 인터페이스를 제공합니다(MCP 호스트에서 지원하는 경우).
사용 가능한 리소스
recent-urls://list
최근 가져온 URL 목록을 타임스탬프와 출력 형식과 함께 반환합니다.
예:
What URLs have I fetched recently?보안
이 서버는 여러 가지 보안 조치를 구현하고 있습니다.
XSS 공격을 방지하기 위해
sanitize-html사용한 HTML 정리처리 전 콘텐츠 검증
오류 처리 및 안전한 기본값
Zod를 사용한 입력 매개변수 검증
안전한 출력 인코딩
테스트
MCP Inspector를 사용하여 서버를 테스트할 수 있습니다.
npm run test문제 해결
일반적인 문제
연결 오류 : URL이 접근 가능하고 올바르게 형식화되었는지 확인하세요.
변환 오류 : 일부 복잡한 콘텐츠는 형식 간에 깔끔하게 변환되지 않을 수 있습니다.
출처 간 문제 : 일부 웹사이트는 알 수 없는 출처의 요청을 차단할 수 있습니다.
디버그 모드
추가 디버깅 정보를 보려면 DEBUG 환경 변수를 설정하세요.
DEBUG=mcp:* npm start특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
감사의 말
모델 컨텍스트 프로토콜 로 구축됨
보안에 중점을 둔 현대적이고 적극적으로 유지 관리되는 라이브러리를 사용합니다.
OWASP 권장 사항을 기반으로 한 살균 접근 방식
최종 업데이트: 2025년 3월 29일
Available Tools
5 toolsfetchC
Fetch content from a URL with automatic content type detection
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format to convert to (default: auto) | |
| url | Yes | URL to fetch content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions automatic content type detection, which hints at behavior, but lacks critical details like error handling, timeouts, authentication needs, rate limits, or response structure. For a tool that interacts with external URLs, this is a significant gap in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without waste. It is front-loaded and appropriately sized for the tool's purpose, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of fetching from URLs, lack of annotations, and no output schema, the description is incomplete. It does not cover potential issues like network errors, content parsing, or return values, which are crucial for an agent to use the tool effectively in varied contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters (url and format). The description adds minimal value beyond the schema, as it only implies content type detection relates to the format parameter. No additional semantics or usage examples are provided, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as fetching content from a URL with automatic content type detection, which is clear but vague about what 'content' entails. It does not distinguish from sibling tools like fetch-html, fetch-json, etc., which likely fetch specific formats, making it less specific. The verb 'fetch' is generic, and the description lacks detail on the resource or output type beyond detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (fetch-html, fetch-json, etc.), which are explicitly named alternatives. It mentions automatic content type detection but does not specify scenarios where this is preferred over format-specific tools, leaving the agent without clear usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch-htmlB
Fetch content from any URL and convert to HTML format
| Name | Required | Description | Default |
|---|---|---|---|
| extractText | No | Whether to extract text content only (default: false) | |
| url | Yes | URL to fetch content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions fetching and converting to HTML, it doesn't address important behavioral aspects like error handling (e.g., what happens with invalid URLs), authentication requirements, rate limits, timeout behavior, or whether the tool performs any sanitization of the fetched HTML.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a simple tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool with good schema coverage but no annotations and no output schema, the description provides the basic purpose but lacks important contextual information. It doesn't explain what the HTML output looks like, whether it includes metadata, or how it handles different content types. The absence of output schema means the description should ideally provide some information about return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with both parameters clearly documented. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('fetch') and resource ('content from any URL') with the specific output format ('HTML format'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like fetch-json or fetch-markdown, which presumably fetch the same content but convert to different formats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (fetch, fetch-json, fetch-markdown, fetch-text). It mentions converting to HTML format, but doesn't explain when HTML format is preferable over other formats or what distinguishes it from the generic 'fetch' tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch-jsonC
Fetch content from any URL and convert to JSON format
| Name | Required | Description | Default |
|---|---|---|---|
| prettyPrint | No | Whether to pretty-print the JSON (default: true) | |
| url | Yes | URL to fetch content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions fetching and converting to JSON but fails to describe critical behaviors such as error handling (e.g., for non-JSON content), authentication needs, rate limits, or what happens if the URL is inaccessible. This leaves significant gaps for a tool that interacts with external resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality ('fetch content from any URL') and adds the key detail ('convert to JSON format') without any wasted words. It is appropriately sized for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching from external URLs with potential for errors) and the absence of both annotations and an output schema, the description is insufficient. It doesn't explain return values, error cases, or behavioral nuances, making it incomplete for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters (url and prettyPrint). The description adds no additional semantic meaning beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('fetch') and resource ('content from any URL'), and specifies the output format ('convert to JSON format'). However, it doesn't explicitly differentiate from sibling tools like 'fetch-html' or 'fetch-markdown' beyond the JSON output mention, which is implied but not directly contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (fetch, fetch-html, fetch-markdown, fetch-text). It lacks explicit context about alternatives, prerequisites, or exclusions, leaving the agent to infer usage based solely on the output format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch-markdownA
Fetch content from any URL and convert to Markdown format
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions fetching and converting to Markdown but does not cover critical aspects such as error handling (e.g., invalid URLs, network failures), authentication needs, rate limits, or what happens if conversion fails. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core functionality. There is no wasted language, and it directly communicates the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (fetching and converting web content) and lack of annotations and output schema, the description is incomplete. It covers the basic purpose but misses behavioral details and output expectations. However, it is adequate for a simple tool with high schema coverage, though it could benefit from more context on limitations or results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'url' parameter fully documented. The description adds no additional meaning beyond the schema, such as URL format constraints or examples. Since schema coverage is high, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('fetch content from any URL') and transformation ('convert to Markdown format'), distinguishing it from sibling tools like fetch-html, fetch-json, and fetch-text by specifying the output format. It uses precise verbs and identifies the resource (URL content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when Markdown output is needed from a URL, but it does not explicitly state when to use this tool versus alternatives like fetch-html or fetch-text. There is no guidance on exclusions or prerequisites, leaving usage context to inference from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch-textC
Fetch content from any URL and convert to plain text format
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions fetching and converting to plain text, but lacks details on error handling, rate limits, authentication needs, or what happens with non-text content (e.g., images, binary files). For a tool with no annotations, this leaves significant gaps in understanding its behavior and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key information: fetching content and converting to plain text. There is no wasted verbiage, and it directly communicates the tool's core functionality without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching from URLs, which can involve network issues, varied content types) and the absence of annotations and output schema, the description is incomplete. It doesn't address potential errors, output format details (e.g., how plain text is extracted), or behavioral traits like timeouts or size limits. This leaves the agent with insufficient context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'url' parameter clearly documented. The description adds no additional semantic information beyond what the schema provides (e.g., it doesn't specify URL formats, protocols supported, or content types). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch content') and resource ('from any URL'), and specifies the output format ('plain text'). It distinguishes from siblings by mentioning the conversion to plain text, which suggests differentiation from fetch-html, fetch-json, and fetch-markdown. However, it doesn't explicitly name the siblings or detail how it differs from the generic 'fetch' tool, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (fetch, fetch-html, fetch-json, fetch-markdown). It implies usage for converting content to plain text, but doesn't specify scenarios, exclusions, or alternatives. This lack of explicit context leaves the agent to infer usage, which is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
fetch - First observed
fetch-html - First observed
fetch-json - First observed
fetch-markdown - First observed
fetch-text
TDQS
Scored across 5 tools
The tools have significant overlap in purpose, as all fetch content from URLs, differing only in output format. An agent could easily misselect between fetch-html, fetch-json, fetch-markdown, and fetch-text, since the descriptions don't clarify when to use one format over another. The generic 'fetch' tool with automatic detection further confuses boundaries, as it might duplicate or conflict with the format-specific tools.
Tool names follow a highly consistent verb-noun pattern throughout, with all tools using 'fetch' as the verb followed by a hyphen and format descriptor (e.g., fetch-html, fetch-json). There are no deviations in style or convention, making the naming predictable and easy to parse for an agent.
With 5 tools, the count is reasonable for a URL fetching server, but it feels borderline due to redundancy. The tools could potentially be consolidated into fewer, more flexible tools (e.g., a single fetch tool with a format parameter), making the current set feel slightly over-specified for the simple domain of fetching URLs.
For the domain of fetching URL content, the tool set is nearly complete, covering automatic detection and common output formats (HTML, JSON, Markdown, plain text). A minor gap exists in handling errors or advanced configurations (e.g., headers, timeouts), but agents can likely work around this with the provided tools for basic fetching tasks.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Jina AI Reader/Search MCP — turn any URL into clean LLM-ready markdown, plus web search.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Related MCP Servers
- AlicenseAqualityDmaintenanceA production-ready Model Context Protocol server that enables language models to leverage AI-powered web scraping capabilities, offering tools for transforming webpages to markdown, extracting structured data, and executing AI-powered web searches.8120 PyPI110MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.1MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that intelligently fetches and processes web content, transforming websites and documentation into clean, structured markdown with nested URL crawling capabilities.26 npm9MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to securely fetch and extract readable text content from web pages through a standardized interface.1MIT