Mining Rights Daily Agent
Searches recent public mining news using Google News RSS.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mining Rights Daily Agent生成一份关于智利铜矿的今日简报"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mining Rights Daily Agent
一个面向矿业研究场景的 MCP(Model Context Protocol)作品:3 个独立 MCP Server 由 1 个 Agent Client 编排,生成带数据状态和引用源的中文矿权日报。
为什么选择这套设计
可验证:新闻、资源量、价格响应共享统一数据契约。
不装懂:线上数据源失败时返回
UNAVAILABLE;只有显式离线模式才使用DEMO。可演示:无 API Key、无外网也能跑完端到端流程。
可扩展:每个数据域是独立 MCP Server,可接入 Claude Desktop、Cursor 或其他 MCP Client。
安全边界清晰:外部 URL 仅允许公网 HTTP(S),并限制重定向、内容类型和响应大小。
Related MCP server: mining-rights-daily-agent
架构
Natural-language request
|
v
Agent Client
/ | \
v v v
News PDF Price
MCP MCP MCP
\ | /
cited Markdown briefMCP 工具
Server | Tool | 说明 |
|
| 搜索近期公开矿业新闻 |
| 提取公开网页正文 | |
|
| 抽取 Indicated/Inferred 资源量及页码证据 |
|
| 获取最近公开市场观测 |
| 获取序列并计算涨跌趋势 |
每个工具统一返回:
{
"data": {},
"source_url": "https://...",
"retrieved_at": "ISO-8601 UTC",
"data_status": "live | demo | unavailable",
"error": null
}快速开始
python -m pip install uv==0.11.23
uv sync --locked --extra devuv sync 会自动创建 .venv;CLI 会自动读取项目根目录中的 .env。
离线确定性演示:
MINING_AGENT_OFFLINE=1 uv run python -m agent "给我生成一份关于 Pilbara 锂矿的今日简报"Windows PowerShell:
$env:MINING_AGENT_OFFLINE="1"
uv run python -m agent "给我生成一份关于 Pilbara 锂矿的今日简报"完整说明见 RUN.md,样例见 examples/pilbara-brief.md。
项目文档
文档 | 内容 |
Docker、本地 Python、模型配置和客户端接入 | |
组件关系、数据流、可靠性与扩展方向 | |
MCP 通用响应及各领域字段定义 | |
技术取舍、原因和已知限制 | |
五分钟演示顺序与常见追问 | |
开发、测试和提交约束 |
数据源与限制
新闻:Google News RSS 搜索公开内容,Agent 会补取前 3 条新闻正文;受限页面返回不可用。
资源量:
pypdf文本抽取与保守正则;支持从吨位和品位计算 Li2O、Cu 或 Au 金属量。价格:免费公开接口通常没有稳定的锂现货数据,因此系统披露所用期货/ETF 代理,绝不将代理冒充现货。
DEMO只由MINING_AGENT_OFFLINE=1或demo://输入触发;线上异常不会自动替换成演示事实。目前支持
lithium、copper、nickel和zinc;未知矿种会返回UNAVAILABLE。
测试
uv run ruff check .
uv run ruff format --check .
uv run mypy agent common mining_news_mcp mineral_pdf_mcp lme_price_mcp
uv run pytest --cov20 项测试覆盖新闻/PDF/价格、SSRF 与响应限制、引用去重、MCP stdio 和离线端到端简报;
当前覆盖率门槛为 70%。
GitHub Actions 还会验证 Docker Compose、构建镜像、执行容器冒烟测试和 CodeQL 扫描。
依赖通过 uv.lock 固定,CI 与 Docker 均以 locked 模式安装,避免解析结果漂移。
安全
密钥只通过环境变量读取,
.env已被 Git 忽略。不绕过登录墙、验证码或付费授权。
外部文本只作为数据,不作为 Agent 指令。
公网下载会校验 DNS/IP、每次重定向、Content-Type 和最大响应大小。
仓库启用了 Secret Scanning、Dependabot 安全更新和
main分支保护。
License
MIT
Available Tools
2 toolsfetch_articleA
Fetch readable article text from a public URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the core action and fails to mention important traits such as handling of non-article URLs, paywalls, redirects, or the exact format of the returned text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant information. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, but the absence of an output schema and annotations leaves ambiguity about return values and edge-case behavior. The description is adequate for basic use but not fully complete for an agent to anticipate all outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema for 'url' has no description, and the description adds the qualifier that the URL must be public and that the resource is article text. This provides some meaning beyond the raw schema, but it does not detail URL validation, accepted formats, or error scenarios.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'readable article text' from a 'public URL', making the tool's purpose specific. It naturally distinguishes itself from the sibling 'search' by focusing on retrieving content from a given URL rather than discovering URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you have a public URL and need article text) but does not explicitly mention alternatives or when not to use it. No exclusion criteria or comparison with the sibling 'search' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Search recent public mining news. Results identify live versus demo data.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a useful trait: 'Results identify live versus demo data,' which gives insight into output characteristics. However, it does not mention read-only nature, rate limits, or error behavior, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant information. It front-loads the core purpose and adds a single behavioral detail, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two simple parameters and no output schema, the description gives a minimal but functional picture. It covers the search subject and hints at result characteristics (live vs demo), but it does not describe the return structure (e.g., fields like title, date, URL), leaving some uncertainty about the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It hints at the 'days' parameter through 'recent' and the 'query' parameter through 'Search,' but it does not clarify how 'days' works or what constitutes a valid query. This leaves parameter semantics vague and largely dependent on inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search recent public mining news.' It uses a specific verb ('Search') and a specific resource ('mining news'), and distinguishes from the sibling tool 'fetch_article' by focusing on discovery rather than retrieval. This makes the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('recent public mining news') but does not explicitly state when to prefer this tool over 'fetch_article' or include exclusions. There is no guidance on alternatives or when not to use it, leaving the agent to infer that search is for finding articles while fetch_article is for retrieving a specific one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: one searches for news articles, the other fetches a specific article's content from a URL. There is no overlap or ambiguity between them.
Both names start with lowercase verbs, but 'search' is a bare verb while 'fetch_article' follows a verb_noun pattern. The inconsistency is minor, but the names are clear and predictable in a small set.
With only 2 tools, the set feels thin for a news-focused agent. However, the tools cover the essential search-and-read workflow without unnecessary clutter.
The pair supports the core flow of searching for mining news and fetching articles. Minor gaps exist, such as no filtering or aggregation, but the basic lifecycle is complete for a read-only news agent.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
China A-share market data for research, backtesting and AI agents via MCP.
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
Daily A-share market brief with LG phase signals. No auth required.
AI Briefing MCP — Keep AI models current on industry developments
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides access to Chinese mainland financial data including A-stock quotes, financial statements, industry analysis, and macroeconomics through 42 MCP tools, with automatic data source fallback and no API key required.40Apache 2.0
- FlicenseNot gradedqualityCmaintenanceGenerates structured Chinese Markdown briefs on mining topics by orchestrating three MCP tools for news, resource data, and price information.
- FlicenseNot gradedqualityCmaintenanceProvides web search, page fetching, and A-stock data access (financial reports, announcements, research reports, penalties, IR meetings) via MCP tools.
- AlicenseAqualityBmaintenanceDeterministic A-share morning brief service exposing MCP tools to generate full market briefs, filtered news events, previous close context, and news coverage without external LLM keys.4Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Shuxiabit/mining-rights-daily-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server