Atlas / MCP servers / akira-tl / 中文

中文BLOCK

mcp/akira-tl/forgerelay

Local development control plane for MCP coding agents.

Verdict
BLOCK
Grade
D
Trust score
62 /100
Exposed tools
36 32r · 3w · 1d
Transport
stdio · streamable-http
License
MIT
Stars
1
01

Overview

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

Use MCP coding agents on the projects and tools already on your machine. 让 MCP 编程 Agent 直接使用你电脑上现有的项目和开发工具。

中文 · English

ForgeRelay 是一个运行在你自己机器上的 MCP Server。它解决的是一个很实际的问题:ChatGPT 这类 Host 会写代码,但默认碰不到你电脑上的项目、Shell 和 Git。

把 ForgeRelay 接上以后,Agent 就能直接在你现有的仓库里改文件、跑测试和构建、执行 Git、调用语言服务器,并继续使用你已经装好的工具链。项目不用搬到另一套工作目录,也不用为了这件事再换一套 Coding Agent。

安装

需要 Node.js >=22.19 <27、npm 和 Git。

npm install -g @akira-tl/forgerelay
forgerelay init
forgerelay serve

不想全局安装也可以:

npx @akira-tl/forgerelay init
npx @akira-tl/forgerelay serve

默认 MCP 地址:

http://127.0.0.1:7676/mcp

forgerelay init 会让你选择允许访问的项目目录,并生成 Owner password。第一次连接 MCP Host 时,用这个密码批准客户端。

检查当前实际生效的配置和 Shell:

forgerelay doctor
forgerelay config check
forgerelay config sources
forgerelay config explain 

ForgeRelay 的 Config System 统一解析 User、Project 和机器私有 Project Local 配置,优先级是 runtime > project-local > project > user > built-in。External MCP、L

