mcpfurl
mcpfurl是一个模型上下文协议(MCP)服务器,可以获取网页、下载图像/二进制文件并执行谷歌自定义搜索查询。它被打包为一个CLI,可以在stdio或流式http上运行。
亮点
- 获取完整网页,将其转换为Markdown,并将其流式传输回MCP客户端。
- 下载图像或其他二进制资源,并将其作为base64有效载荷返回。
- 执行Google自定义搜索查询,并使用JSON或Markdown摘要进行响应。
- 可选的SQLite支持的搜索缓存,具有可配置的TTL。
- HTTP模式可以用承载令牌锁定(
MCPFETCH_MASTER_KEY).
入门指南
- 简单模式 -使用Docker容器,它位于:https://ghcr.io/mbreese/mcpfurl
- 或者。.. -从下载二进制文件https://github.com/mbreese/mcpfurl发布(或运行操作工作流:https://github.com/mbreese/mcpfurl/actions/workflows/go.yml)
- 更难的 -您可以通过以下方式自行构建项目:
make但是,在Docker容器中运行更容易,特别是如果你还需要安装Chromedriver无头Chrome浏览器。
在stdio上运行
./mcpfurl mcp --wd-path /usr/bin/chromedriver --google-cx --google-key 通过HTTP运行
./mcpfurl mcp-http --addr 127.0.0.1 --port 8080 --master-key supersecret
# or pick up the same key via MCPFETCH_MASTER_KEY or config.toml当 --master-key (或 MCPFETCH_MASTER_KEY)已设置,每个请求 /mcp 或 / 必须包括 Authorization: Bearer 或者服务器返回 401 Unauthorized.
配置
配置值可以按以下优先级顺序来自三个位置:
- CLI标志。
- 环境变量(例如。,
MCPFURL_CONFIG,MCPFETCH_MASTER_KEY). config.toml(或指向的另一个文件MCPFURL_CONFIG).
看 config.toml.default 对于所有可用选项:
[mcpfurl]
web_driver_port = 9515
web_driver_path = "/usr/bin/chromedriver"
use_pandoc = false
search_engine = "google_custom"
allow = []
deny = []
[http]
addr = "0.0.0.0"
port = 8080
master_key = ""
[cache]
db_path = "cache.db"
expires = "14d"
[google_custom]
cx = ""
key = ""配置文件中只需要存在您覆盖的设置。CLI标志反映了这些名称(--wd-port, --cache等等)。集 allow/deny 在...之下 [mcpfurl] 控制服务器可以获取哪些URL;当 allow 为空,除非 deny 全球比赛。
依赖项
- 必须安装ChromeDriver(或其他与Selenium兼容的WebDriver),并通过以下方式访问
--wd-path. - Google自定义搜索API凭据(
google_custom.cx和google_custom.key)是搜索功能所必需的。 - SQLite用于缓存搜索结果(可选但推荐)。
开发人员注意事项
我使用devcontainers来管理这个项目。它使在Mac上运行的Linux容器中运行/构建变得更加容易。 以下是在VSCode之外使用devcontainers的一些提示:
要启动容器,请执行以下操作:
devcontainer up --workspace-folder .要在容器中打开bash提示符:
devcontainer exec --workspace-folder . bash要停止容器,请使用正常的docker工作流:
docker stop $NAME要重建容器的映像,请执行以下操作:
docker rmi $NAME