Atlas / MCP servers / yoloshii / Gigaxity Deep Research

Gigaxity Deep ResearchSAFE

mcp/yoloshii/gigaxity-deep-research

Open-source deep research MCP. Qwen3-30B-A3B-Thinking via OpenRouter, cited web synthesis for Claude Code, Codex, Cursor, Hermes and any MCP-compatible agent.

Verdict
SAFE
Grade
B
Trust score
88 /100
Exposed tools
25 24r · 1w · 0d
Transport
stdio
License
MIT
Stars
62
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Gigaxity Deep Research — Open-source deep research MCP server for Claude Code, Codex, Cursor, Hermes, and any MCP-capable agent

Open-source deep research MCP server for Claude Code, Hermes, Cursor, and any MCP-compatible agent. Qwen3-30B-A3B-Thinking via OpenRouter plus multi-source web synthesis with citations.

Gigaxity Deep Research is a multi-source synthesis pipeline — seven MCP tools (three primitives search/vertical_search/research plus four deep-research tools ask/discover/synthesize/reason) with a matching FastAPI REST surface, fronting parallel multi-source search, RRF fusion, citation binding, and contradiction detection. The synthesis stage runs against any OpenAI-compatible chat-completions model; the recommended default is Alibaba's Qwen3-30B-A3B-Thinking, a reasoning-tuned 30B-A3B MoE model, but DeepSeek-R1, Qwen-QwQ, Llama 3.x, and hosted-aggregator endpoints (OpenRouter and the like) all work — pick any model your endpoint serves. The search layer pulls from a "Triple Stack" of complementary MCPs (Context7, Exa, Jina) alongside SearXNG, Tavily, LinkUp, Brave, and Parallel connectors. A bundled `gptr-mcp` companion — the MCP shim around GPT Researcher — adds Reddit, X, and YouTube as social-first sources.

