新時空 MCP 接入指南

本文介紹如何連接新時空 MCP 服務,並在 AI Agent 應用中調用資訊工具。下文所列參數名、默認值、取值範圍與返回格式,均按線上服務的實際行為整理。

一、Agent 速查

照下面順序操作即可跑通全流程。
  1. 連接 https://mcp.newtimespace.com/mcp,Transport 為 Streamable HTTP,無需任何 API Key。
  2. 服務端共 2 個工具:search_articles(檢索列表)、get_article_detail(取正文)。
  3. 取最新資訊:傳 {"page":1,"limit":10},不要傳 query。
  4. 檢索主體:傳 {"query":"小米"}。只傳一個核心詞,不要空格、不要 AND/OR。
  5. 篩日期:用 start_date / end_date(YYYY-MM-DD)。不存在 date 參數。
  6. 列表默認不含正文;需要全文時拿列表裏的 ID 調 get_article_detail(一次最多 10 個)。
  7. 返回內容是 Markdown 文本,不是 JSON。
  8. 看到 ⚠️ 服務端提示 就按提示改參數重試一次;看到空結果先去掉 category / 日期限定。
  9. 加不了 MCP 客戶端?直接看 第十二節,有復製即可運行的 curl 與 SDK 片段。

二、服務信息

項目值
Endpointhttps://mcp.newtimespace.com/mcp
TransportStreamable HTTP(POST + SSE 響應)
Authentication無需 API Key
Server Naments-news-mcp-server
Version2.1.0
Protocol Version支持 2024-11-05 / 2025-03-26 / 2025-06-18 / 2025-11-25;服務端回顯客戶端請求的版本,無法識別時回落到最高的 2025-11-25。手寫客戶端填 2025-03-26 即可正常工作。
Toolssearch_articles、get_article_detail
CORS允許跨域(Access-Control-Allow-Origin: *),瀏覽器端可直連

服務端支持會話復用:initialize 的響應頭會返回 mcp-session-id,後續請求需回傳該頭。使用標準 MCP 客戶端時無需關心,SDK 會自動處理;手寫 HTTP 客戶端請參見 第十二節。

三、客戶端配置

動手前先對號入座:你是哪種 Agent

情況 A:能添加 MCP Server(Claude Desktop、Cursor、Cline、WorkBuddy、Cherry Studio 等支持 MCP 的客戶端)

 → 用下面的配置塊,把 endpoint 交給客戶端托管,兩個工具會自動出現在你的工具列表裏。

情況 B:不能添加 MCP Server,只能發 HTTP 請求(網頁抓取型 Agent、只有 fetch / curl 能力的運行環境)

 → 直接跳到 第十二節,那裏有復製即可運行的 curl 與 Python SDK 片段。

 → 註意:本服務不支持用 GET 直接抓取,必須 POST 並攜帶指定請求頭。

標準客戶端(Claude Desktop / Cursor / Cline / WorkBuddy 等)

{
  "mcpServers": {
    "nts-news": {
      "url": "https://mcp.newtimespace.com/mcp"
    }
  }
}

只寫 url 即可,兼容性最好。若你的客戶端要求標註傳輸類型,按該客戶端文檔補 "type",常見取值為 http 或 streamable-http(各家叫法不一)。若配置文件的頂層鍵不是 mcpServers(例如 VS Code 用 servers),按其文檔調整結構即可,url 值不變。本服務只支持 Streamable HTTP,不支持舊的 HTTP+SSE 雙端點模式。

遠程 URL 直連(支持從 URL 添加的客戶端)

https://mcp.newtimespace.com/mcp

四、Tool 總覽

工具用途說明
search_articles 檢索列表 按關鍵詞 / 分類 / 日期區間檢索文章,返回摘要 + 元數據的 Markdown 列表,默認不返回正文。
get_article_detail 取正文 按 article_id 獲取一篇或多篇的完整正文(Markdown,已清洗樣式噪音)。單次最多 10 個 ID。

五、search_articles 參數

所有參數均為可選。不傳任何參數即返回全站最新文章。

