github TypeScript analyzed 44ba638

cyanheads/arxiv-mcp-server

github

Search arXiv, fetch paper metadata, and read full-text content via MCP. STDIO or Streamable HTTP.

maintainer
cyanheads
licence
Apache-2.0
first seen
2026-05-24
last seen
2026-08-23
releases · 30d
1
short id

Drift inferred · capture-to-capture

  1. MEDIUM 1 description changed (high-adoption)
  2. HIGH 2 tools changed permissions · +1 tool · −1 tool · …

tool count over time

05-30 23:14 06-06 23:23 now
5t
4t
4t
4t
capabilities 4 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 4 tools · 1 res · 0 prompts permission surface via registry introspection

tools

  • arxiv_get_metadata

    Get full metadata for one or more arXiv papers by ID. Use when you have known IDs from citations, prior search results, or memory.

    in ▸ paper_ids

  • arxiv_list_categories

    List arXiv category codes and names. Useful for discovering valid category filters for arxiv_search.

    in ▸ group

  • arxiv_read_paper

    Fetch the full text of an arXiv paper as HTML. Tries arxiv.org/html first; falls back to ar5iv.labs.arxiv.org when the native render is unavailable. PDF-only papers (no HTML render on either source) return an html_unavailable error with the pdf_url for direct download. Page through long papers with the start and max_characters parameters.

    in ▸ start paper_id max_characters

  • arxiv_search

    Search arXiv papers by query with category and sort filters. Returns paper metadata including title, authors, abstract, categories, and links.

    in ▸ query start sort_by category sort_order max_results

resources

  • arXiv Categories Full arXiv category taxonomy. Returns grouped category list as JSON.
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 44ba638 · analyzer v33 · 3w ago

skills & prompt files 34

code evidence vv1.5.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 67

filesystem 21

  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/build-changelog.ts :32 import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/build.ts :17 import { readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-dependency-specifiers.ts :38 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-docs-sync.ts :22 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-framework-antipatterns.ts :39 import { existsSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-skill-versions.ts :33 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-skills-sync.ts :37 import { existsSync, readdirSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/clean-mcpb.ts :29 import { existsSync, statSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/clean.ts :15 import { readdir, rm } from 'node:fs/promises';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/devcheck.ts :3 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/lint-mcp.ts :19 import { existsSync, readdirSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/lint-packaging.ts :52 import { existsSync, readdirSync, readFileSync } from 'node:fs';
show 9 more
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/list-skills.ts :21 import { existsSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/release-github.ts :33 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/split-changelog.ts :24 import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/tree.ts :24 import type { Dirent } from 'node:fs';
  • fs cyanheads-arxiv-mcp-server-44ba638/src/services/arxiv/mirror/store.ts :20 import { mkdir } from 'node:fs/promises';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/arxiv-service-mirror.test.ts :10 import { mkdtemp, rm } from 'node:fs/promises';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/mirror/migration.test.ts :9 import { mkdtemp, rm } from 'node:fs/promises';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/mirror/query.test.ts :12 import { mkdtemp, rm } from 'node:fs/promises';
  • fs (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/mirror/store.test.ts :8 import { mkdtemp, rm } from 'node:fs/promises';

shell / exec 10

  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/build.ts :16 import { execFile } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-framework-antipatterns.ts :38 import { spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/check-skill-versions.ts :32 import { spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/clean-mcpb.ts :28 import { execFileSync } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/devcheck.ts :2 import { type ChildProcess, spawn, spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/lint-packaging.ts :51 import { execFileSync } from 'node:child_process';
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/scripts/release-github.ts :32 import { spawnSync } from 'node:child_process';
  • shell cyanheads-arxiv-mcp-server-44ba638/src/services/arxiv/mirror/refresh-subprocess.ts :23 import { type ChildProcess, spawn } from 'node:child_process';
  • shell cyanheads-arxiv-mcp-server-44ba638/src/services/arxiv/mirror/store.ts :39 exec(sql: string): void;
  • shell (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/mirror/refresh-subprocess.test.ts :10 import { type ChildProcess, spawn } from 'node:child_process';

network 3

  • net cyanheads-arxiv-mcp-server-44ba638/src/services/arxiv/arxiv-service.ts :879 response = await fetch(url, {
  • net cyanheads-arxiv-mcp-server-44ba638/src/services/arxiv/mirror/harvester.ts :143 response = await fetch(url, {
  • net (weak) cyanheads-arxiv-mcp-server-44ba638/tests/services/arxiv/arxiv-service.test.ts :979 it('forwards the versioned paper ID to arxiv.org HTML fetch (issue #10)', async () => {

tool registrations 4

  • arxiv_get_metadata cyanheads-arxiv-mcp-server-44ba638/src/mcp-server/tools/definitions/arxiv-get-metadata.tool.ts :27
  • arxiv_list_categories cyanheads-arxiv-mcp-server-44ba638/src/mcp-server/tools/definitions/arxiv-list-categories.tool.ts :17
  • arxiv_read_paper cyanheads-arxiv-mcp-server-44ba638/src/mcp-server/tools/definitions/arxiv-read-paper.tool.ts :11
  • arxiv_search cyanheads-arxiv-mcp-server-44ba638/src/mcp-server/tools/definitions/arxiv-search.tool.ts :23

declared dependencies 19

  • @cyanheads/mcp-ts-core@^0.12.3
  • better-sqlite3@^13.0.3
  • fast-xml-parser@^5.11.0
  • node-cron@^4.6.0
  • pino-pretty@^13.1.3
  • unpdf@^1.8.1
  • zod@^4.4.3
  • @biomejs/biome@^2.5.9
  • @opentelemetry/api@^1.9.1
  • @socketsecurity/bun-security-scanner@^1.1.2
  • @types/better-sqlite3@^9.6.0
  • @types/bun@^1.3.14
show 7 more
  • @types/node@^26.2.0
  • @types/node-cron@^3.0.11
  • depcheck@^1.4.7
  • ignore@^7.0.6
  • tsc-alias@^1.9.2
  • typescript@^7.0.2
  • vitest@^4.1.11