VOOZH about

URL: https://glama.ai/mcp/servers/aelaguiz/mcp-url-fetch?locale=es-ES

⇱ MCP de obtención de URL by aelaguiz | Glama


MCP de obtención de URL

Una implementación limpia del Protocolo de Contexto de Modelo (MCP) que permite a Claude o cualquier LLM obtener contenido de las URL.

Características

  • Obtener contenido desde cualquier URL

  • Soporte para múltiples tipos de contenido (HTML, JSON, texto, imágenes)

  • Control sobre los parámetros de la solicitud (encabezados, tiempo de espera)

  • Manejo limpio de errores

  • Funciona con Claude Code y Claude Desktop

Related MCP server: @kazuph/mcp-fetch

Estructura del repositorio

url-fetch-mcp/
├── examples/ # Example scripts and usage demos
├── scripts/ # Helper scripts (installation, etc.)
├── src/
│ └── url_fetch_mcp/ # Main package code
│ ├── __init__.py
│ ├── __main__.py
│ ├── cli.py # Command-line interface
│ ├── fetch.py # URL fetching utilities
│ ├── main.py # Core MCP server implementation
│ └── utils.py # Helper utilities
├── LICENSE
├── pyproject.toml # Project configuration
├── README.md
└── url_fetcher.py # Standalone launcher for Claude Desktop

Instalación

# Install from source
pip install -e .

# Install with development dependencies
pip install -e ".[dev]"

Uso

Ejecución del servidor

# 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 8000

Instalación en Claude Desktop

Hay tres formas de instalar en Claude Desktop:

Método 1: Instalación directa

# Install the package
pip install -e .

# Install in Claude Desktop using the included script
mcp install url_fetcher.py -n "URL Fetcher"

El archivo url_fetcher.py contiene:

#!/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()

Método 2: utilizar el script de instalación

# Install the package
pip install -e .

# Run the installer script
python scripts/install_desktop.py

El scripts/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())

Método 3: utilizar el comando CLI

# Install the package
pip install -e .

# Install using the built-in CLI command
python -m url_fetch_mcp install-desktop

Implementación básica

La implementación principal de MCP está en 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...

Capacidades de la herramienta

obtener_url

Obtiene contenido de una URL y lo devuelve como texto.

Parámetros:

  • url (obligatorio): La URL a buscar

  • headers (opcional): encabezados adicionales para enviar con la solicitud

  • timeout (opcional): tiempo de espera de la solicitud en segundos (predeterminado: 10)

obtener_imagen

Obtiene una imagen de una URL y la devuelve como una imagen.

Parámetros:

  • url (obligatorio): La URL desde donde obtener la imagen

  • timeout (opcional): tiempo de espera de la solicitud en segundos (predeterminado: 10)

obtener_json

Obtiene JSON de una URL, lo analiza y lo devuelve formateado.

Parámetros:

  • url (obligatorio): La URL desde la cual obtener el JSON

  • headers (opcional): encabezados adicionales para enviar con la solicitud

  • timeout (opcional): tiempo de espera de la solicitud en segundos (predeterminado: 10)

Ejemplos

El directorio examples contiene scripts de ejemplo:

  • quick_test.py : Prueba rápida del servidor MCP

  • simple_usage.py : Ejemplo de uso de la API del cliente

  • interactive_client.py : CLI interactiva para pruebas

# 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"
})

Pruebas

Para probar la funcionalidad básica:

# Run a direct test of URL fetching
python direct_test.py

# Run a simplified test with the MCP server
python examples/quick_test.py

Licencia

Instituto Tecnológico de Massachusetts (MIT)

A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/aelaguiz/mcp-url-fetch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server