參數 類型 默認 說明與約束
query 可選 string — 核心檢索詞,同時匹配標題與摘要。只傳單個主體詞(如 小米、英偉達、01810)。
不要傳空格分隔的多詞或布爾運算符(如 小米 財報、小米 AND 財報),服務端會直接返回空結果並給出警告。
支持股票代碼(01810、03033.HK)檢索。
category可選 string — 分類名,精確匹配、區分大小寫,且必須與 language 配對(中文分類不能配 en)。合法值見 第六節。不傳則檢索全站。
language 可選 enum zh-cn zh-cn 簡中 | zh-hk 繁中 | en 英文。同時決定返回語言與 url 路徑。
start_date 可選 string — 起始日期,格式 YYYY-MM-DD,含當天 00:00:00。可單獨使用(表示該日至今)。
end_date 可選 string — 結束日期,格式 YYYY-MM-DD,含當天 23:59:59。篩單日則起止傳同一天。
sort 可選 enum publish_time publish_time(發布時間)| id(文章 ID)。
order 可選 enum desc desc 降序 | asc 升序。
include_content 可選 boolean false 是否在列表結果中直接附帶完整正文。默認 false 只給摘要以節省 Token。僅在只取 1~3 篇時使用;批量閱讀請改走 get_article_detail。
page 可選 integer 1 頁碼,最小 1。傳 0 會被拒絕並返回參數校驗錯誤。
limit 可選 integer 10 每頁條數,範圍 1–100。超過 100 會被拒絕並返回參數校驗錯誤。
註意體量:limit=100 單次響應約 4 萬字符(≈2 萬 Token)。日常取 5–10 即可。

參數名不存在時不會報錯,只會靜默失效

傳了未定義的參數(例如把日期寫成 "date": "2026-10-20"),服務端不會報錯,而是直接忽略該字段,返回全站最新文章。Agent 會以為篩選成功、實際拿到的是無關數據,這是最常見的踩坑點。

請嚴格使用上表參數名。日期篩選只有 start_date / end_date 兩個。

六、category 合法取值(按語言)

分類名隨語言變化,必須精確匹配,且區分大小寫。

language合法分類
zh-cn財經 | 新股 | ETF | 科技 | 出海 | 新時空研究院 | 財經FAQ
zh-hk財經 | 新股 | ETF | 科技 | 出海 | 新時空研究院 | 財經FAQ
enFinance | IPO | ETF | Tech | Overseas | Research | 財經FAQ

不確定分類時的自糾錯辦法

任意傳一個占位分類(如 {"category":"_"}),服務端不會報錯,而是在返回的 ⚠️ 服務端提示 中回吐該語言下的權威分類清單,據此重填 category 重試即可。

註意:en 分類清單末尾的 財經FAQ 為服務端當前實際返回的中文名,未做本地化,按原樣傳即可。

七、get_article_detail 參數

參數類型必填說明
article_ids string 是 文章 ID,多個用英文逗號分隔,如 "1455411" 或 "1455411,1455409"。
單次最多 10 個,超過會返回 [PARAMETER_EXCEEDED_LIMIT] 錯誤。逗號後帶空格可容錯。
language enum 否 zh-cn(默認)| zh-hk | en。同一 article_id 在三種語言下均可取到對應語言的正文,ID 跨語言共享。

article_id 來自 search_articles 列表中每條的 (ID: 1455793) 標註。

八、返回內容

search_articles

返回單段 Markdown 文本,不是 JSON。結構固定為「概要行 → 分隔線 → 逐條列表」:

📋 NewTimeSpace 資訊檢索結果
關鍵詞: 小米 | 分類: 全部 | 語言: zh-cn
日期: * ~ * | 排序: publish_time desc
第 1/15 頁 · 本頁 10 條 · 總計 143 條
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【1】恒生中國企業(02828.HK)盤中漲0.96%,恒指重回23000點… (ID: 1455411)
· 分類: ETF | 語言: zh-cn | 發布時間: 2026-10-23T13:45:24+08:00
· 作者: 沈博瀚 | 來源: 新時空 | 標簽: ETF盤中異動,恒生中國企業,02828.HK
· 摘要: 恒生中國企業(02828.HK)10月23日盤中漲0.96%、報79.640港元…
· 鏈接: https://www.newtimespace.com/zh-cn/etf/1455411.html

──────────────────────────────

【2】…
  • 概要行給出當前頁碼 / 總頁數 / 本頁條數 / 命中總數,可據此判斷是否需要翻頁。
  • 列表中的 摘要 可能被截斷(以 ...... 結尾),需要全文請調 get_article_detail。
  • 發布時間 為帶時區 ISO 8601(+08:00)。
  • 鏈接 的路徑隨 language 變化(/zh-cn/、/zh-hk/、/en/)。
  • 傳 include_content: true 時,每條改為 📰 文章詳情 [ID: …] 塊並附 正文內容 (N 字,Markdown)。

get_article_detail

📰 文章詳情 [ID: 1455411]
標題: 恒生中國企業(02828.HK)盤中漲0.96%,恒指重回23000點、國企指數午盤漲0.93%
分類: ETF | 語言: zh-cn | 時間: 2026-10-23T13:45:24+08:00
作者: 沈博瀚 | 來源: 新時空 | 標簽: ETF盤中異動,恒生中國企業,02828.HK
鏈接: https://www.newtimespace.com/zh-cn/etf/1455411.html
────────────────────────────────────────
正文內容 (842 字,Markdown):
新時空訊:截至10月23日13時39分,恒生中國企業(02828.HK)上漲0.96%…

