We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/synackpwn/enrichment-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
import requests
from string import Template
from urllib.parse import urljoin
import jinja2
from services.base import BaseService
class Shodan(BaseService):
name: str = "shodan"
host: str = "https://api.shodan.io/"
class ShodanIP(Shodan):
endpoint: Template = Template("shodan/host/$ipaddress?key=")
def get(self, ipaddress: str) -> requests.PreparedRequest:
return requests.Request(
method=self.method,
url=urljoin(self.host, self.endpoint.substitute(ipaddress=ipaddress)),
headers=self.headers,
).prepare()
def parse_response(self, response: requests.Response, template: jinja2.Template) -> str:
if response and response.ok and response.json():
return template.render(
name=self.name,
**response.json()
)
else:
return ""
class ShodanDomain(Shodan):
endpoint: Template = Template("dns/domain/$domain?key=")
def get(self, domain: str) -> requests.PreparedRequest:
return requests.Request(
method=self.method,
url=urljoin(self.host, self.endpoint.substitute(domain=domain)),
headers=self.headers,
).prepare()
def parse_response(self, response: requests.Response, template: jinja2.Template) -> str:
if response and response.ok and response.json():
return template.render(
name=self.name,
**response.json()
)
else:
return ""