Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
NewsAPI.ai (Event Registry): 10 read-only MCP tools for news articles, events, autosuggest, trends
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
NEWSAPI_AI_API_KEY, NEWSAPI_AI_MAX_TOKENS_PER_SESSIONค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"newsapi": {
"command": "npx",
"args": [
"-y",
"@nubiia/mcp-newsapi"
],
"env": {
"NEWSAPI_AI_API_KEY": "ใส่ค่าของคุณ",
"NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add newsapi --env NEWSAPI_AI_API_KEY='ใส่ค่าของคุณ' --env NEWSAPI_AI_MAX_TOKENS_PER_SESSION='ใส่ค่าของคุณ' -- npx -y @nubiia/mcp-newsapiเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"newsapi": {
"command": "npx",
"args": [
"-y",
"@nubiia/mcp-newsapi"
],
"env": {
"NEWSAPI_AI_API_KEY": "ใส่ค่าของคุณ",
"NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"newsapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@nubiia/mcp-newsapi"
],
"env": {
"NEWSAPI_AI_API_KEY": "ใส่ค่าของคุณ",
"NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
NEWSAPI_AI_MAX_TOKENS_PER_SESSION envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub nubiia-dev ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: NEWSAPI_AI_API_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.2) เข้า registry 15 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Recta
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A Model Context Protocol (MCP) server for NewsAPI.ai (the Event Registry news intelligence API). It lets AI assistants like Claude search news articles and events (clusters of articles about the same happening), resolve names to entity URIs, see what is trending, and keep an eye on the account's token budget.
Built and maintained by [Nubiia](https://nubiia.es) — automatización e
integraciones con IA para negocios (MCP, Holded, Pipedrive y más). ¿Quieres algo así
para tu empresa? Escríbenos en [nubiia.es](https://nubiia.es).
Every search spends tokens from your plan, and a free plan has a small budget. This server is built to be frugal:
allow_archive: true (historical data costs extra tokens per year touched). allow_archive requires `date_start` and the date_start → date_end (default: today) range may span at most 1 year. A date_start/date_end older than 31 days without allow_archive is rejected with an explanation instead of silently returning nothing.suggest_* tools and get_usage are free — use them to resolve entities to URIs *before* searching.get_usage shows the remaining budget.Costs measured against a live account (31-day window):
| Tool | Tokens per call |
|---|---|
search_articles, get_article | 1 |
search_events, get_event (info) | 5 |
get_event (include_articles) | 1 |
get_trending_concepts | 10 |
suggest_*, get_usage | 0 |
Plans and pricing change — see newsapi.ai/pricing and docs/api-notes.md.
Ten read-only tools:
search_articles, get_articlesearch_events, get_eventsuggest_concepts, suggest_categories, suggest_sources, suggest_locationsget_trending_conceptsget_usageTotal: 10 tools, all marked readOnlyHint: true — nothing in this server writes to NewsAPI.ai or anywhere else.
Topic pages and saved searches, the analytics service (text categorization, sentiment of arbitrary text), story clustering, article mentions, aggregation result types (conceptAggr, timeAggr, …) and multi-tenant configuration.
npm install -g @nubiia/mcp-newsapi
git clone https://github.com/nubiia-dev/mcp-newsapi.git
cd mcp-newsapi npm install npm run build
| Variable | Required | Description |
|---|---|---|
NEWSAPI_AI_API_KEY | Yes | Your NewsAPI.ai API key (Dashboard). Secret — never commit it. |
NEWSAPI_AI_MAX_TOKENS_PER_SESSION | No | Max NewsAPI.ai tokens this server may spend per session (until the server process restarts). Default 200. |
export NEWSAPI_AI_API_KEY=your_newsapi_ai_key
export NEWSAPI_AI_MAX_TOKENS_PER_SESSION=200 # optional
The budget is per server process: each MCP client/server instance you start has its own counter, so two clients configured with 200 can together spend 400. It resets on restart.
Every call is charged its measured token cost (see the table above) before it is sent. When a call would exceed the remaining budget, the tool returns an error stating the remaining and total budget and how to raise it — and no request is sent to NewsAPI.ai. Free tools (suggest_*, get_usage) are never blocked. get_usage also reports the session budget (maxTokens, spentTokens, remainingTokens) next to your account balance. Calls the API rejects outright (4xx) are refunded; calls that fail after being accepted (including HTTP 200 {"error"} bodies) stay charged, because the API bills them. An invalid value (e.g. abc, -5) falls back to 200 with a warning on stderr; 0 disables all paid calls.
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": { "newsapi": { "command": "npx", "args": ["-y", "@nubiia/mcp-newsapi@latest"], "env": { "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key", "NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "200" } } } }
Or if installed from source:
{
"mcpServers": { "newsapi": { "command": "node", "args": ["/path/to/mcp-newsapi/dist/index.js"], "env": { "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key" } } } }
claude mcp add newsapi --env NEWSAPI_AI_API_KEY=your_newsapi_ai_key -- npx -y @nubiia/mcp-newsapi@latest
npx @nubiia/mcp-newsapi resolves the local package.json instead of the published package, and the mcp-newsapi binary is not on the PATH. Pin the registry version with @latest (as in the examples above), or launch the client from another directory.List parameters (lang, concept_uris, category_uris, source_uris, location_uris, ignore_source_uris, data_types, types, concept_types) accept either a single string or an array of strings: "lang": "spa" and "lang": ["spa"] are equivalent.
The recommended flow: **suggest_* (free) → search_* → get_***.
suggest_concepts · read-only · freeResolve a name ("Telefónica", "Pedro Sánchez") to a concept URI. Pass the uri as concept_uris to a search — far more precise than a keyword.
{ "prefix": "Telefónica", "types": ["org"], "count": 3 }
Searching for a company, person, place or organisation? Resolve it with
suggest_conceptsfirst and pass the returneduriasconcept_uris.keywordis for
free terms and topics and is noisy with common words: for example
keyword: "Telefónica"
in Spanish also matches the ordinary adjective "telefónica".
suggest_categories, suggest_sources, suggest_locations · read-only · freeSame idea for categories (news/Business), publications (bbc.co.uk) and places.
search_articles · read-only · 1 tokenAt least one of keyword, concept_uris, category_uris, source_uris, location_uris is required. Defaults: 10 results, newest first, duplicates skipped, last 31 days, 300-character bodies. Paginate with page; the response carries total and pages.
{
"concept_uris": ["http://en.wikipedia.org/wiki/Telefónica"], "lang": ["spa"], "date_start": "2026-10-01", "count": 5 }
Dates must be real YYYY-MM-DD dates, date_end must not precede date_start, and the archive rules above apply (allow_archive needs date_start, max 1 year).
Other options: keyword_loc, keyword_search_mode, ignore_keyword, ignore_source_uris, data_types (news/pr/blog), sort_by (date/rel/sourceImportance/cosSim), min_sentiment/max_sentiment, body_len, include_duplicates, allow_archive.
get_article · read-only · 1 tokenOne article by article_uri, with a longer body (body_len, default 3000).
search_events · read-only · 5 tokensEvents: clusters of articles about the same happening, with title, short summary, date, location, key concepts and article count. The right granularity for "what is happening with X". sort_by: "size" surfaces the biggest stories; min_articles_in_event filters noise.
get_event · read-only · 5 tokens (1 with include_articles)One event by event_uri, or — with include_articles: true — the articles covering it.
get_trending_concepts · read-only · 10 tokensPeople, organisations and places trending right now (last 2 days vs last 2 weeks) in news, social, pr or blog (blog trends may be unavailable on some plans, and the failed call is still billed). The priciest tool: call it sparingly.
get_usage · read-only · freeavailableTokens, usedTokens, remainingTokens. Check it before a batch of searches.
A local guard stops runaway agent loops before they drain the token budget:
| Tool(s) | Limit |
|---|---|
search_articles, search_events, get_article, get_event | 30 req/min |
get_trending_concepts | 20 req/min |
suggest_*, get_usage | 120 req/min |
| Everything else (default) | 60 req/min |
The API itself allows at most 5 simultaneous requests. 429/502/503/504 responses and connection-refused/DNS errors are retried with backoff; ambiguous failures (timeouts, connection resets) are not, because a metered request may already have been billed. Each attempt times out after 30 seconds.
A 401/403 response includes an explanation, not just "Unauthorized": the key may be wrong/revoked, or the account may be out of tokens (get_usage tells you which). The API key is sent in the request body, never in a URL, and is redacted from every error message (HTTP, network and JSON-parse errors alike).
npm install
npm run build npm test # runs entirely against mocks — no network, no API key npm run test:coverage npm run lint
See CONTRIBUTING.md for the full workflow and docs/api-notes.md for API behaviour verified against a live account.
MIT
@nubiia/mcp-holded — MCP server for the Holded invoicing/accounting API.@nubiia/mcp-signaturit — MCP server for the Signaturit e-signature API.