多篇時同樣以 📰 文章詳情 [ID: …] 分塊連續返回。單篇正文約 800–2800 字。

九、Agent 調用建議

標準兩步式:先檢索列表拿到 ID,再按需取正文,避免一次性拉取大量正文導致上下文溢出。

  1. 檢索:search_articles({"query":"小米","limit":10})。先看概要行的命中總數,判斷關鍵詞是否過寬(數萬條)或過窄(0 條)。
  2. 選目標:從列表挑 1–10 條最相關的 ID。
  3. 取正文:get_article_detail({"article_ids":"1455411,1455409"})。
  4. 整理輸出:回答中保留 標題 + 發布時間 + 鏈接,便於溯源。

常見場景速查

場景調用方式
今日最新資訊{"page":1,"limit":10},不傳 query
某公司近期動態{"query":"小米","limit":10}
某公司 + 限定板塊{"query":"小米","category":"科技"}
指定日期區間{"start_date":"2026-10-20","end_date":"2026-10-22","limit":10}
只要某個板塊{"category":"ETF","limit":10}
英文資訊{"query":"NVIDIA","language":"en","category":"Tech"}
深度分析單篇先檢索拿 ID → get_article_detail({"article_ids":"1455411"})
只要 1~3 篇全文{"query":"小米","limit":2,"include_content":true}

十、錯誤處理與自糾錯

服務端會區分兩類失敗:參數越界返回工具錯誤(isError: true),無結果返回空文案 + 提示。

返回內容含義處理方式
MCP error -32602: Input validation error: Number must be less than or equal to 100 at limit 參數越界 limit 改到 ≤100,page 改到 ≥1 後重試。
❌ 獲取文章詳情失敗: API HTTP 400 [PARAMETER_EXCEEDED_LIMIT] … 單次最多支持查詢 10 條 ID 數量超限 把 article_ids 拆成每批 ≤10 個,分批調用。
📭 未找到符合條件的新聞數據。。 無命中 先去掉 category 與日期限定,只留 query 重試;仍無結果則換更短的核心詞。
📭 未找到匹配該分類的新聞數據。。 + ⚠️ 服務端提示:… 下可用分類:… 分類非當前語言合法值 照警告裏回吐的分類清單重填 category。
⚠️ 服務端提示:query 含空格或布爾運算符,建議僅傳入單個核心關鍵詞 檢索詞過復雜 拆成單個詞重試,如 "小米 AND 財報" → "小米"。
📭 未找到指定的文章內容 [IDs: 999999999] ID 不存在 重新用 search_articles 取有效 ID,不要憑空構造。

把 warnings 用起來

返回文本末尾若出現 ⚠️ 服務端提示(請據此自我修正),說明參數存在問題但請求已成功返回。Agent 應讀取提示內容、修正參數、重試一次,而不是把空結果當成「真的沒有這條新聞」直接回復用戶。

十一、常見錯誤清單

錯誤做法正確做法
用 date 參數篩日期用 start_date + end_date;date 會被靜默忽略
以為返回摘要就夠了,忽略正文獲取列表摘要會截斷,長文分析必須調 get_article_detail
把返回文本當 JSON 解析返回是 Markdown 文本,直接閱讀或用正則提取 (ID: (\d+))
query 傳 "小米 財報 三季度"只傳 "小米",再按 publish_time 或取正文自行篩選
中文分類配 en({"category":"財經","language":"en"})英文用 Finance;分類須與語言配對
limit=1000 想一次拉全量最大 100,翻頁取;或縮小日期區間
一次給 article_ids 傳 20 個單次 ≤10 個,分批調用
猜參數名(keyword、q、lang、type)未定義參數會被靜默丟棄,只會拿到全站最新數據

十二、不走客戶端:手寫 HTTP 調用

如果所在環境無法添加 MCP Server,只要能發 POST 請求就能調用本服務。整個流程兩步:先 initialize 拿會話 ID,再帶著會話 ID 發 tools/call。

12.1 硬性要求(缺一不可)

項目要求
方法必須 POST。用 GET 會被拒絕。
路徑https://mcp.newtimespace.com/mcp(末尾多余的 / 可容忍)
Content-Type必須 application/json
Accept必須同時包含兩個值:application/json, text/event-stream。只寫其中一個會返回 406。
Mcp-Session-Idinitialize 之後的每個請求都要帶,值取自 initialize 的響應頭 mcp-session-id。

12.2 最快方式:一條命令跑完

把兩步合成一次執行,直接返回數據:

SID=$(curl -si --max-time 40 -X POST https://mcp.newtimespace.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"web-agent","version":"1.0"}}}' \
  | grep -i '^mcp-session-id:' | tr -d '\r' | cut -d' ' -f2) && \