If you want to run the synthesis model on your own hardware, the local-inference branch swaps OpenRouter for any OpenAI-compatible endpoint (vLLM, SGLang, or llama.cpp). The search-MCP layer is priced separately by each provider. See [docs/guides/free-tier-strategy.md](docs/guides/free-tie

Read from source at commit 2d2a884c2fc0OBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add gigaxity-deep-research --env BRIGHTDATA_API_TOKEN=${BRIGHTDATA_API_TOKEN} --env EXA_API_KEY=${EXA_API_KEY} --env JINA_API_KEY=${JINA_API_KEY} --env JINA_GHOST_KEY=${JINA_GHOST_KEY} -- uvx gigaxity-deep-research
claude-desktop
{
  "mcpServers": {
    "gigaxity-deep-research": {
      "command": "uvx",
      "args": [
        "gigaxity-deep-research"
      ],
      "env": {
        "BRIGHTDATA_API_TOKEN": "${BRIGHTDATA_API_TOKEN}",
        "EXA_API_KEY": "${EXA_API_KEY}",
        "JINA_API_KEY": "${JINA_API_KEY}",
        "JINA_GHOST_KEY": "${JINA_GHOST_KEY}"
      }
    }
  }
}
03

Exposed tools (25)

24 read · 1 write · 0 destructive.

ToolRiskDescription
capture_screenshot_urlreadCapture a screenshot of a webpage and return the hosted image URL.
classify_textreadZero-shot classify texts into supplied labels.
deduplicate_stringsreadPick a semantically diverse subset, dropping near-duplicates.
exa_answerreadFast factual answer with citations. 1-2s, 94% SimpleQA accuracy.
exa_answer_detailedreadDetailed factual answer with full source text. For when you need more context.
extract_pdfreadExtract layout elements (figures, tables, equations) from a PDF.
guess_datetime_urlreadEstimate when a page was published, for freshness and credibility checks.
parallel_read_urlreadRead several URLs concurrently. Preferred over repeated read_url calls.
parallel_search_arxivreadSearch arXiv for several queries concurrently.
parallel_search_ssrnreadSearch SSRN for several queries concurrently.
parallel_search_webwriteRun several web searches concurrently. Use for query variants in one pass.
primerreadReport current UTC time and this server
read_urlreadRead a webpage or PDF and return clean markdown.
scrape_as_markdownreadScrape a blocked URL as markdown using Brightdata Web Unlocker.
searchreadMulti-source search with RRF (Reciprocal Rank Fusion).
search_arxivreadSearch arXiv for academic papers.
search_bibtexreadFind BibTeX citation entries for a paper.
search_imagesreadSearch for images on the web.
search_jina_blogreadSearch Jina AI
search_ssrnreadSearch SSRN for economics, law, and finance working papers.
search_webreadSearch the live web. Returns titles, URLs and descriptions.
show_api_keyreadShow the masked API key this server is using, and its wallet balance.
sort_by_relevancereadRerank documents by semantic relevance to a query.
synthesizereadIt makes no LLM call. A reporter here would emit an opening tick and then
vertical_searchreadSearch ONE SearXNG category. No LLM call and no search-API quota.
04

Trust audit

SAFEgrade B · trust 88/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (7 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (15)

LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/connectors/brave.py:81
source_id = f"br_{hashlib.md5(url.encode()).hexdigest()[:8]}"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/connectors/linkup.py:52
source_id = f"lu_{hashlib.md5(url.encode()).hexdigest()[:8]}"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/connectors/parallel.py:113
source_id = f"px_{hashlib.md5(url.encode()).hexdigest()[:8]}"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/connectors/searxng.py:314
source_id = f"sx_{hashlib.md5(url.encode()).hexdigest()[:8]}"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/connectors/tavily.py:53
source_id = f"tv_{hashlib.md5(url.encode()).hexdigest()[:8]}"
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/guides/setup-local-inference.md:154
RESEARCH_LLM_API_BASE=http://192.0.2.50:8000/v1
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/guides/setup-rest.md:129
RESEARCH_LLM_API_BASE=http://192.0.2.50:8000/v1
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/reference/configuration.md:144
RESEARCH_LLM_API_BASE=http://192.0.2.50:8000/v1   # example LAN IP (RFC 5737 TEST-NET-1)
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/reference/configuration.md:147
RESEARCH_SEARXNG_HOST=http://192.0.2.10:8888   # example SearXNG on yet another machine (RFC 5737)
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/reference/rest-api.md:5
Base URL: `http://<RESEARCH_HOST>:<RESEARCH_PORT>` (defaults to `http://127.0.0.1:8000`). Bind to `0.0.0.0` only behind an authenticated reverse proxy — the REST surface spends the env-configured Open
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
companions/brightdata-fallback/requirements.txt
mcp, httpx
Why it matters. 2 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
companions/exa-answer/requirements.txt
mcp
Why it matters. 1 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
companions/jina-mcp/requirements.txt
mcp
Why it matters. 1 requirement(s) not pinned with ==
Fix. pin exact versions
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
RELEASE_NOTES.md:452
Adds a **connector liveness surface**: `GET /api/v1/health/connectors`. Until now the server's only notion of connector health was config presence — `/health` lists `get_active_connectors()`, which fi
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
RELEASE_NOTES.md:707
The preset thresholds (benchmark recalibration against a fixture corpus is still deferred), the post-synthesis verifier (it still scores entity coverage against the full query, unaffected by `gate_foc
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 2d2a884c2fc0full audit observations/trust-audit/mcp-server/yoloshii__gigaxity-deep-research.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-082d2a884c2fc0SAFEB88first audit
06

Questions

What is the Gigaxity Deep Research MCP server?

Open-source deep research MCP. Qwen3-30B-A3B-Thinking via OpenRouter, cited web synthesis for Claude Code, Codex, Cursor, Hermes and any MCP-compatible agent.

What tools does Gigaxity Deep Research expose?

25 in total: 24 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Gigaxity Deep Research safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (88/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does Gigaxity Deep Research need?

It reads BRIGHTDATA_API_TOKEN, EXA_API_KEY, JINA_API_KEY, JINA_GHOST_KEY, OPENAI_API_KEY, RESEARCH_LINKUP_API_KEY, RESEARCH_LLM_API_KEY, RESEARCH_TAVILY_API_KEY and TWITTERAPI_IO_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Gigaxity Deep Research run?

It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as gigaxity-deep-research.

How current is this page?

The grade is for one exact copy of the source (2d2a884c2fc0), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement