Atlas / MCP servers / bingowon / Apple RAG

Apple RAGBLOCK

mcp/bingowon/apple-rag

MCP server providing AI agents with instant access to Apple developer documentation via RAG

Verdict
BLOCK
Grade
F
Trust score
55 /100
Exposed tools
—
Transport
streamable-http
License
MIT
Stars
120
01

Overview

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

The Apple docs MCP your AI actually deserves.

Apple docs. WWDC26 transcripts. Semantic + keyword + hybrid search. One clean tool.

[](https://cursor.com/en/install-mcp?name=apple-rag-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5hcHBsZS1yYWcuY29tIn0%3D)

[](vscode:mcp/install?%7B%22name%22%3A%22apple-rag-mcp%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.apple-rag.com%22%7D) [](vscode-insiders:mcp/install?%7B%22name%22%3A%22apple-rag-mcp%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.apple-rag.com%22%7D)

🌐 Website • 📊 Dashboard

[](https://github.com/BingoWon/apple-rag-mcp/actions/workflows/ci.yml) [](LICENSE)

English | 中文

Not Just Another Docs Tool

Others give you keyword search. We give you that, plus semantic understanding, plus AI-powered hybrid search that combines both intelligently. Every search mode you need, working together.

Minimal footprint. Maximum signal. Our MCP tools are designed to be lean—no bloated responses, no wasted tokens, no noise cluttering your agent's context. Just the information that matters.

Start in Seconds

Configure with your agent: In the [dashboard](htt

Read from source at commit b426b089e860OBSERVED · 2026-10-07
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.

claude-code
claude mcp add apple-rag-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "apple-rag-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Trust audit

BLOCKgrade F · trust 55/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (23)

CRITICALHard-coded secrets · secret.stripe · CWE-798, CWE-321
.env.production:1
VITE_STRIPE_PUBLISHABLE_KEY=pk_live_51Ru5VrA25gx39T46dLN4WkZG3WcMk4iLkEWO9yTRO2oqZGZ0qbTXNxscrhfVkcdeMRW1vj2fsgCyk89MT0v0Lul2003QSydyyD
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/wwdc26-macbook-screen.avif
wwdc26-macbook-screen.avif
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
worker/api/middleware/auth.ts:81
logger.info(`Processing JWT token (length: ${token.length})`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
worker/api/routes/mcp-tokens.ts:225
logger.info(`Creating MCP token "${name}" for user ${user.id}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
worker/api/routes/mcp-tokens.ts:392
logger.info(`Updating MCP token ${id} to "${name}" for user ${user.id}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
worker/api/routes/mcp-tokens.ts:523
logger.info(`Deleting MCP token ${id} for user ${user.id}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
worker/api/routes/mcp-tokens.ts:644
logger.info(`Validating MCP token ${token.substring(0, 8)}...`);
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
worker/mcp/protocol-handler.test.ts:202
token: "at_00000000000000000000000000000000",
MEDIUMAuth / authz · mcp.remote_no_auth · CWE-287, CWE-862
streamable-http
Why it matters. a network transport with no auth environment variable found
Fix. require a token
LOWInventory / provenance · inv.hidden_file · CWE-1104
.dev.vars.example
.dev.vars.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.env.production
.env.production
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/utils/dashboardLinks.test.ts:17
const markdown = readFileSync(new URL(`../../${file}`, import.meta.url), "utf8");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/utils/mcpConfigService.test.ts:142
assert.ok(existsSync(new URL(`../../public${client.logo}`, import.meta.url)), client.label);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
worker/api/app.ts:6
import packageJson from "../../package.json";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
worker/api/middleware/cors.ts:3
import type { Env } from "../../shared/types.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
worker/api/routes/admin/authorized-ips.ts:6
import { logger } from "../../utils/logger.js";
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/pages/dashboard/OverviewPage.tsx:37
const authData = JSON.parse(atob(decodeURIComponent(authParam)));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/stores/auth.ts:17
const payload = JSON.parse(atob(base64));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/utils/mcpTokenUtils.ts:61
const decoded = atob(payload.replace(/-/g, "+").replace(/_/g, "/"));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
worker/api/utils/jwt-simple.ts:21
return atob(str.replace(/-/g, "+").replace(/_/g, "/"));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@hono/swagger-ui, @hono/zod-openapi, @hookform/resolvers, @radix-ui/react-label, @radix-ui/react-slot, @react-three/fiber, @stripe/react-stripe-js, @stripe/stripe-js
Why it matters. 49 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
public/llms.txt:46
**Unlock Full Access**: Register and subscribe at https://apple-rag.com to get MCP tokens for seamless, unlimited access to our services.

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-07 · audit v0.4.1 · source sha b426b089e860full audit observations/trust-audit/mcp-server/bingowon__apple-rag.json · Report an issue / request a re-scan
04

Audit history

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

DateSourceVerdictGradeScoreChange
2026-10-07b426b089e860BLOCKF55first audit
05

Questions

What is the Apple RAG MCP server?

MCP server providing AI agents with instant access to Apple developer documentation via RAG

Is Apple RAG safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (55/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does Apple RAG need?

No credential environment variables were found in its source, so it appears to need none.

How does Apple RAG run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as apple-rag-mcp at 5.0.6.

How current is this page?

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

Advertisement