MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server by LevNyyon

Created 6/16/2026
Updated 1 day ago
Repository documentation and setup instructions

osint-mcp

osint-mcp

A small MCP server that watches the topics, brands, competitors, or sites you care about across the public web and hands back the raw signal. No LLM, no opinion baked in. The relevance score is only a hint. Your model reasons over the results.

Built and open-sourced by nyyon.com.

Sources (all keyless except GitHub):

  • Hacker News (Algolia search)
  • Reddit (public search)
  • DuckDuckGo (keyless web search)
  • Stack Overflow (StackExchange API)
  • GitHub Issues (optional GITHUB_TOKEN for higher rate limits)
  • Site feed: give a target a url and it watches that site directly through its RSS or Atom feed, auto discovered from the homepage or passed in.

Install

git clone https://github.com/LevNyyon/osint-mcp.git && cd osint-mcp
npm install
npm test

Connect it

Add to your MCP client config (Claude Desktop claude_desktop_config.json, or any MCP client):

{
  "mcpServers": {
    "osint": {
      "command": "node",
      "args": ["/absolute/path/to/osint-mcp/src/index.js"],
      "env": {
        "GITHUB_TOKEN": "optional ghp_xxx",
        "OSINT_MCP_DIR": "optional /custom/data/dir"
      }
    }
  }
}

Targets and the "already seen" set persist as JSON in OSINT_MCP_DIR (default ~/.osint-mcp/).

Tools

| tool | what it does | |------|--------------| | list_sources | the sources it can search, and which need a key | | add_target | save a watch: { name, url?, domain?, sources? } | | list_targets | your saved watches | | remove_target | drop one by name | | fetch_updates | pull recent hits for one target, all targets, or an ad hoc name / url. Returns { source, url, text, posted_at, confidence }. new_only (default true) returns only items unseen on prior fetches, so repeat calls surface just what is new. |

Typical flow

add_target { "name": "Anthropic", "domain": "anthropic.com" }   # watch the web
add_target { "name": "answer engine optimization" }
add_target { "url": "https://openai.com/blog" }                 # watch a site feed
fetch_updates { "since_days": 7 }

The model then reads the hits and decides what is worth your attention.

"Watch a site for new posts" means give a url. It defaults to feed only, so it will not also search the web for the hostname. Repeat fetch_updates calls return only posts you have not seen.

confidence is a coarse hint: 1.0 domain match, 0.6 name plus a product or news cue nearby, 0.4 bare name match. Filter with min_confidence if you want.

Notes

  • The MCP is pull based, not push. It supplies "what is new" when asked. To get "tell me when new comes in," call fetch_updates on a schedule (a cron or a daily agent run) and report the new items.
  • Each source is throttled and fails soft, so one flaky API will not sink a fetch. DuckDuckGo rate limits aggressively and may return little on bursts. Hacker News is the most reliable.
  • This is intentionally simple. It fetches and de-dupes. No ranking model, no summarization. That is the client's job.

MIT. Built by nyyon.com.

Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-osint-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "levnyyon-osint-mcp": { "command": "npx", "args": [ "levnyyon-osint-mcp" ] } } }