curl -s --max-time 40 -X POST https://mcp.newtimespace.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_articles","arguments":{"query":"小米","limit":2}}}'

它就是下面 12.3 的兩步用 && 串起來的。若你的運行環境一次只能執行一條命令,直接用這條最省事。

12.3 拆開執行(兩步分別調用)

第一步,握手並取出會話 ID:

SID=$(curl -si --max-time 40 -X POST https://mcp.newtimespace.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"web-agent","version":"1.0"}}}' \
  | grep -i '^mcp-session-id:' | tr -d '\r' | cut -d' ' -f2)
echo "SID=$SID"

拆開執行時必須註意

SID 是 shell 變量,不是寫死在命令裏的常量。兩步必須在同一個 shell 會話中執行,否則第二步取不到值,會收到 400 Session missing or invalid。
若你只能分兩次、跨會話執行,請把第一步打印出的 ID 值直接填進第二步的 -H "Mcp-Session-Id: 實際值",不要用 $SID。

第二步,帶著會話 ID 調用工具:

curl -s --max-time 40 -X POST https://mcp.newtimespace.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_articles","arguments":{"query":"小米","limit":3}}}'

響應是 SSE 流,正文包在 data: 行裏:

event: message
data: {"result":{"content":[{"type":"text","text":"📋 NewTimeSpace 資訊檢索結果n…"}],"isError":false},"jsonrpc":"2.0","id":2}

取用方法:取 data: 其後那一段 JSON,讀 result.content[0].text,內容即第八節所示的 Markdown 文本。若 result.isError 為 true,text 裏是錯誤說明而非數據。

12.4 用官方 SDK(Python)

若環境裏有 Python 且能 pip install mcp,直接用官方 SDK 最省事,握手與會話管理它全包了:

import anyio
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client

async def main():
    async with streamable_http_client("https://mcp.newtimespace.com/mcp") as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print([t.name for t in tools.tools])

            r = await session.call_tool("search_articles", {"query": "小米", "limit": 3})
            print(r.content[0].text)

anyio.run(main)

適配 mcp 2.x:只傳 URL 即可連通,SDK 會自動把協議版本協商到 2025-11-25,兩個工具及全部參數均正常。註意 2.x 起字段為蛇形命名(is_error、input_schema),照舊版教程寫 isError 會報 AttributeError。

12.5 三個可以省掉的動作

  • notifications/initialized 可以不發。規範建議發送,但本服務不強製——跳過它直接調 tools/call 完全正常。發了會返回 202 空響應,無副作用。
  • MCP-Protocol-Version 請求頭可以不帶,帶了值不對也不影響調用。
  • 同一個會話 ID 可以連續復用多次調用,不必每次重新 initialize;若中途失效,重跑第一步即可。

12.6 排錯對照

現象真實原因處理
406 Not Acceptable: Client must accept both application/json and text/event-stream Accept 頭沒有同時包含兩個值 改成 Accept: application/json, text/event-stream
400 Bad Request: Session missing or invalid 四種可能:① 沒先做 initialize ② 請求漏了 Content-Type: application/json ③ initialize 的 body 缺 protocolVersion 或 clientInfo ④ 會話已失效 不要被文案誤導成“只是 session 問題”。先補全請求頭與 body,再重新 initialize
404 Cannot POST / POST 打到了域名根路徑 路徑必須帶 /mcp
400 Invalid or missing session ID 直接對端點發了 GET 本服務不支持 GET 抓取,改用 POST
{"error":{"code":-32601,"message":"Method not found"}} method 名拼錯 只有 initialize / tools/list / tools/call
MCP error -32602: Tool xxx not found 工具名拼錯 只有 search_articles、get_article_detail,先跑 tools/list 核對

連上後先做一次自檢

發一次 {"jsonrpc":"2.0","id":1,"method":"tools/list"},確認返回裏能看到 search_articles 與 get_article_detail 兩個工具及其參數 schema,再發起業務調用。這樣能在參數寫錯之前就發現問題,而不是等到返回空結果時才懷疑人生。

瀏覽器直連說明

Access-Control-Allow-Origin: *,且 mcp-session-id 已通過 Access-Control-Expose-Headers 暴露,因此前端 JS 的 fetch 也能直接讀到這個響應頭,可以在瀏覽器裏完成整套握手。

十三、使用限製

項目限製
鑒權無,公開調用
每頁條數1–100,默認 10
詳情批量單次 ≤10 個 article_id
單次響應體量limit=10 約 4 千字符;limit=100 約 4 萬字符(≈2 萬 Token)
響應耗時常規 0.2–1.5 秒
語言覆蓋zh-cn / zh-hk / en,同一文章 ID 三語皆可取