
Architecture Pattern MCP
io.github.olk由 GitHub 账号 olk 发布v1.1.5更新于 Nov 6, 2026
MCP server that provides architecture design expertise to AI coding agents
概览
为 AI 编程助手提供架构设计能力:推荐架构模式、生成设计方案并按质量属性打分。
- 可以做什么
- 根据需求与领域做分析,返回推荐风格、选中的模式、质量指标与匹配领域
- 从需求与选定模式生成完整架构设计,或运行分析-生成-评估-改进的完整流程
- 按可扩展性、可靠性等质量属性评估已有设计
- 为请求超时较短的客户端提交后台设计任务、轮询状态并取消任务
- 浏览模式目录:按类别或领域列出模式,并获取单个模式的完整 JSON
- 提供用户手动触发的工作流提示,用于设计、目录探索、评估与风格对比
- 适用场景
- 适合在助手设计或评审软件架构时使用:既可用轻量分析为助手自己写代码提供模式依据,也可生成带质量评分的完整设计产物。
- 运行要求
- 以本地 Docker 栈或 Python 3.12+ / uv 方式运行;Docker 方式需要 Docker v2.20+、约 5 GB 空间和 linux/amd64。需要 GENERATOR_API_KEY(LLM 提供方),以及可访问的嵌入端点 EMBEDDER_BASE_URL 和重排端点 RERANKER_BASE_URL,通常由 compose 启动的 TEI 边车提供。可选配置包括 GENERATOR_PROVIDER、GENERATOR_MODEL、GENERATOR_BASE_URL 和 EMBEDDER_API_KEY。
安装
在 SourceWeft 中
- 打开 控制台中的 Architecture Pattern MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
architecture-pattern-mcp
[CI] [Python 3.12+] [License: MIT] [M8ven Score]
An MCP (Model Context Protocol) server that provides architecture design expertise to AI coding agents. Given a requirements string and a domain, it analyses the problem, selects matching architecture patterns (from 128 built-in patterns), generates a concrete architecture design with components, relationships, API contracts, data models, and event contracts, and evaluates it against quality attributes (maintainability, scalability, reliability, security, performance).
Table of Contents
- ⚡ Quickstart
- Install via AI Agent
- 🔌 Connect Your Agent
- 🧑🏫 SKILL for AI Agents
- 🧪 Use the Tools
- 🛠️ Tools at a Glance
- 📖 Pattern Catalog
- Working Together with design-pattern-mcp-local
- Install Alternatives
- Configuration
- Structured Reasoning (shannonthinking / code-reasoning)
- Extending with Custom Patterns
- Long-running tools & timeouts
- Troubleshooting
- Building & Development
- Publishing
- systemd Service (Linux)
- License
⚡ Quickstart
Server starts on streamable-http at http://localhost:8820/mcp (dev compose host port; systemd uses 8810). Then connect your agent below.
Install via AI Agent
To have an AI coding agent install the Docker stack from prebuilt images (no local build), point it at INSTALL.md — the non-interactive agent runbook (copy-paste commands, expected outputs, verification probes).
Pick one path in INSTALL.md:
- Path A — Compose stack (
:8820): evaluating / developing, no sudo needed. Own TEI sidecar copies. - Path B — systemd stack (
:8810): persistent host service, starts at boot, needssudo. Uses the sharedpattern-tei-infraTEI stack.
The agent needs a repo clone, Docker ≥ v2.20 with group membership, ~5 GB free, a MINIMAXAI_API_KEY (or another provider per INSTALL.md#switching-the-generator-llm), and linux/amd64 (on arm64 it builds locally via make docker-build-all). After install, continue with Connect Your Agent below.
🔌 Connect Your Agent
Claude Code
Or add to your project for the whole team:
OpenCode
OpenCode uses HTTP transport. Start the server first, then configure opencode:
Note:
GENERATOR_API_KEYis read from the server's config file (~/.config/architecture-pattern-mcp/config.json), not from opencode's environment.
Codex CLI
Add to ~/.codex/config.toml:
Or via CLI:
🧑🏫 SKILL for AI Agents
The SKILL in skills/architecture-pattern-mcp/ is written for Oh My Pi (OMP), where this server's tools are reached as xd://mcp__architecture_pattern_* devices and every MCP request is bounded by a deadline (OMP_MCP_TIMEOUT_MS → per-server timeout → 30 s). It teaches the agent which entry point fits that deadline, how to read the results, and the full workflow recipes.
Install for OMP — copy the skill directory into the user skills root, or point skills.customDirectories at this repository's skills/ directory in OMP's config:
The skill then tells the agent:
- Which entry point fits OMP's deadline: the async job trio by default, one-shot
design_architectureonly after raising the server'stimeout(analyze_architecturealone measured 66 s,evaluate_architecture197 s) - How to phrase
requirements,domain, andstyleas separate structured arguments - How to interpret
final_quality_score,attempts > 1, andevaluation.recommendations - That
read mcp://pattern://…is ambiguous while the siblingagent-patternserver is connected, so the tool route (get_architecture_pattern) is authoritative
The tool schemas, error codes and design-dict shape in references/ are client-agnostic; only the deadline/device guidance is OMP-specific.
Use the Tools
All tools accept requirements (free text) and domain (e.g. data-processing, microservices, e-commerce) as arguments. The examples below show the exact tool call shape so you can use them in any MCP client or API consumer.
Try each tool
In Claude Code (or any MCP client), paste the natural-language instruction:
Your agent calls design_architecture internally. The server returns a full architecture design: components (Kafka source, JSON parser filter, geolocation enricher, InfluxDB sink, S3 sink), quality attribute scores (scalability: 9.1, maintainability: 8.2, …), and specific recommendations.
That is the design path: the server's LLM generates the design artifact for you, which is why a call takes minutes. If your agent writes the code itself and only needs the pattern expertise, call analyze_architecture instead — it returns the recommended style, selected patterns with scores, requirement weights, quality metrics and matched domains without generating a design. Two measured facts from the committed benchmark corpus: generate + evaluate are ~92 % of a design call's wall clock (benchmarks/base-noreasoning/), and the two paths agree on the style in all 31 completed records (15 base + 16 no-reasoning; the one remaining base record is a design call that failed with a malformed-JSON validation error and produced no design) — a design call buys the artifact, not a better pattern choice.
Or call tools directly from your agent:
Async job pattern: submit_architecture_design_job + get_architecture_design_status
ONLY for clients with short request timeouts (Cursor, Claude Desktop, TS-SDK). The default is design_architecture with heartbeat defence. submit_architecture_design_job returns a job_id immediately; poll get_architecture_design_status until done:
In Python (via the MCP HTTP API directly — see examples/architecture_client_async.py):
See examples/architecture_client_async.py for the complete runnable example. Run it with:
Explore the pattern catalog
Or get details on a specific pattern:
🛠️ Tools at a Glance
Domain and Style are structured parameters — pass them as separate tool arguments, not embedded in the requirements text.
Example prompts:
💬 Prompts
This server also exposes four user-invoked workflow prompts (slash commands in MCP clients). Unlike tools, the LLM does not autonomously invoke prompts — the user selects one and fills in its arguments. Each prompt encodes a tested tool-orchestration recipe.
* = required argument
Tool-only clients
Clients that only support the tools protocol (no native prompts/list or prompts/get) can access all four workflow prompts via the generated list_prompts and get_prompt tools, which route through the server's middleware chain exactly as native prompt calls do.
📖 Pattern Catalog
Via MCP tools (recommended — works in all clients)
Valid category values: messaging, structural, cloud, data, ai_cognitive, specialized, api_gateway, coordination, dataflow, presentation.
Via MCP resources
Pattern JSON structure
Each pattern includes: name, category, context, benefits, tradeoffs, quality_attributes (scalability/maintainability/reliability/security/performance/simplicity, scores 1–10), suitable_domains, component_types, technology_stack, design_principles, best_practices.
Working Together with design-pattern-mcp-local
This server answers which system shape to build (architecture); the sibling design-pattern-mcp-local answers how each unit inside it is coded (design patterns). An architecture pattern structures the whole system — its components, their relationships, and its API/data/event contracts (e.g. event-driven, pipe-and-filter, microservices, chosen from the 128-pattern catalog above). A design pattern solves one recurring implementation problem inside a single component — its participants, interactions, and language-bound code (e.g. observer, process-manager, circuit-breaker, chosen from the sibling's 438-pattern catalog with 13 language bindings each).
Recommended order — macro first, micro second:
Concrete handoff on the IoT example: this server emits the pipe-and-filter architecture (Kafka source → JSON parser filter → geolocation enricher → InfluxDB/S3 sinks, with at-least-once delivery and backpressure in the contracts). The geolocation enricher's cache-miss path then goes to select_design_patterns ("cache-aside enrichment with Redis fallback, Python") — e.g. a circuit-breaker + retry design with participants, implementation_steps, and a Python code_sketch — which the architecture-level component contract references but never implements.
Run both servers side by side (dev host ports :8820 architecture, :8062 design-pattern; systemd :8810 / :8062). They are independent — either order works for exploration — but architecture-first keeps component boundaries stable while the design server fills in the internals.
Install Alternatives
Docker (manual)
Local Development (uv)
Prerequisites: Python 3.12+, uv
Or use the installed console script (after make install):
The TEI embedder (Qwen3-Embedding-0.6B) is required for domain-scoped pattern retrieval. Without it, the server falls back to the default pattern. Docker compose starts it automatically; local users must run it separately on port 8080.
The retrieval legs are built at server startup: BM25 always, the FAISS dense leg from the embedding-index cache when a valid snapshot exists (otherwise embedded from scratch). Startup stays fail-fast — every start makes one probe embedding call, so a misconfigured or unreachable TEI sidecar aborts warmup rather than breaking the user's first design request. Docker compose's service_healthy dependency ordering guarantees TEI is ready before the app starts.
TEI startup: both sidecar images (
docker/Dockerfile.tei-embed,docker/Dockerfile.tei-rerank) ship a self-built TEI router (v1.9.4 + unmerged PR #884) withWARMUP_TOKENS=0by default — this skips the synthetic warmup pass (measured ~131 s embed / ~78 s rerank) so containers become ready after weight load only. Override per sidecar viaTEI_WARMUP_TOKENS/TEI_RERANK_WARMUP_TOKENS(positive N warms with N tokens instead; values >MAX_BATCH_TOKENSare rejected at startup).
GPU TEI: the shipped sidecars are CPU images (FROM ghcr.io/huggingface/text-embeddings-inference:cpu-1.9, ORT backend — batch cap 8 for this model) and the Stage-0 router is built CPU-only (--features ort,http). This repo ships no GPU build path — running on CUDA would require changing the runtime base image to :cuda-1.9 and rebuilding the router with the CUDA feature set, which is not a supported recipe here (only design-pattern-mcp-local ships one: make docker-build-tei-embed-gpu). A stock upstream TEI image without PR #884 silently ignores WARMUP_TOKENS.
Already-running embedder/reranker: when embedding and reranking endpoints already run on other servers, point the MCP server at them and skip the sidecars (docker/docker-compose.hub.yml starts the MCP server only and wires exactly this). The remote embedder must be TEI serving the same model — keep EMBEDDER_PROVIDER=tei and set EMBEDDER_BASE_URL to its OpenAI-compatible route (dev-compose convention: http://<host>:8080/v1; the config.json default is the bare http://pattern-tei-embed:8080). This server's embedder config has no model field (src/patterns/embedder.py::build_embedder sends an empty model name for the non-tei providers), so openai / ollama / vllm / hosted_vllm cannot address an arbitrary remote model without a code change. The reranker is not a LiteLLM client — it POSTs {RERANKER_BASE_URL}/rerank directly (default http://pattern-tei-rerank:8080, no /v1); provider/model syntax in the LiteLLM embedding docs applies to the embedder only. EMBEDDER_API_KEY is forwarded as the LiteLLM api_key (any non-empty string satisfies a no-auth TEI).
Configuration
config.json
The server reads ~/.config/architecture-pattern-mcp/config.json (override with --config-path):
{env:VAR:-default} syntax expands environment variables at load time.
Generator LLM (LlamaIndex LiteLLM)
The generator LLM is accessed through the LlamaIndex LiteLLM integration (llama-index-llms-litellm). All provider settings therefore follow LiteLLM's model syntax: <provider>/<model> (e.g. openai/gpt-4o-mini, anthropic/claude-sonnet-4-5, openrouter/minimax/minimax-m2).
The server composes the LiteLLM model string from your configuration as generator.provider + generator.config.model:
If the configured model already contains a provider prefix (e.g. openai/gpt-4o-mini), that prefix is stripped and replaced by the configured provider.
- Provider list, model names, and the exact
<provider>/<model>syntax: LiteLLM Providers documentation - Custom/OpenAI-compatible endpoints (proxies, vLLM, Ollama, …): set
GENERATOR_BASE_URL(generator.config.base_url) — it is passed as the LiteLLMapi_base GENERATOR_API_KEYis passed as the LiteLLMapi_key;temperature,top_p,top_k, andstreammap to the corresponding LiteLLM parameters
Key environment variables
Embedding-index cache (dense retrieval snapshot)
The dense retrieval leg is one FAISS index over every catalogue domain slug (~254). Its embeddings are snapshotted to disk after a cold build and reloaded on the next start, so a warm start costs one probe embedding instead of a full corpus pass (measured on the dev compose stack: 16.5 s → 0.3 s). BM25 is cheap and rebuilt every start.
- Path:
EMBEDDING_CACHE. The image bakes/var/cache/architecture-pattern-mcp/embedding-index; host runs (uv) use~/.config/architecture-pattern-mcp/embedding-index. - Where the files live: the logged path is the in-container view. Docker
stores the named volume at
/var/lib/docker/volumes/<volume-name>/_data(root-owned), so/var/cacheon the host stays empty by design. Inspect without sudo:docker exec <container> ls /var/cache/architecture-pattern-mcp/embedding-index, ordocker volume inspect -f '{{.Mountpoint}}' <volume-name>for the host side. - Containers persist it in a named volume
(
architecture-pattern-mcp-dev-embedding-index/architecture-pattern-mcp-systemd-embedding-index), so the snapshot survives image rebuilds, container recreation anddocker compose down. Reset it withdocker compose down -vordocker volume rm <name>; a baredocker runneeds-v apmcp-embedding-index:/var/cache/architecture-pattern-mcp/embedding-index. - Rebuilt automatically when the embedding function changes (provider,
base_url, resolved model name, query/text instruction prefixes), when the slug corpus changes, or when a probe vector shows a different model behind an unchanged config (e.g. a redeployed TEI sidecar). Log lines:Embedding index cache hit: N slugs, 0 corpus embed calls (snapshot <cache-dir>)/Embedding index cache miss (<reason>); embedding corpus/Embedding index snapshot written: N slugs (path <cache-dir>)— emitted immediately after the embedding pass, before any other startup step — and, with the cache switched off,Embedding index cache disabled; embedding corpus(never reported as a miss). - Single writer: no locking — run one server process per cache directory. A failed snapshot write only logs a warning; the server runs cacheless and never fails the start.
- Operations notes (volumes, permissions, disable switch): INSTALL.md.
Structured Reasoning (shannonthinking / code-reasoning)
Before each LLM phase call (ANALYZE / GENERATE / EVALUATE / RETRY), the server
optionally runs a bounded ThoughtGenerator loop: it authors each reasoning
step with the generator's own LLM (LlamaIndex LiteLLM; one completion per
step) and submits it to the
shannonthinking and/or
code-reasoning MCP servers —
structured thinking scratchpads that validate, number, and record each step.
The resulting trace is injected into the phase prompt as a
<reasoning_context> block. Contract: each thought = 1 LLM completion + 1
MCP tool call, capped by REASONING_MAX_TOTAL_STEPS (default 8).
Key properties:
- Embedded in Docker — the
build-mcpsstage bakes both npm packages ([email protected],@mettamatt/[email protected]) into the image at/usr/local/lib/node_modules/...; the runtime invokes them directly vianode(no network, no npx). - Auto-fallback to npx outside Docker — when the embedded entry points
are missing, the client falls back to
npx -y <pkg>(first call downloads). - Process-per-call isolation — each tool call runs in a fresh subprocess
(
keep_alive=False); nothing persists between calls. - Silent per-call degradation — any spawn/timeout/tool failure logs a WARNING and the phase proceeds with a degraded in-prompt thinking scaffold (decompose → classify → calibrate → resolve → verify); it never raises.
- Loud startup — the lifespan health-check probes both tools and logs an
ERROR (with resolution hints) if one is unreachable; set
REASONING_FAIL_FAST=trueto make startup fail instead. - Trace caching — ANALYZE and GENERATE traces are computed once per design request and reused across design-loop attempts.
Opting in / tuning
Reasoning is disabled by default: it measured at ~55% of end-to-end design
latency (median 286 s of 517 s per run, plus ~77 s of extra generator time when
the traces are absent) for no selection-quality gain in the Stage-0 benchmark —
identical hit rate and acceptable-primary F1 across 16 scenarios. Enable it with
REASONING_ENABLED=true.
Local (non-Docker) development needs Node.js; either install the packages
globally (npm install -g server-shannon-thinking @mettamatt/code-reasoning)
or let the npx fallback download them on first use.
Latency note: a design run issues 14 reasoning tool calls (analyze 8, generate 3, evaluate 3) as serial subprocesses. Measured on the Stage-0 benchmark (MiniMax-M2.7 generator): 14–30 s per call, median 286 s of reasoning per run — minutes, not seconds. The trace cache removes repeated ANALYZE/GENERATE work across design-loop attempts but not the first pass.
Set LOGGING_LEVEL=DEBUG to capture the authored thought and tool response
for every per-step reasoning call. Docker/systemd stacks default to INFO;
export LOGGING_LEVEL=DEBUG before make docker-up.
CLI flags
Extending with Custom Patterns
Pattern files are loaded from ~/.config/architecture-pattern-mcp/pattern/ (configurable via PATTERN_DIRECTORY). Drop a JSON file alongside the 128 built-in patterns.
Minimal pattern structure:
Required fields: category, name, context, benefits, tradeoffs, quality_attributes.
Valid category values: messaging, structural, cloud, data, ai_cognitive, specialized, api_gateway, coordination, dataflow, presentation.
Full JSON Schema with all enums: docs/pattern-schema.json
Long-running tools & timeouts
design_architecture and its job-trio counterpart run a multi-stage LLM pipeline that can take 5–10 minutes per call. The single-phase tools are far cheaper: analyze_architecture is one lightweight LLM call (≈20 s mean on the committed benchmark corpus, 66 s measured on a contended host) and generate_architecture / evaluate_architecture are one large completion each (≈2–3 minutes). The long design call is inherent to the workload, not a bug: the generator LLM must process a large input payload — the selected pattern definitions from the 128-pattern catalog, your requirements, and the full output of every previous stage — and produce a large, strictly structured JSON document (components, relationships, API contracts, data models, event contracts, quality scores) one token at a time. The design_architecture pipeline repeats generate → evaluate up to three times, so a single call can comprise 9+ LLM round trips.
The timeout problem
MCP clients (AI coding agents, MCP SDKs) sit between the server and the LLM. Many of them implement a client-side idle timeout: if no data is received on the HTTP connection for some period (typically 30–120 seconds), the client aborts the request. The server is still working — the LLM is still generating — but the client closes the connection and reports a timeout error to the agent.
This is a client-side behaviour, not a server-side one. The server processes the full request correctly; the client simply gives up before the response arrives.
Affected clients (hardcoded short timeouts):
These clients cannot be reconfigured to accept longer timeouts — the timeout is baked into the SDK.
Clients covered by the heartbeat defence:
Works for these because their idle timers are reset by any incoming data — the heartbeat progress notifications sent from a parallel async task on the server are received by the client, resetting its clock.
The heartbeat defence (applied by default)
Every long-running tool emits progress notifications from a parallel coroutine every 30 seconds (configurable via TASKS_HEARTBEAT_INTERVAL_SECONDS). As long as the client resets its idle timer on any received data, the request stays alive for the full duration of the pipeline.
TS-SDK clients (Claude Desktop, Cursor, etc.) do not reset their timeout on progress notifications.
The async job trio (for timeout-constrained clients)
For full control and compatibility with timeout-limited clients, three tools provide a durable job handle:
submit_architecture_design_job returns a job_id in milliseconds. The pipeline runs in a background task. Poll get_architecture_design_status(job_id) every 10–30 seconds. When status is completed, the full design is in the result field. Cancellation is best-effort — the job exits at the next pipeline stage boundary.
This is the only fix that works for TS-SDK clients (Claude Desktop, Cursor).
The job store is SQLite at ~/.config/architecture-pattern-mcp/jobs.db (configurable via ARCHITECTURE_PATTERN_JOBS_DB).
Bypassing client timeouts with a direct HTTP client
The example client in examples/architecture_client.py is a direct Python HTTP client — it is not an MCP agent. It calls the server over HTTP without an MCP SDK, and therefore has no client-side idle timeout: it makes a single blocking request and waits for the full response.
Both targets drive the same direct client (--tool analyze|design). make client-design demonstrates that the server correctly completes long requests — the timeout issue is purely a client-side problem. Host applications that wrap MCP (Claude Desktop, Cursor, …) impose their own timeouts; use the async job trio there.
Troubleshooting
Server starts but tools are not visible
- Check the agent's MCP connection: Claude Code
/mcp, OpenCodeopencode mcp list, Codexcodex mcp list - Verify the server process started: compose logs should show
MCPArchitectServer initialized - Confirm the TEI embedder is healthy:
curl http://127.0.0.1:8080/healthinside the container
"Connection refused" or timeout errors
The server waits for the TEI embedder to become healthy:
LLM provider errors (502 / 401)
- Confirm
GENERATOR_API_KEYis set and not expired - Verify
GENERATOR_BASE_URLmatches your provider's endpoint - If using a proxy, check reachability from inside the container
Pattern JSON files not loading
- Files must have
.jsonextension - Required fields:
category,name,context,benefits,tradeoffs,quality_attributes - Validate against
docs/pattern-schema.json
Building & Development
Common make targets (full reference: docs/make_rules.md):
Publishing
All three images are published to two registries simultaneously:
All three images share the same $(DOCKER_TAG) (the version from pyproject.toml), so tei:1.0.3 always ships with mcp:1.0.3. Blob deduplication keeps re-tagging unchanged TEI images cheap.
Bandwidth note: the TEI embedder image is ~5 GB (ONNX fp32 weights baked in). First push to each registry is ~5 GB upload. Subsequent pushes are incremental — only changed layers are transferred.
Prerequisites
Docker Hub — already authenticated locally (docker login).
GitHub Container Registry — requires a classic PAT with write:packages scope. 2FA is not an issue — PATs bypass it. After login the token is discarded; the credential persists in ~/.docker/config.json until you log out.
Publish (one-time setup + per-session)
On subsequent publishes repeat steps 1–3. If your PAT has expired, generate a new one at the link above.
First push — set packages public (GHCR only)
GHCR packages default to private. After the first make docker-publish-all, flip all three packages to public:
Set each to Public and save.
Partial failure recovery
If the push fails mid-way (e.g., GHCR auth was not configured), Docker Hub layers are already uploaded. After fixing auth, re-running make docker-publish-all is safe — each registry reports a cache hit for already-uploaded layers and completes the remaining push. For targeted retries, individual images can be pushed with make docker-publish-tei or make docker-publish-tei-rerank.
systemd Service (Linux)
The server can run as a systemd service on any systemd-based Linux host. It starts the Docker Compose stack automatically at boot.
File layout
The systemd/ directory contains three files:
The production compose file is a deployment variant of docker/docker-compose.yml:
it has no build: sections (images must be pre-built), uses absolute paths, and
lives under /etc/architecture-pattern-mcp/ on the host. The systemd-managed
project uses the distinct name apmcp-systemd so it can coexist with the dev
compose if needed.
TEI sidecars are NOT defined in this stack — the
pattern-tei-embedembedder andpattern-tei-rerankreranker containers live in the sharedpattern-tei-infrastack. This stack owns thepattern-tei-sharedDocker network and exposes the sidecars athttp://pattern-tei-embed:8080/v1(embedder) andhttp://pattern-tei-rerank:8080(reranker). The systemd MCP stack joins that network and reaches them by those DNS names.Prerequisite — one-time TEI infra setup:
Start
architecture-pattern-mcp.serviceonly AFTERpattern-tei-infra.serviceisactive (running). Seepattern-tei-infra/README.mdfor full details.
Prerequisites
- systemd-based Linux host with Docker (
docker compose version). <user>is in thedockergroup.- Both images pre-built locally (
make docker-build-allfrom the repo). - Shared TEI infra stack installed and enabled (see tei-infra README).
Install
Verify
systemctl status shows active (exited) within seconds, but the containers
take up to ~2 minutes to become healthy (TEI embedder start_period: 120s).
The unit does not wait for healthchecks.
Day-to-day
Updating the stack
Uninstall
For full troubleshooting, networking details, and the coexistence guide, see
systemd/README.md.
License
MIT License. See LICENSE.
来源:README.md,提交 16d1038
工具
0版本历史
4- v1.1.5最新Oct 9, 2026
- v1.1.3Oct 9, 2026
- v1.1.2Sep 17, 2026
- v1.0.1Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分