curlMCP协议服务器
一个多模态对话协议(MCP)服务器,它通过类似curl的接口实现与Web API的交互,提供对各种网站和API的访问,包含用户认证和响应转换功能。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"curlmcp": {
"args": [
"mcp-remote",
"https://curlmcp.com/sse"
],
"command": "npx"
}
}
}
服务介绍
curl mcp - 你所需要的最后一个 MCP
[!IMPORTANT]
正在进行中的工作
需求:
- 提供简单的 REST API(使用 OpenAPI)以及远程 MCP
- 通过任何 MCP 客户端、API 和浏览器都易于使用。
- X & GitHub OAuth
- Stripe 信用存款
- 上下文指令
- 为流行网站(如 X 和 GitHub)提供 Markdown 转换代理
- 有限的免费使用(每小时限流),超出限额后按需付费。
- 可共享的指令模板
我的原则,使大语言模型能够与大量工具良好协作:
- 因为大语言模型了解流行的网站,所以指示它像普通人一样使用这些网站。
- 在幕后,确保每个输入都能被正确地路由到合适的替代网站。
- 确保每个响应都是 Markdown 格式,并且包含非常少的 token,理想情况下不超过 1000 个!这确保我们可以执行多个步骤。
- 确保死胡同能引导大语言模型回到正确的轨道上。
- 确保多步骤过程中的每一步都包含下一步要做什么的说明。
- 确保大语言模型访问的路径与用户或爬虫访问的路径相同。根据 accept 头和其他信息做出良好的响应以区分。
今天的开发者应该如何准备以支持这一点?
- 大多数 API 使用 POST 方法,但 GET 方法更容易通过 Markdown 进行指导。让我们推广使用 GET 方法,并推广具有最小 token 长度的简单易懂的 URL 结构。
- 确保使用 OpenAPI 展示可能的端点和路由。你的 API 应该是首要公民,而不是你的网站。
- 确保你的 OpenAPI 是可探索的,要么直接将其放在根目录下的
/openapi.json,如果不可行,则从/.well-known/openapi重定向到它。 - 确保所有作为 text/html 暴露的页面也暴露一个非 HTML 的变体(最好是 Markdown,如果是结构化数据也可以是 YAML),并且其长度不超过 1000 个 token,功能相同或相似。
- 在 API 中遇到错误时,应该总是将代理重新引导回正轨,就像我们对人类所做的那样。试着在 API 层级构建这些用户体验路径!
是否有可能将此作为中间件提供给 API?当然可以!统治一切的工具是 curl(或 fetch),并且可以通过以下方式使其安全:
- 确保从以人为先的网站路由到为 AI 优化的网站。
- 确保截断响应,使其永远不会超过某个限制。
- 确保优先接受 Markdown 格式。
使用
MCP 使用:
通过将以下内容添加到配置中,将其安装到您的 MCP 客户端中:
{
"mcpServers": {
"curlmcp": {
"command": "npx",
"args": ["mcp-remote", "https://curlmcp.com/sse"]
}
}
}
浏览器使用
The curlmcp api 也非常易于从浏览器使用。认证会自动处理。
CLI 使用
你可以直接使用 curl,或者使用 curl mcp 代理:
- 使用
curl -c cookies.txt https://curlmcp.com/login登录并存储 cookie - 使用
curl -b cookies.txt https://curlmcp.com/curl/{your-request}
API 使用:/curl/{url} 端点
/curl/{url} 端点允许你向任何 URL 发送 HTTP 请求,模仿 curl 命令行工具的行为。它支持长格式查询参数来指定请求详情,如 HTTP 方法、头部和数据。
某些 URL 根据你的配置模板(默认为 default-proxy.yaml)被设置为通过代理访问。
API 规范
GET /curl/{url}?request={method}&header={header}&data={data}&...
注意:{url} 默认使用 https 协议。
支持的查询参数
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
request |
字符串 | 指定 HTTP 方法。有效值:GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS。 |
request=POST |
header |
字符串数组 | 添加自定义 HTTP 头部。可重复用于多个头部。 | header=Content-Type:application/json |
data |
字符串数组 | 在请求体中发送数据(POST)或查询字符串(使用 get=true)。可重复用于多个数据对。 |
data=key=value |
data-urlencode |
字符串数组 | 以 URL 编码形式在请求中发送数据。 | data-urlencode=comment=this%20is%20awesome |
get |
布尔值 | 强制将数据作为 GET 请求的查询字符串发送。 | get=true |
include |
布尔值 | 将响应头包含在输出中。 | include=true |
head |
布尔值 | 发送 HEAD 请求。 | head=true |
user |
字符串 | 指定认证凭据(格式:用户名:密码)。 |
user=user:pass |
location |
布尔值 | 跟随 HTTP 重定向。 | location=true |
verbose |
布尔值 | 启用详细输出,以便调试。 | verbose=true |
access_token |
字符串 | 注入 OAuth 令牌进行 X 或 GitHub 认证。 | access_token=xyz |
instructions |
字符串 | 指定请求的上下文指令。 | instructions=transform_response_to_markdown |
链接
- 上一次尝试 (curl api): https://github.com/janwilmake/curlapi
- 上一次尝试 (fetch mcp): https://github.com/janwilmake/fetch-mcp