Read from source at commit 6d45f330f3a0OBSERVED · 2026-10-12
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 forgerelay --env FORGERELAY_DEBUG_OWNER_TOKEN=${FORGERELAY_DEBUG_OWNER_TOKEN} --env FORGERELAY_OAUTH_OWNER_TOKEN=${FORGERELAY_OAUTH_OWNER_TOKEN} --env GH_TOKEN=${GH_TOKEN} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y @akira-tl/[email protected]
claude-desktop
{
  "mcpServers": {
    "forgerelay": {
      "command": "npx",
      "args": [
        "-y",
        "@akira-tl/[email protected]"
      ],
      "env": {
        "FORGERELAY_DEBUG_OWNER_TOKEN": "${FORGERELAY_DEBUG_OWNER_TOKEN}",
        "FORGERELAY_OAUTH_OWNER_TOKEN": "${FORGERELAY_OAUTH_OWNER_TOKEN}",
        "GH_TOKEN": "${GH_TOKEN}",
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}
03

Exposed tools (36)

32 read · 3 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
artifact.downloadwriteSave one Host-native file into a workspace-relative destination without overwriting.
artifacts-reviewwriteNative artifact transfer and aggregate change review.
batch-executionreadOne-call execution of multiple independent ForgeRelay core operations.
batch.executewriteExecute multiple independent ForgeRelay core operations in one Agent interaction.
claudereadA profile that shadows the raw provider.
code-intelligencereadRead-only semantic code navigation backed by external Language servers.
code.intelligencereadRead semantic code information and, when explicitly enabled by the user, manage ForgeRelay-owned Language Servers for this instance.
direct_imageread
double_imageread
echo_textread
failread
fixture_toolreadfixture
helperreadValid helper.
hidden-path-skillreadLoads without exposing its filesystem path.
hooks.checkreadValidate the active ForgeRelay Hook configuration for this workspace.
host-integrationreadOAuth, public endpoint, stale Host metadata, and MCP App debugging.
http_echoread
legacy-onlyreadLegacy user profile.
lifecycle-hooksreadHook events, blocking, reports, and configuration.
malformed_imageread
mcp.externalreadDiscover and call tools from user-configured external MCP servers through the ForgeRelay Capability gateway.
modern_echoread
path_onlyread
resource_onlyread
review.changesreadReview accumulated workspace changes from the Git-backed review checkpoint.
reviewerreadReview changes.
shell-processesreadLong-running bash processes, processId interaction, PTY, and platform edges.
subagent.sessionreadDelegate explicit work to provider-backed Subagent Sessions in the current Execution Workspace; disclose delegation and verify returned results before presenting them as final.
subagentsreadLocal subagent delegation and session follow-up.
tddreadTest-driven development
unsupported_imageread
url_onlyread
workspace-tasksreadPersistent Task Lists owned by the current Workspace.
workspace.checkpointdestructiveCreate, list, inspect, safely restore, or delete immutable Git-backed checkpoints owned by the current persistent Workspace.
workspace.recoveryreadInspect or safely repair the current managed-worktree Workspace when ForgeRelay can prove the surviving managed branch and execution backing ownership.
workspace.tasksreadMaintain persistent Task Lists owned by the current Workspace.
04

Trust audit

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

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

What the source does

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

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
src/ui/review/heavy-payload.tsx
heavy-payload.tsx
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
src/ui/review/review-payload.tsx
review-payload.tsx
Why it matters. member named after an attack tool
Fix. remove or justify
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/cli/config/inspect.test.ts:306
const secret = "EXPLAIN_SECRET_SENTINEL";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/cli/config/migrate.test.ts:37
const secret = "MIGRATION_SECRET_SENTINEL";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/cli/system/status.test.ts:77
token: "system-status-active-token-00000000",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/cli/system/status.test.ts:89
token: "system-status-stale-token-00000000",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/runtime/config/external-mcp-registry.test.ts:118
const secret = "resolved-secret-sentinel";
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
workspace.checkpoint
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/lsp/code-intelligence.server.test.ts:18
assert.equal(languageServerCommandRequiresShell("/usr/local/bin/server.cmd", "darwin"), false);
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/mcp/server/operations/filesystem.test.ts:696
await symlink("/etc/hosts", escapedPath);
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/mcp/server/operations/filesystem.test.ts:722
arguments: { workspaceId, path: "/etc/hosts" },
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/config/schema.mjs:6
import { CONFIG_DEFINITION_CATALOG } from "../../src/runtime/config/definition/catalog.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/config/schema.mjs:7
import { generateConfigSchemaFiles } from "../../src/runtime/config/definition/schema.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/debug/accept/media.mjs:41
new URL("../../../src/mcp/operations/external-mcp/test-fixtures/external-mcp-server.mjs", import.meta.url),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/debug/host/run.sh:4
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/debug/traffic/run.sh:4
cd "$(dirname "$0")/../../.."
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:53
http://127.0.0.1:7676/mcp
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:177
http://127.0.0.1:7676/mcp
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/debugging.md:29
http://127.0.0.1:7677
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/debugging.md:35
http://127.0.0.1:7677/healthz
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/debugging.md:36
http://127.0.0.1:7677/.well-known/oauth-protected-resource/mcp
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@agentclientprotocol/sdk, @clack/prompts, @modelcontextprotocol/client, @modelcontextprotocol/core, @modelcontextprotocol/express, @modelcontextprotocol/ext-apps, @modelcontextprotocol/node, @modelcon
Why it matters. 32 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/debugging.md:43
7677 does not change Host credentials. If the debug endpoint should share the
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
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:251
Filesystem tools are constrained by the opened Workspace and configured allowed roots. Shell commands run with the authority of the local user running ForgeRelay; **the shell is not an OS sandbox**. C
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/wiki/reference/Security.md:170
持久 remote record 保存后续需要的 access / refresh token 和实例信息,不把 Owner password 当作长期路由凭据。
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 6d45f330f3a0full audit observations/trust-audit/mcp-server/akira-tl__forgerelay.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-126d45f330f3a0BLOCKD62first audit
06

Questions

What is the @akira-tl/forgerelay MCP server?

Local development control plane for MCP coding agents.

What tools does @akira-tl/forgerelay expose?

36 in total: 32 read-only, 3 that write, and 1 that can delete or overwrite (workspace.checkpoint). Every one is listed on this page with its risk.

Is @akira-tl/forgerelay safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (62/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @akira-tl/forgerelay need?

It reads FORGERELAY_DEBUG_OWNER_TOKEN, FORGERELAY_OAUTH_OWNER_TOKEN, GH_TOKEN, GITHUB_TOKEN, TEST_REMOTE_OWNER_TOKEN and TEST_SSH_FAIL_OWNER_TOKEN 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 @akira-tl/forgerelay run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @akira-tl/forgerelay at 1.3.2.

How current is this page?

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

Advertisement