URL 가져오기 MCP
Claude나 LLM이 URL에서 콘텐츠를 가져올 수 있도록 하는 깔끔한 MCP(Model Context Protocol) 구현입니다.
특징
모든 URL에서 콘텐츠 가져오기
다양한 콘텐츠 유형(HTML, JSON, 텍스트, 이미지) 지원
요청 매개변수(헤더, 시간 초과) 제어
깔끔한 오류 처리
Claude Code와 Claude Desktop 모두에서 작동합니다.
Related MCP server: @kazuph/mcp-fetch
저장소 구조
지엑스피1
설치
# Install from source
pip install -e .
# Install with development dependencies
pip install -e ".[dev]"용법
서버 실행
# Run with stdio transport (for Claude Code)
python -m url_fetch_mcp run
# Run with HTTP+SSE transport (for remote connections)
python -m url_fetch_mcp run --transport sse --port 8000Claude Desktop에 설치
Claude Desktop을 설치하는 방법은 세 가지가 있습니다.
방법 1: 직접 설치
# Install the package
pip install -e .
# Install in Claude Desktop using the included script
mcp install url_fetcher.py -n "URL Fetcher"url_fetcher.py 파일에는 다음이 포함되어 있습니다.
#!/usr/bin/env python
"""
URL Fetcher MCP Server
This is a standalone script for launching the URL Fetch MCP server.
It's used for installing in Claude Desktop with the command:
mcp install url_fetcher.py -n "URL Fetcher"
"""
from url_fetch_mcp.main import app
if __name__ == "__main__":
app.run()방법 2: 설치 프로그램 스크립트 사용
# Install the package
pip install -e .
# Run the installer script
python scripts/install_desktop.pyscripts/install_desktop.py 스크립트:
#!/usr/bin/env python
import os
import sys
import tempfile
import subprocess
def install_desktop():
"""Install URL Fetch MCP in Claude Desktop."""
print("Installing URL Fetch MCP in Claude Desktop...")
# Create a temporary Python file that imports our module
temp_dir = tempfile.mkdtemp()
temp_file = os.path.join(temp_dir, "url_fetcher.py")
with open(temp_file, "w") as f:
f.write("""#!/usr/bin/env python
# URL Fetcher MCP Server
from url_fetch_mcp.main import app
if __name__ == "__main__":
app.run()
""")
# Make the file executable
os.chmod(temp_file, 0o755)
# Run the mcp install command with the file path
try:
cmd = ["mcp", "install", temp_file, "-n", "URL Fetcher"]
print(f"Running: {' '.join(cmd)}")
result = subprocess.run(cmd, check=True, text=True)
print("Installation successful!")
print("You can now use the URL Fetcher tool in Claude Desktop.")
return 0
except subprocess.CalledProcessError as e:
print(f"Error during installation: {str(e)}")
return 1
finally:
# Clean up temporary file
try:
os.unlink(temp_file)
os.rmdir(temp_dir)
except:
pass
if __name__ == "__main__":
sys.exit(install_desktop())방법 3: CLI 명령 사용
# Install the package
pip install -e .
# Install using the built-in CLI command
python -m url_fetch_mcp install-desktop핵심 구현
주요 MCP 구현은 src/url_fetch_mcp/main.py 에 있습니다.
from typing import Annotated, Dict, Optional
import base64
import json
import httpx
from pydantic import AnyUrl, Field
from mcp.server.fastmcp import FastMCP, Context
# Create the MCP server
app = FastMCP(
name="URL Fetcher",
version="0.1.0",
description="A clean MCP implementation for fetching content from URLs",
)
@app.tool()
async def fetch_url(
url: Annotated[AnyUrl, Field(description="The URL to fetch")],
headers: Annotated[
Optional[Dict[str, str]], Field(description="Additional headers to send with the request")
] = None,
timeout: Annotated[int, Field(description="Request timeout in seconds")] = 10,
ctx: Context = None,
) -> str:
"""Fetch content from a URL and return it as text."""
# Implementation details...
@app.tool()
async def fetch_image(
url: Annotated[AnyUrl, Field(description="The URL to fetch the image from")],
timeout: Annotated[int, Field(description="Request timeout in seconds")] = 10,
ctx: Context = None,
) -> Dict:
"""Fetch an image from a URL and return it as an image."""
# Implementation details...
@app.tool()
async def fetch_json(
url: Annotated[AnyUrl, Field(description="The URL to fetch JSON from")],
headers: Annotated[
Optional[Dict[str, str]], Field(description="Additional headers to send with the request")
] = None,
timeout: Annotated[int, Field(description="Request timeout in seconds")] = 10,
ctx: Context = None,
) -> str:
"""Fetch JSON from a URL, parse it, and return it formatted."""
# Implementation details...도구 기능
페치_URL
URL에서 콘텐츠를 가져와 텍스트로 반환합니다.
매개변수:
url(필수): 가져올 URLheaders(선택 사항): 요청과 함께 보낼 추가 헤더timeout(선택 사항): 요청 시간 초과(초)(기본값: 10)
페치_이미지
URL에서 이미지를 가져와 이미지로 반환합니다.
매개변수:
url(필수): 이미지를 가져올 URLtimeout(선택 사항): 요청 시간 초과(초)(기본값: 10)
페치_제이슨
URL에서 JSON을 가져와서 구문 분석하고 포맷된 형태로 반환합니다.
매개변수:
url(필수): JSON을 가져올 URLheaders(선택 사항): 요청과 함께 보낼 추가 헤더timeout(선택 사항): 요청 시간 초과(초)(기본값: 10)
예시
examples 디렉토리에는 예제 스크립트가 포함되어 있습니다.
quick_test.py: MCP 서버의 빠른 테스트simple_usage.py: 클라이언트 API 사용 예interactive_client.py: 테스트를 위한 대화형 CLI
# Example of fetching a URL
result = await session.call_tool("fetch_url", {
"url": "https://example.com"
})
# Example of fetching JSON data
result = await session.call_tool("fetch_json", {
"url": "https://api.example.com/data",
"headers": {"Authorization": "Bearer token"}
})
# Example of fetching an image
result = await session.call_tool("fetch_image", {
"url": "https://example.com/image.jpg"
})테스트
기본 기능을 테스트하려면:
# Run a direct test of URL fetching
python direct_test.py
# Run a simplified test with the MCP server
python examples/quick_test.py특허
MIT
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.