diyan-research-mcp
Click on "Deploy 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., "@diyan-research-mcpPull up the latest stock snapshot for NVIDIA."
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.
diyan-research-mcp · 企业研究证据链
面向企业投研与产业研究团队的只读研究 MCP,提供研究框架、冻结快照与历史因子摘要,每条结论附来源、数据截至日与证伪条件,不输出交易建议。
这个仓库里没有数据
本仓库只包含转发壳,职责是三件事:校验入参、携带租户凭据调用研究数据服务、在返回前剥掉交易类字段。研究框架、冻结快照、假设台账和因子摘要都存放在服务端,不随代码分发。
AI 客户端 ──MCP──▶ diyan-research-mcp(本仓库) ──HTTPS──▶ 研究数据服务
入参校验 / 凭据转发 / 输出过滤 数据、租户、档位、配额、审计这样分层有三个后果,都是有意为之:
壳可以公开审阅,因为它不含任何专有数据,也不含任何密钥。
租户身份、档位和配额一律由服务端裁定,壳不做信任判断,也就无法被绕过。
输出过滤留在壳内而不是只放在服务端,即便服务端出错或被篡改,交易类表述也无法离开进程。
Related MCP server: Petros Trading Scanner MCP
工具
工具 | 说明 |
| 读取研究框架片段,可选 enterprise / business / finance / people / brand |
| 读取最新冻结的股票研究快照 |
| 读取通过交付证据门槛的冻结假设 |
| 读取历史主题研究雷达摘要 |
| 读取冻结的因子历史 IC 摘要 |
| 调用受控研究接口做单标的研判 |
工具是否可用取决于凭据对应的档位。免费档开放研究框架与部分冻结快照,其余返回 error_type: backend 并说明需要付费租户凭据。
配置
唯一必填项是 DIYAN_API_KEY,在 MCP 详情页填写即可。其余变量见 .env.example,只在自建部署或联调时需要。
凭据缺失时进程仍会正常启动,但每次工具调用都会返回明确的配置错误。这是刻意的:托管环境可能在使用者填写凭据之前就拉起进程,启动即崩溃会让详情页上的服务看起来是坏的。
本地运行
python -m pip install -r requirements.txt
export PYTHONPATH=src
export DIYAN_API_KEY=<你的租户凭据>
export DIYAN_TRANSPORT=stdio
python -m diyan_research_mcp.server测试不需要网络和凭据:
python -m unittest discover -s tests -v边界
只读。没有任何写入、下单、部署或数据导出能力。
不返回实时行情。快照与摘要都是冻结产物,每条结果都带
as_of。不生成买卖、仓位、股数、跟单或收益承诺。含此类表述的提问在发出请求前就会被拒绝。
不读取使用者的本地文件、本地数据库或非必要环境变量。
服务端契约
如需自建后端,接口定义见 docs/BACKEND_CONTRACT.md。
许可与归属
由深圳瞳桦文化传媒有限公司开发与维护。MIT 许可,见 LICENSE。
Available Tools
6 toolscognition_radar_readA
读取历史主题研究雷达摘要,并标注其非实时性。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose the non-real-time nature of the data, which is valuable. However, it does not explain what 'annotate' means in practice, nor describe the return format, leaving some transparency gaps.
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 that efficiently communicates both the action ('read') and the critical caveat ('non-real-time'). No filler or redundant phrasing.
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 no parameters, no output schema, and no annotations, the description covers the basic behavior and the non-real-time caveat. However, it does not explain what a 'radar summary' contains or what the output structure looks like, which leaves some context incomplete.
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 tool has zero parameters, so there is nothing for the description to clarify. Per the rubric, a baseline of 4 is appropriate for 0-parameter tools, and the description does not need to compensate for missing parameter documentation.
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 'read' and the resource 'historical topic research radar summaries', and adds the specific action of flagging non-real-time data. It is distinct enough from sibling tools, but it does not explicitly differentiate itself by naming alternatives, so it falls short of a 5.
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 words 'historical' and 'non-real-time' imply this tool is for historical data rather than real-time, but there is no explicit statement about when to use it or when not to. No alternative tools are mentioned, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
framework_excerptB
读取经过批准的研究框架片段。framework 为 enterprise/business/finance/people/brand。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| framework | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It only says 'read', implying non-destructive behavior, but does not disclose return format, pagination, or restrictions beyond the allowed framework values. The behavioral transparency is minimal.
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 extremely concise: two short sentences, no filler. It is front-loaded with the core action and domain, and every word adds value.
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?
With no output schema, no annotations, and a 3-parameter input, the description is incomplete. It does not explain return values, behavior nuances, or the roles of 'query' and 'max_chars', making it insufficient for confident correct invocation.
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 adds meaning for the 'framework' parameter by listing valid values, but provides no explanation for 'query' or 'max_chars', leaving two of three parameters semantically unclear.
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 reads approved research framework excerpts, and lists the specific valid framework values (enterprise/business/finance/people/brand). This provides a specific verb+resource, though it does not explicitly differentiate from sibling tools.
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 the tool should be used when needing to read approved research framework excerpts, but does not provide explicit when-to-use or when-not-to-use guidance, nor mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hypothesis_getA
读取通过交付证据门槛的冻结假设;不返回未验证假设。
| Name | Required | Description | Default |
|---|---|---|---|
| hypothesis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key behavioral trait: only hypotheses that passed the delivery evidence threshold are returned, and unverified ones are filtered out. This adds meaningful context beyond the schema, though it does not cover side effects, errors, or permissions.
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?
Two short, front-loaded sentences with zero waste. The main action and the key exclusion are presented clearly and efficiently.
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?
Given no output schema and no annotations, the description covers the core behavior and the main selection criteria. Minor gaps like return format or error handling exist, but for a simple read tool with one parameter, this is reasonably complete.
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 for parameter meaning. It does not explain 'hypothesis_id' beyond what the schema already shows. The parameter name is self-explanatory, but the description adds no additional semantics, format, or usage details.
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 reads frozen hypotheses that have passed a delivery evidence threshold, and explicitly excludes unverified ones. This specific verb+resource+scope distinguishes it from sibling tools that handle other data types.
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 this tool by defining its selection criteria (frozen, passed threshold). It also provides an exclusion ('does not return unverified hypotheses'), which gives some guidance on when not to use it, though it does not explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ic_backtest_summaryA
读取冻结的因子历史 IC 摘要;不提供原始行情或面板。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the data is '冻结的' (frozen/static) and that raw market data/panels are excluded, which sets expectations. It does not mention output format or other traits, but for a simple zero-parameter read-only tool, this is adequate and not misleading.
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 sentence with two parts: the purpose and the exclusion. It is front-loaded with the action and resource, and every word earns its place. No unnecessary elaboration.
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?
Given the tool's simplicity (0 params, no output schema), the description adequately defines the data domain and its limitations. It tells the agent what to expect (a frozen IC summary) and what not to expect (raw quotes/panels). It does not describe the output structure, but that is less critical for such a straightforward read-only tool.
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 tool has zero parameters and an empty schema, so there are no parameter semantics to convey. The description confirms it is a simple read operation with no input needed, which aligns with the 0-param baseline of 4.
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 a specific verb and resource: '读取冻结的因子历史 IC 摘要' (reads frozen factor historical IC summary). It also explicitly excludes raw market data and panels, distinguishing it from data-retrieval tools. This fully satisfies the purpose clarity criteria.
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 provides a clear when-not: '不提供原始行情或面板' (does not provide raw quotes or panels), indicating it shouldn't be used for raw data. However, it does not name alternative tools or give explicit positive use-case guidance beyond the read action. Thus it has clear context with an exclusion but lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_analyze_safeD
调用受控研究接口,删除交易字段并附加研究辅助边界。
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | A | |
| symbol | Yes | ||
| question | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does reveal that trading fields are removed and a research assistance boundary is added, which is a useful behavioral trait, but it omits effects on inputs/outputs, whether the operation is read-only or mutating, permission requirements, error handling, or any rate limits.
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 short sentence, which is concise in length, but it sacrifices clarity and informativeness. It is under-specification rather than efficient communication; key operational details are missing, and the sentence does not front-load the most important user-facing behavior.
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?
Given no output schema, no annotations, 3 parameters with zero documentation, and a vague description, the tool is severely under-described. The agent cannot reliably determine the purpose, input semantics, return format, or safety profile from this description, making it inadequate for selection and invocation.
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% (no parameter descriptions), so the description must compensate by explaining what symbol, question, and market mean or how they are used. The description does not mention any parameters at all, leaving the agent without semantic guidance beyond raw names and types.
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 says to 'call controlled research interface, delete trading fields and append research assistance boundary,' which implies a research analysis operation with sanitization, but it does not clearly state what the tool actually does for the user (e.g., analyze a symbol/question). It is closer to a tautology of the tool name 'research_analyze_safe' and provides no concrete outcome, making it hard to distinguish from sibling analysis tools like hypothesis_get or cognition_radar_read.
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?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusions. The description only states 'call controlled research interface' without explaining the appropriate context or comparing to sibling tools such as stock_snapshot_latest or framework_excerpt.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_snapshot_latestA
读取最新冻结的股票研究快照,不代表实时市场状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It discloses a key trait: the data is frozen, not real-time, and specifically the latest snapshot. This helps set expectations about data freshness, which is critical for a research tool. It does not mention return format or side effects, but for a read operation this is acceptable.
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 sentence that immediately states the primary function and a critical caveat. Every word earns its place, and the structure is optimally front-loaded. There is no wasted text or repetition.
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 simple, parameterless read tool, the description is sufficiently complete. It tells the agent what it does (reads latest frozen snapshot) and its key limitation (not real-time). With no output schema required, this is adequate for an agent to select and invoke correctly.
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 tool has zero parameters, and the schema confirms this with full coverage. Per the baseline for zero-parameter tools, the description need not add parameter details. The description adds no param-specific meaning, but this is not a deficiency given the absence of parameters.
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 '读取最新冻结的股票研究快照' (reads the latest frozen stock research snapshot), specifying a concrete action (read) and resource (snapshot). It also distinguishes itself from real-time market tools by explicitly noting it does not represent real-time market status, which separates it from potential siblings.
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 provides clear context that this tool returns a frozen snapshot, not real-time data, implying it should be used when historical or non-real-time data is acceptable. However, it does not explicitly name alternative tools or state when not to use it, though the 'not real-time' caveat serves as an implied exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.1- First observed
cognition_radar_read - First observed
framework_excerpt - First observed
hypothesis_get - First observed
ic_backtest_summary - First observed
research_analyze_safe - First observed
stock_snapshot_latest
TDQS
Scored across 6 tools
Each tool targets a distinct research artifact—framework, stock snapshot, hypothesis, radar, IC backtest, and safe analysis—with no overlap in purpose. The descriptions clearly delineate what each returns, eliminating ambiguity.
Tool names mix noun compounds (framework_excerpt, ic_backtest_summary) with verb-suffix patterns (hypothesis_get, cognition_radar_read) and a verb-adjective combo (research_analyze_safe), lacking a unified convention. This inconsistency makes the naming pattern hard to predict.
Six tools is well within the ideal 3-15 range and appropriately scoped for a read-only research server providing diverse artifact views. Each tool earns its place without bloat.
The surface covers multiple research components, but lacks discovery tools to list available frameworks, stocks, or hypotheses. This could require agents to have prior knowledge of entity identifiers, creating a notable gap in usability.
Maintenance
Related MCP Connectors
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Read-only paper risk evidence and policy-gated committed event research. No real orders.
Read-only MCP server for Robinhood Chain token discovery, research, and due diligence via GMGN.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceRead-only MCP server for Taiwan active ETF research database, providing tools to list ETFs, track buy/sell deltas, view stock history and PnL, and find consensus buys across ETFs.5-
- FlicenseNot gradedqualityCmaintenanceRead-only MCP server for short-term stock and ETF market research, providing tools for futures, premarket movers, market breadth, earnings, watchlist signals, and daily briefings.-
- FlicenseNot gradedqualityBmaintenanceA research-only MCP server providing read-only data, analytics, and intelligence for Polymarket BTC 5-minute Up/Down markets, enabling LLM agents to query market snapshots, performance metrics, and strategy candidates.-
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server for operator-grade release inspection and benchmark browsing.2 npm1MIT