summarize_url
Fetch a URL, extract clean article text, and return an N-bullet summary.
url必填n_bullets
io.github.wzltmp由 GitHub 账号 wzltmp 发布v0.1.0更新于 Nov 2, 2026
Summarize URLs, repurpose content, daily news digests, find competitors. Cost telemetry built in.
远程 MCP 服务器,提供四个由大模型驱动的内容工具:网页摘要、内容改写、新闻摘要和竞品查找。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.wzltmp%2Fmcp-automations/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"automations": {
"type": "http",
"url": "https://mcp-automations.fly.dev/mcp"
}
}
}A production-grade Model Context Protocol server in Python — four LLM-callable tools, two transports, deployed two different ways.
Most "AI engineer" portfolio projects are applications (a RAG chatbot, an agent that does research). This project is the layer underneath — the typed tools an LLM can call and the transport plumbing that exposes them. MCP is the emerging standard for LLM tool use (~97M monthly SDK downloads as of early 2026); building one — not just consuming one — is the rare skill.
For a deeper look at the design decisions — why two transports, how cost telemetry works, the exception hierarchy, what I'd do differently — see WRITEUP.md.
Plus one MCP resource (automations://catalog) and one MCP prompt (daily_brief) — using all three MCP primitives, not just tools.
Every tool returns a typed Pydantic model with per-call token usage and dollar cost attached. Cheap tasks route to Haiku 4.5 ($1/M in, $5/M out), writing-heavy tasks to Sonnet 4.6 ($3/M in, $15/M out).
Add one of these to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%/Claude/claude_desktop_config.json (Windows), then restart Claude Desktop.
Option A — local stdio (no network, runs the server as a subprocess):
Option B — remote HTTP (talks to the live Fly server, no local setup):
Then ask Claude something like "summarize https://www.paulgraham.com/greatwork.html in 3 bullets" — it'll call summarize_url automatically.
Requires Python 3.13. Needs ANTHROPIC_API_KEY and TAVILY_API_KEY in .env (see .env.example).
The same Python callables back all three entry points. The transport is just a wrapper.
models.Cost) — token counts and USD attached so a client doesn't have to re-derive it.UpstreamAPIError, EmptyLLMResponseError, ExtractionError each route differently in logs and the Streamlit UI.MCP_TRANSPORT=stdio|http env switch; HTTP host/port from env so the same image runs on Fly..github/workflows/ci.yml).MCP is transport-agnostic, so one server serves both a local Claude Desktop user (stdio subprocess) and a hosted multi-tenant deployment (HTTPS). It also exposes three primitives that most demos skip:
automations://catalog returns the tool list as JSON)daily_brief chains daily_digest + repurpose_content)Using all three is a signal of reading the spec, not just a quickstart.
✅ Code on GitHub, CI green
✅ Public playground on Streamlit Cloud
✅ Public MCP HTTP server on Fly.io
✅ Cost protection (per-session caps + monthly Anthropic cap)
✅ Real test coverage (23 offline unit tests)
✅ Listed on the Official MCP Registry as io.github.wzltmp/mcp-automations
✅ Long-form writeup of design decisions
✅ Consumed by another agent, not just demoed — langgraph-research-agent's read_node calls this server's summarize_url tool over HTTP (with local fallback if the call fails)
🚧 Demo gif + screenshots (planned)
🚧 n8n self-host via docker-compose (planned)
MIT.
来源:README.md,提交 b8c9b1d
Fetch a URL, extract clean article text, and return an N-bullet summary.
url必填n_bulletsRepurpose long-form text into ``twitter_thread``, ``linkedin_post``, or ``newsletter``.
text必填formatSearch the web for recent news on ``topic`` and return a digest with citations.
topic必填n_resultsIdentify ``n`` plausible competitors for a company at ``domain`` (e.g., 'stripe.com').
ndomain必填已满足适用检查项的 100%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
# 30-second proof the server is up:curl -X POST https://mcp-automations.fly.dev/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","method":"initialize","id":1, "params":{"protocolVersion":"2024-11-05", "capabilities":{}, "clientInfo":{"name":"curl","version":"1"}}}'{ "mcpServers": { "mcp-automations": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "/absolute/path/to/mcp-automations", "env": { "ANTHROPIC_API_KEY": "sk-ant-...", "TAVILY_API_KEY": "tvly-..." } } }}{ "mcpServers": { "mcp-automations": { "url": "https://mcp-automations.fly.dev/mcp", "transport": "http" } }}pip install -r requirements.txt
# Stdio (for Claude Desktop):python -m mcp_server.server
# HTTP server (defaults to 0.0.0.0:8765):MCP_TRANSPORT=http python -m mcp_server.server
# Streamlit playground:streamlit run playground/app.py┌────────────────┐ stdio ┌──────────────────────┐│ Claude Desktop ├───────────────►│ │└────────────────┘ │ │ │ mcp_server/ │┌────────────────┐ HTTP/JSON │ server.py ││ Remote client ├───────────────►│ (FastMCP) │└────────────────┘ (Fly.io) │ │ │ 4 tools │┌────────────────┐ direct call │ 1 resource ││ Streamlit UI ├───────────────►│ 1 prompt │└────────────────┘ └──────────┬───────────┘ │ ┌──────────┴───────────┐ │ Anthropic + Tavily │ │ (lazy clients) │ └──────────────────────┘mcp-automations/├── mcp_server/│ ├── server.py # FastMCP server: 4 tools + 1 resource + 1 prompt│ ├── models.py # Pydantic I/O schemas (incl. per-call Cost telemetry)│ └── exceptions.py # MCPToolError + UpstreamAPIError / EmptyLLMResponseError / ExtractionError├── playground/│ └── app.py # Streamlit UI with per-session call + spend caps├── tests/ # offline unit tests (httpx/anthropic/tavily all mocked)├── Dockerfile # python:3.13-slim, MCP_TRANSPORT=http for Fly├── fly.toml # shared-cpu-1x, 256mb, auto-stop when idle└── .github/workflows/ # ruff + strict mypy + pytest on every push