ArchSteer MCP server
✓ 인증됨AI 에이전트가 라이브 모델을 조회하고, 대상 패턴을 검색하며, 선언된 의도에 따라 파일 준수 여부를 확인하여 아키텍처 거버넌스를 강제합니다.
다른 이름 einvoice-dev1/archsteer
- 스타
- 5
- Tools
- —
- 다운로드, 30일
- 301
- 최신 버전
- 0.10.0
- 마지막 커밋
- 2026년 7월 30일
- 라이선스
- MIT
ArchSteer MCP란?
ArchSteer은(는) MCP server입니다. AI 에이전트가 라이브 모델을 조회하고, 대상 패턴을 검색하며, 선언된 의도에 따라 파일 준수 여부를 확인하여 아키텍처 거버넌스를 강제합니다.
프로젝트 README에서 생성된 요약
ArchSteer MCP server 정보
ArchSteer는 소프트웨어 아키텍처를 위한 거버넌스 플레인 역할을 하며, 특히 AI 에이전트가 확립된 구조적 패턴을 따를 수 있도록 설계되었습니다. 소스 코드로부터 라이브 모델을 도출하여 .archsteer/model.json 파일에 저장하는 로컬 시스템 레코드 역할을 수행합니다. 이를 통해 개발자는 소스 코드를 원격 서버에 업로드하지 않고도 살아있는 문서와 자동화된 아키텍처 결정 기록을 유지할 수 있습니다.
MCP server는 stdio를 통해 로컬에서 실행되며 Cursor와 같은 에디터나 Claude Code에 통합할 수 있습니다. 이 서버는 세 가지 특정 도구를 제공합니다. 컴포넌트 수와 드리프트를 조회하는 current_architecture, 코드 작성 전 불변성을 검색하는 get_target_pattern, 그리고 최근 수정 사항이 선언된 의도에 부합하는지 확인하는 check_file입니다. JavaScript, TypeScript, Python, Java, Salesforce Apex를 포함한 다양한 스택을 지원하며, 특화된 규칙 팩을 사용하여 레이어 경계를 강제하고 하드코딩된 비밀번호 방지와 같은 보안 기준을 준수합니다.
활용 사례
- 1파일 준수 여부 확인커밋하기 전에 특정 파일이 프로젝트의 아키텍처 규칙을 따르는지 AI 에이전트에게 확인하도록 요청합니다.
- 2아키텍처 패턴 검색AI 에이전트가 새로운 코드를 작성하기 시작하기 전에 해당 파일에 필요한 구조적 패턴을 조회하도록 합니다.
- 3아키텍처 드리프트 모니터링에이전트를 사용하여 아키텍처의 현재 상태를 요약하고 코드가 의도된 모델에서 벗어난 부분을 식별합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
ArchSteer MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 ArchSteer MCP 설치
$ claude mcp add archsteer -- uvx archsteerCursor에 ArchSteer MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"archsteer": {
"command": "uvx",
"args": [
"archsteer"
]
}
}
}VS Code에 ArchSteer MCP 설치
.vscode/mcp.json
{
"servers": {
"archsteer": {
"type": "stdio",
"command": "uvx",
"args": [
"archsteer"
]
}
}
}VS Code CLI에 ArchSteer MCP 설치
$ code --add-mcp '{"name":"archsteer","type":"stdio","command":"uvx","args":["archsteer"]}'Claude Desktop에 ArchSteer MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"archsteer": {
"command": "uvx",
"args": [
"archsteer"
]
}
}
}Codex에 ArchSteer MCP 설치
$ codex mcp add archsteer -- uvx archsteerCodex config.toml에 ArchSteer MCP 설치
~/.codex/config.toml
[mcp_servers.archsteer] command = "uvx" args = ["archsteer"]
Gemini CLI에 ArchSteer MCP 설치
$ gemini mcp add -s user archsteer uvx -- archsteerGemini settings.json에 ArchSteer MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"archsteer": {
"command": "uvx",
"args": [
"archsteer"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능einvoice-dev1/archsteer is public and reachablegithub.com/einvoice-dev1/archsteer ↗통과
- 패키지가 이 저장소를 소스로 명시archsteer names einvoice-dev1/archsteer as sourcepypi.org/project/archsteer/ ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-07-30github.com/einvoice-dev1/archsteer ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from archsteer통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음39 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기ArchSteer
Living Architecture Control Plane for the AI-Dev Era.
AI agents now write code faster than any architect can review, document, or govern it. Docs rot instantly, the real architecture is invisible, structural decisions get made silently, and intended architecture drifts with every edit. ArchSteer is the always-current architecture system of record + governance plane: it derives the real architecture from code, keeps living docs and ADRs auto-built, surfaces every major decision for the architect to ratify, enforces declared intent as code-level fitness functions, and steers AI agents to conform instead of replicating local slop.
Everything is a projection of one code-derived model — .archsteer/model.json.
Local by default: the X-ray and governance workflow runs locally and never uploads or
executes your repository's source code. It needs no account, API key, or configuration
before the first scan; cloud snapshot publishing is a separate, explicit push command.
.archsteer/model.json (single source of truth)
│
MAP ──── DOCUMENT ──── GOVERN ──── STEER ──── EVOLVE
model living docs fitness agent report.html
from + auto ADRs functions guardrails (drift/
source + diagrams + ratchet + MCP decisions)
Install
As a Claude Code plugin (recommended if you use Claude Code):
/plugin marketplace add einvoice-dev1/archsteer
/plugin install archsteer@archsteer
This installs the bundled MCP server (current_architecture, get_target_pattern,
check_file — via uvx, no separate pip install needed) plus a skill that teaches
the agent when to x-ray, check, and steer on its own, and /xray / /check commands.
See .claude-plugin/plugin.json for the manifest.
As a CLI (works with any editor/agent, or standalone):
pip install archsteer # regex engine + local MCP server; no parser toolchain required
pip install "archsteer[treesitter]" # optional native acceleration
(Since 0.4.1 the MCP server ships in the base install; pip install "archsteer[mcp]" still
works as a no-op alias.)
Languages: JavaScript / TypeScript (Next.js App Router-aware, including
tsconfig.json path-alias resolution — @/lib/x resolves to a real internal
edge, not a phantom third-party dependency), Python, Java (Spring-aware),
and Salesforce Apex (SOQL/DML + trigger/handler/selector conventions).
Layer detection uses in-source signals first — Spring stereotype annotations,
Apex class-name conventions, Next.js reserved filenames (page.tsx →
page, layout.tsx → layout, route.ts → api, regardless of directory)
— then directory names.
Quickstart
For the fastest proof, run this in a repository and open the generated
.archsteer/report.html:
archsteer init && archsteer map && archsteer report
Then add the controls you need:
archsteer init # scaffold .archsteer/ + a starter rule pack auto-matched to your stack
archsteer map # build model.json from source
archsteer docs # regenerate .archsteer/architecture.md (deterministic, Mermaid) — includes a "Start here" hub/entry-point guide and a file-level component map
archsteer graph <path> # one component's direct dependencies + dependents — no intent required, just dropped into an unfamiliar file
archsteer govern # conformance + drift score by rule
archsteer adr # draft ADRs: new structural decisions + widespread rule violations
archsteer baseline # accept current debt — the ratchet
archsteer steer -f src/controllers/payment.js -t "add refund endpoint"
archsteer check # CI/pre-commit: fail on NET-NEW violations only
archsteer install-hooks # wire `check` into a local git pre-push hook
archsteer report # self-contained .archsteer/report.html
init auto-detects your stack and seeds a matching baseline rule pack — edit
.archsteer/architecture.yaml to fit your conventions, or pick one explicitly:
| Pack | Detected by | Baseline rules |
|---|---|---|
java-spring |
pom.xml / build.gradle | persistence only in repositories; controllers never touch repositories; no hardcoded secrets; outbound calls confined to services |
salesforce |
sfdx-project.json / force-app | SOQL only in selectors; logic-less triggers; no DML in controllers; no hardcoded secrets; callouts confined to services |
python-service |
pyproject.toml / requirements.txt | persistence behind repositories; thin API handlers; no hardcoded secrets; outbound calls confined to services |
nextjs-app-router |
package.json has next, an app/ dir, no express |
data access (Supabase/Prisma/raw SQL) and third-party calls confined to lib/ or a route handler; no hardcoded secrets |
express-to-next |
package.json (fallback, or express present) |
repository pattern; Express → Next.js migration; no hardcoded secrets; outbound calls confined to services |
A repo with next as a dependency and an app/ directory gets the App Router
pack; a package.json with express (even one migrating to Next) gets the
migration pack instead — those are different problems with different rules.
Every starter pack ships a security baseline — no hardcoded credentials/API keys/tokens anywhere in source, and all outbound third-party calls confined to the service layer — so day-one governance covers architecture and the two security smells AI agents introduce most often.
archsteer init --pack salesforce # override the auto-detection
The three design guarantees
- Ratchet, not freeze.
archsteer checkblocks only net-new violations against a baseline — teams keep shipping features while debt can only shrink. - Conservative, architect-in-the-loop ADRs. Two narrow sources, both opt-in review —
never auto-committed. Across time: external-boundary changes (new dependency, new
datastore, new layer) — never internal reshuffles. Within a snapshot: a rule violated
in 3+ components — a genuine pattern worth ratifying or relaxing, not a one-off left to
check/govern. Drafts are idempotent; re-running never duplicates one already on disk. - Sharp agent steering. Guardrails injected into
CLAUDE.md,AGENTS.md, and.cursor/rules/archsteer.mdc(an always-on Cursor rule) are scoped to the files in play and point at the governing ADR — they don't dump the whole model into the context window.
Declaring intent — .archsteer/architecture.yaml
target: "Migrate Express + raw SQL to Next.js route handlers + the repository pattern"
layers: [route, controller, service, repository, model]
rules:
- id: no-raw-sql-outside-repository
type: required_layer_for_data_access
allowed_layers: [repository]
operations: [RAW]
severity: error
adr: .archsteer/adr/0001-repository-pattern.md
steer: "Wrap all queries in a repository under src/repositories/. No raw SQL elsewhere."
Rule types: required_layer_for_data_access, forbidden_import, forbidden_data_access,
forbidden_layer_edge, forbidden_security_finding (hardcoded secrets), and
required_layer_for_external_call (confine outbound HTTP/SDK calls to a layer).
Using with AI agents (MCP)
archsteer mcp runs a local MCP server over stdio — spawned by your own editor/agent,
never hosted by us. It reads only what init/map/govern already wrote to .archsteer/
on disk, so there's no network call and nothing leaves your machine. It exposes three tools:
current_architecture— component/layer counts, conformance/drift, the declared target.get_target_pattern— the invariants that apply to a file, before you write to it.check_file— whether a file you just edited conforms, without waiting for CI.
Using the Claude Code plugin above? This is already wired up — skip to Quickstart. The rest of this section is for every other client.
Add it to Cursor with one click: Install in Cursor →
Add it to Claude Code by hand (instead of the plugin), or any other MCP-compatible client:
claude mcp add archsteer -- uvx archsteer mcp # no separate pip install needed
Or in JSON config directly:
{ "mcpServers": { "archsteer": { "command": "uvx", "args": ["archsteer", "mcp"] } } }
(Already have archsteer on PATH via pip/pipx? {"command": "archsteer", "args": ["mcp"]}
works identically — uvx just means no install step at all.)
Also published to the official MCP registry as
io.github.einvoice-dev1/archsteer.
CI / pre-commit / pre-push
- GitHub Action:
.github/workflows/archsteer.yml(maps, drafts ADRs, runs the net-new gate, uploadsreport.html). - Local pre-push hook:
archsteer install-hookswiresarchsteer checkinto.git/hooks/pre-push— an architecture conformance score printed on every push, blocking only NET-NEW error violations (the same ratchet as CI, just earlier feedback).archsteer map/checkcache per-file parse results in.archsteer/parse_cache.json, so a push that only touches a handful of files re-parses just those files, not the whole repo. Uninstall witharchsteer install-hooks --uninstall. - Already using husky, pre-commit, or lefthook? Add
archsteer checkas a step instead of the raw git hook, e.g. a.husky/pre-pushcontainingarchsteer check.
Conformance badge
If your repo pushes snapshots to the situation room (archsteer push), its latest
conformance score is a live badge — the one at the top of this README is this repo
governing itself:
[](https://www.archsteer.com)
Replace YOUR-REPO with the repo name archsteer push reports. Green at ≥90%, grey while
you're still x-ray-only (no architecture.yaml declared yet).
Try the demo
cd examples/demo-repo
archsteer init && archsteer map && archsteer report # open .archsteer/report.html
Roadmap
- Shipped — cloud control plane (Next.js + Supabase): multi-repo situation room with
drift/decision time-series.
archsteer mcp: a local MCP server so agents query the live model + intent mid-edit. An org-wide, hosted MCP server (Team tier) so agents can ask cross-repo questions against the situation room — "what's our drift index," "which repos have pending ADRs" — the same data as the dashboard, over MCP. A Claude Code plugin (skill + commands + the MCP server, one install). A dedicated Next.js App Router pack (layers frompage.tsx/layout.tsx/route.ts,tsconfig.jsonpath-alias resolution, Supabase/Prisma-aware data-access detection).archsteer install-hooks: the same net-new conformance ratchet as CI, wired into a local git pre-push hook. - Later — a VS Code extension (inline diagnostics, status-bar score — the CLI/MCP already work in any editor today), auth, org/repo model, billing.
Development
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -q
Found a surprising edge, a false positive, or a stack ArchSteer should understand better? Open an issue with the language, framework, and smallest reproducible example. Builder feedback directly shapes the detectors and starter rule packs.
ArchSteer MCP 질문
ArchSteer MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add archsteer -- uvx archsteer를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
ArchSteer MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
ArchSteer가 소스 코드를 클라우드에 업로드하나요?
아니요, 워크플로우는 로컬에서 실행되며 저장소의 소스 코드를 업로드하거나 실행하지 않습니다.
ArchSteer는 기존의 기술 부채를 어떻게 처리하나요?
새로 발생하는 위반 사항만 차단하는 래칫(ratchet) 메커니즘을 사용하여, 팀이 기능을 배포하면서도 기술 부채가 줄어들도록 보장합니다.
지원되는 프로그래밍 언어와 프레임워크는 무엇인가요?
JavaScript/TypeScript(Next.js 포함), Python, Java(Spring), Salesforce Apex를 지원합니다.