github TypeScript re-analysis due

cameronrye/activitypub-mcp

github

A comprehensive Model Context Protocol (MCP) server that enables LLMs like Claude to explore and interact with the existing Fediverse through standardized MCP tools, resources, and prompts.

maintainer
cameronrye
license
MIT
first seen
2026-06-04
last seen
2026-06-22
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 37 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 37 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • block-account
  • bookmark-post
  • boost-post
  • cancel-scheduled-post
  • delete-post
  • discover-actor
  • discover-instances
  • favourite-post
  • fetch-timeline
  • follow-account
  • get-bookmarks
  • get-favourites
  • get-home-timeline
  • get-instance-info
  • get-notifications
  • get-post-thread
  • get-public-timeline
  • get-relationship
  • get-scheduled-posts
  • get-trending-hashtags
  • get-trending-posts
  • list-accounts
  • mute-account
  • post-status
  • reply-to-post
  • search
  • switch-account
  • unblock-account
  • unbookmark-post
  • unboost-post
  • unfavourite-post
  • unfollow-account
  • unmute-account
  • update-scheduled-post
  • upload-media
  • verify-account
  • vote-on-poll
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 9cfa906 · analyzer v33 · 1w ago

danger signals2

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

code files: 158

filesystem 31

  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/check-version.js :10 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/generate-favicons.js :21 import { writeFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/generate-og-image.js :8 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/generate-registry-manifest.js :16 import fs from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/generate-search-data.js :8 import fs from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/inject-tools-manifest.js :33 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/install.js :11 import fs from "node:fs/promises";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/merge-mcp-config.mjs :18 import fs from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/run-platform.js :9 import { existsSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/smoke-test-bin.js :10 import { existsSync, mkdtempSync, rmSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/scripts/validate-biome-config.js :8 import fs from "node:fs";
  • fs cameronrye-activitypub-mcp-9cfa906/src/auth/credential-store.ts :11 import { chmodSync, constants, mkdirSync } from "node:fs";
  • fs cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :2009 fileBuffer = await fs.readFile(filePath);
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/cli-accounts.test.ts :1 import { mkdtempSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/cli-login.test.ts :1 import { mkdtempSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/config-env-drift.test.ts :1 import { readdirSync, readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/credential-store.test.ts :15 } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/homepage-install-command.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/install-config-merge.test.ts :2 import fs from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/llms-registry-sync.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/logging-categories.test.ts :1 import { readdirSync, readFileSync, statSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/mcp-tools-write.test.ts :5 import fs from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/no-dead-discussions-links.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/public-icons.test.ts :1 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/public-svg-wellformed.test.ts :1 import { readdirSync, readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/readme-install-buttons.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/registry-manifest.test.ts :1 import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/release-mcpb-asset.test.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/release-smithery-publish.test.ts :1 import { existsSync, readFileSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/secret-hygiene.test.ts :1 import { mkdtempSync } from "node:fs";
  • fs (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/server-manifest.test.ts :1 import { readFileSync } from "node:fs";

shell / exec 9

  • shell (weak) cameronrye-activitypub-mcp-9cfa906/scripts/check-tarball-contents.js :8 import { execSync } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/scripts/inject-tools-manifest.js :32 import { spawn } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/scripts/install.js :10 import { execSync } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/scripts/run-platform.js :8 import { spawn } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/scripts/smoke-test-bin.js :9 import { execSync, spawnSync } from "node:child_process";
  • shell cameronrye-activitypub-mcp-9cfa906/src/auth/login/browser.ts :2 * Opens the system browser to a URL using an argv-array spawn (never a shell
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/install-config-merge.test.ts :1 import { execFileSync } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/stdio-shutdown.test.ts :1 import { spawn } from "node:child_process";
  • shell (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/stdio-stdout-purity.test.ts :1 import { spawn } from "node:child_process";

network 11

  • net cameronrye-activitypub-mcp-9cfa906/src/auth/login/loopback-server.ts :12 import { createServer, type Server } from "node:http";
  • net cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :281 .describe("Number of posts to fetch (default: 20)"),
  • net cameronrye-activitypub-mcp-9cfa906/src/transport/auth-middleware.ts :2 import type { IncomingMessage, ServerResponse } from "node:http";
  • net cameronrye-activitypub-mcp-9cfa906/src/transport/http.ts :10 import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http";
  • net cameronrye-activitypub-mcp-9cfa906/src/utils/fetch-helpers.ts :10 import type { Agent } from "undici";
  • net cameronrye-activitypub-mcp-9cfa906/src/validation/url.ts :7 import { Agent } from "undici";
  • net (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/auth-middleware.test.ts :1 import { IncomingMessage, ServerResponse } from "node:http";
  • net (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/http-transport.test.ts :5 import { request as httpRequest } from "node:http";
  • net (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/loopback-server.test.ts :17 await fetch(`${lb.redirectUri}?code=xyz&state=abc`);
  • net (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/remote-client-conversion.test.ts :12 // server in tests/setup.ts) intercepts the fetch (same pattern as
  • net (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/url-pinning.test.ts :8 import { Agent } from "undici";

secrets 6

  • secrets cameronrye-activitypub-mcp-9cfa906/src/auth/account-manager.ts :64 const defaultToken = process.env.ACTIVITYPUB_DEFAULT_TOKEN;
  • secrets cameronrye-activitypub-mcp-9cfa906/src/config.ts :284 export const HTTP_SECRET = process.env.MCP_HTTP_SECRET || "";
  • secrets cameronrye-activitypub-mcp-9cfa906/src/transport/http.ts :159 const secret = process.env.MCP_HTTP_SECRET || HTTP_SECRET;
  • secrets (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/account-manager.test.ts :21 delete process.env.ACTIVITYPUB_DEFAULT_TOKEN;
  • secrets (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/cli-accounts.test.ts :15 delete process.env.ACTIVITYPUB_DEFAULT_TOKEN;
  • secrets (weak) cameronrye-activitypub-mcp-9cfa906/tests/unit/http-transport.test.ts :66 process.env.MCP_HTTP_SECRET = TEST_SECRET;

tool registrations 37

  • list-accounts cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :258
  • switch-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :337
  • verify-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :408
  • post-status cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :540
  • reply-to-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :695
  • delete-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :799
  • boost-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :878
  • unboost-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :907
  • favourite-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :934
  • unfavourite-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :963
  • bookmark-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :990
  • unbookmark-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1019
  • follow-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1050
  • unfollow-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1107
  • mute-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1136
  • unmute-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1189
  • block-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1218
  • unblock-account cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1247
  • get-home-timeline cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1280
  • get-notifications cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1380
  • get-bookmarks cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1512
  • get-favourites cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1600
  • get-relationship cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1692
  • vote-on-poll cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1816
  • upload-media cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :1924
  • get-scheduled-posts cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :2094
  • cancel-scheduled-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :2220
  • update-scheduled-post cameronrye-activitypub-mcp-9cfa906/src/mcp/tools-write.ts :2299
  • discover-actor cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :181
  • fetch-timeline cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :267
  • get-instance-info cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :409
  • discover-instances cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :502
  • get-post-thread cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :671
  • get-trending-hashtags cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :798
  • get-trending-posts cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :879
  • get-public-timeline cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :953
  • search cameronrye-activitypub-mcp-9cfa906/src/mcp/tools.ts :1061

install hooks 1

  • prepublishOnly cameronrye-activitypub-mcp-9cfa906/package.json :116 run-s clean validate:version typecheck lint build

declared dependencies 24

  • @modelcontextprotocol/sdk@^1.18.1
  • @logtape/logtape@^2.0.2
  • undici@^7.26.0
  • zod@^4.3.6
  • @astrojs/check@^0.9.9
  • @astrojs/mdx@^6.0.3
  • @astrojs/sitemap@^3.6.0
  • @biomejs/biome@^2.2.4
  • @dotenvx/dotenvx@^1.51.1
  • @fontsource/bricolage-grotesque@^5.2.10
  • @fontsource/hanken-grotesk@^5.2.8
  • @fontsource/jetbrains-mono@^5.2.8
  • @types/node@^24.5.2
  • @vitest/coverage-v8@^4.0.18
  • astro@^6.4.5
  • cross-env@^10.0.0
  • jsdom@^29.1.1
  • msw@^2.14.6
  • npm-run-all2@^9.0.2
  • pagefind@^1.4.0
  • rimraf@^6.0.1
  • tsx@^4.20.5
  • typescript@^6.0.3
  • vitest@^4.0.18

transport_posture 1

  • binds all interfaces (0.0.0.0) cameronrye-activitypub-mcp-9cfa906/tests/unit/http-transport.test.ts :35 host: "0.0.0.0",