AgentMesh MCP server
2026년 11월 2일 커밋Model Context Protocol 인프라를 탐색, 라우팅, 보안 및 관찰할 수 있는 고성능 서비스 메쉬와 게이트웨이를 제공합니다.
다른 이름 devdanielvaldez/agentmesh
- 스타
- 1
- Tools
- 23
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 2일
- 라이선스
- MIT
AgentMesh MCP란?
AgentMesh은(는) MCP server입니다. Model Context Protocol 인프라를 탐색, 라우팅, 보안 및 관찰할 수 있는 고성능 서비스 메쉬와 게이트웨이를 제공합니다. 23개 도구를 제공합니다. 예: claude-code, claude-desktop, generic.
프로젝트 README에서 생성된 요약
AgentMesh MCP server 정보
AI 도구를 위해 설계된 서비스 메쉬이자 게이트웨이인 AgentMesh를 사용하면 Model Context Protocol 인프라 관리를 중앙 집중화할 수 있습니다. 클라이언트가 승인된 도구, 리소스 및 프롬프트에 액세스할 수 있는 단일 논리적 엔드포인트를 제공하는 동시에 라우팅 및 보안의 운영 복잡성을 처리합니다. 개발자는 노트북, 가상 머신 또는 프라이빗 네트워크에 네이티브 바이너리나 컨테이너 형태로 배포하여 MCP 생태계를 관리할 수 있습니다.
이 시스템은 컨트롤 플레인과 데이터 플레인을 사용하여 설정과 트래픽을 분리합니다. SQLite 데이터베이스를 사용할 수 있는 컨트롤 플레인은 인증된 API와 CLI를 통해 원하는 상태를 관리합니다. 게이트웨이는 실제 트래픽을 처리하며 프로토콜 검증, 인증, 속도 제한 및 자격 증명 안전 프록시를 포함하는 fail-closed 미들웨어 순서를 적용합니다. 이러한 아키텍처를 통해 ID, 기능 또는 지역에 기반한 결정론적 라우팅이 가능하며, 서킷 브레이커 및 로드 밸런싱과 같은 기능을 통해 AI 에이전트가 상태가 양호한 업스트림 서버에 연결되도록 보장합니다.
활용 사례
- 1MCP 도구 액세스 중앙화AI 에이전트에게 모든 승인된 도구와 리소스에 대한 단일 진입점을 제공합니다.
- 2보안 정책 강제 적용특정 MCP 호출을 거부, 편집 또는 예산 내로 제한하는 세밀한 거버넌스 규칙을 적용합니다.
- 3트래픽 탄력성 확보상태 필터링과 서킷 브레이커를 사용하여 인프라를 장애로부터 보호합니다.
- 4도구 사용량 모니터링구조화된 텔레메트리를 통해 운영 신호와 감사 기록을 추적합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
AgentMesh MCP 도구 23
README에서 감지됨claude-codeclaude-desktopgenericservecontrol-planevalidateschemadiffdoctorapplyreconcilesnapshot
| claude-code | — | |
| claude-desktop | — | |
| generic | — | |
| serve | — | |
| control-plane | — | |
| validate | — | |
| schema | — | |
| diff | — | |
| doctor | — | |
| apply | — | |
| reconcile | — | |
| snapshot | — |
도구 23개 모두 보기도구 수 줄이기
metricsmonitorpolicyupgradeteachworkflowscompositessessionssecretreplaymulti
| metrics | — | |
| monitor | — | |
| policy | — | |
| upgrade | — | |
| teach | — | |
| workflows | — | |
| composites | — | |
| sessions | — | |
| secret | — | |
| replay | — | |
| multi | — |
구성
AGENTMESH_ADMIN_TOKENAGENTMESH_CONTROL_URLAGENTMESH_TEACH_PROFILE
| 이름 | 설명 | 유형 |
|---|---|---|
| AGENTMESH_ADMIN_TOKEN | — | |
| AGENTMESH_CONTROL_URL | — | |
| AGENTMESH_TEACH_PROFILE | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능devdanielvaldez/agentmesh is public and reachablegithub.com/devdanielvaldez/agentmesh ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-02github.com/devdanielvaldez/agentmesh ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음23 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기AgentMesh
The service mesh for AI tools
Discover, route, secure, and observe Model Context Protocol infrastructure from one endpoint.
Get started · How it works · CLI · Documentation · Contributing
AgentMesh is an open-source gateway and service mesh for the Model Context Protocol. MCP clients connect to one logical endpoint while AgentMesh validates the protocol, isolates credentials, applies governance, selects a healthy upstream, and records safe operational signals.
[!IMPORTANT] AgentMesh is pre-release software. The local gateway, SQLite control plane, and core platform contracts are implemented and tested, but production HA adapters and compatibility guarantees are still evolving. Do not use it as the sole protection for sensitive production credentials yet.
Why AgentMesh?
Direct MCP connections are simple, but every client otherwise has to solve the same operational problems independently. AgentMesh centralizes those concerns without requiring a proprietary client SDK or tying infrastructure to one model provider.
| Capability | What it provides |
|---|---|
| Unified access | One MCP endpoint for approved tools, resources, prompts, and tasks. |
| Deterministic routing | Tenant-, identity-, capability-, version-, label-, and region-aware decisions. |
| Policy-driven traffic | First-match-wins rules that deny, pin, budget, and redact MCP calls. |
| Resilient traffic | Health filtering, load balancing, deadlines, safe retries, bulkheads, and circuit breakers. |
| Security and governance | Authentication, RBAC, contextual policy, approvals, rate limits, SSRF controls, and credential isolation. |
| Control plane | Versioned desired state, optimistic concurrency, integrity-protected snapshots, and rollout status. |
| Observability | W3C trace context, bounded metrics/events, redacted logs, and tamper-evident audit records. |
| Flexible operation | Native binary or container on a laptop, VM, container service, or private network. |
How AgentMesh works
AgentMesh is designed to separate configuration from traffic. The implemented control plane compiles desired state into immutable snapshots, and the data-plane contracts consume immutable state without querying control-plane storage on the request path. Fleet snapshot delivery is a forthcoming adapter; the current executable gateway uses the static upstream from its YAML configuration.
flowchart LR
subgraph Operators[Operators and automation]
CLI[AgentMesh CLI]
APIClient[API / GitOps client]
end
subgraph Control[Control plane]
ControlAPI[Authenticated control API]
Reconciler[Desired-state reconciler]
Storage[(Memory / SQLite)]
Snapshot[Versioned integrity snapshot]
end
subgraph Data[Data plane]
Gateway[MCP gateway]
Security[Auth · policy · limits]
Traffic[Route · balance · resilience]
Proxy[Bounded proxy]
end
Clients[AI agents and MCP clients] -->|Streamable HTTP| Gateway
CLI --> ControlAPI
APIClient --> ControlAPI
ControlAPI --> Storage
Storage --> Reconciler
Reconciler --> Snapshot
Snapshot -. fleet distribution adapter .-> Gateway
Gateway --> Security --> Traffic --> Proxy
Proxy --> Servers[MCP servers]
Gateway --> Signals[Telemetry and audit]
The gateway crate defines this explicit, fail-closed middleware order. The current static executable path exercises admission, protocol validation, proxying, response validation, and telemetry; the remaining stages are implemented as composable modules and are being wired into snapshot-driven runtime assembly.
flowchart LR
A[Admission] --> B[Protocol validation]
B --> C[Authentication]
C --> D[Authorization and policy]
D --> E[Rate and concurrency limits]
E --> F[Capability resolution]
F --> G[Route and endpoint selection]
G --> H[Deadline and resilience guards]
H --> I[Credential-safe proxy]
I --> J[Response validation]
J --> K[Accounting · telemetry · audit]
For the deeper design, see Technical Architecture, Control Plane, and the architecture decisions.
Quick start
Prerequisites
- Git.
- An MCP Streamable HTTP server if you want to proxy real requests.
- Optional: Docker with Compose for the container workflow.
- Only for building from source: Rust
1.85or newer through rustup.
Install (prebuilt binary)
curl -fsSL https://raw.githubusercontent.com/devdanielvaldez/agentmesh/main/install.sh | sh
Windows (PowerShell): irm .../install.ps1 | iex. All options, manual
downloads, and checksums: INSTALL.md.
Staying updated
On interactive startup, AgentMesh checks the latest GitHub release using a daily cache (one ≤2s
query when stale) and offers to download and install an available update. Other commands print an
update notice. Checks fail silently when offline; opt out with AGENTMESH_NO_UPDATE_CHECK=1:
agentmesh upgrade --check # report only
agentmesh upgrade # confirm, download, verify, install
agentmesh upgrade --yes # non-interactive (CI)
upgrade downloads the prebuilt binary for your platform, verifies its .sha256 checksum,
sanity-checks it with --version, and replaces the running binary in place
(--to DIR installs elsewhere instead). Platforms without a prebuilt binary fall back to
install.sh or cargo.
1. Clone and build (from source)
git clone https://github.com/devdanielvaldez/agentmesh.git
cd agentmesh
cargo build --locked -p agentmesh
2. Configure a gateway
Copy the example and edit the upstream URL:
cp config/agentmesh.example.yaml config/agentmesh.local.yaml
gateway:
host: 127.0.0.1
port: 8080
upstream:
url: http://127.0.0.1:3001/mcp
allow_insecure_http: true # local development only
request_timeout_ms: 30000
telemetry:
json: false
filter: agentmesh=info,tower_http=info
Validate before starting:
cargo run -p agentmesh -- validate config/agentmesh.local.yaml
cargo run -p agentmesh -- doctor --config config/agentmesh.local.yaml
3. Start the gateway
cargo run -p agentmesh -- serve --config config/agentmesh.local.yaml
Check its operational endpoints:
curl --fail http://127.0.0.1:8080/
curl --fail --include http://127.0.0.1:8080/health/live
curl --fail --include http://127.0.0.1:8080/health/ready
The MCP endpoint is POST /mcp. Requests must use application/json, a compatible
MCP-Protocol-Version header, and valid MCP metadata. See
Protocol Support for accepted versions and compatibility behavior.
4. Start the local control plane
Use a token of at least 16 bytes. The plaintext token is used only for verification setup; the API state stores its SHA-256 digest.
export AGENTMESH_ADMIN_TOKEN='replace-with-a-long-random-token'
cargo run -p agentmesh -- control-plane \
--host 127.0.0.1 \
--port 8081 \
--database agentmesh-control.db
Check the authenticated API:
curl --fail \
--header "Authorization: Bearer ${AGENTMESH_ADMIN_TOKEN}" \
http://127.0.0.1:8081/v1/status
5. Apply and compile desired state
A desired-state document has a kind, unique name, lifecycle state, and module-specific spec:
{
"kind": "route",
"name": "search-primary",
"state": "active",
"spec": {
"service": "search",
"capability": "search.query",
"strategy": "least_active"
}
}
Save it as route.json, then use the CLI:
export AGENTMESH_CONTROL_URL='http://127.0.0.1:8081'
cargo run -p agentmesh -- apply \
--control-url "$AGENTMESH_CONTROL_URL" \
--tenant acme \
--namespace development \
route.json
cargo run -p agentmesh -- reconcile \
--control-url "$AGENTMESH_CONTROL_URL" \
--tenant acme \
--namespace development
cargo run -p agentmesh -- snapshot \
--control-url "$AGENTMESH_CONTROL_URL" \
--tenant acme \
--namespace development
The CLI reads the token from AGENTMESH_ADMIN_TOKEN. An update must include the current resource
revision with --revision; stale writes fail with 409 Conflict.
Run with Docker
The default Compose service starts the gateway on port 8080 using config/agentmesh.yaml:
docker compose up --build
docker compose ps
curl --fail http://127.0.0.1:8080/health/ready
The image is non-root, read-only, drops Linux capabilities, and uses a small temporary filesystem. Set an HTTPS upstream for any non-local deployment. The control plane currently runs as a separate binary command so its SQLite database can be mounted on explicit persistent storage.
Deployment modes
flowchart TB
subgraph Local[Local development]
LocalClient[Client] --> LocalBinary[AgentMesh binary]
LocalBinary --> LocalServer[Local HTTP or stdio MCP server]
LocalBinary --- LocalDB[(Memory / SQLite)]
end
subgraph Cloud[Cloud / VM / container service]
CloudClients[Clients] --> LB[Cloud load balancer]
LB --> Gateways[AgentMesh gateway replicas]
ControlPlane[Control plane] -->|snapshots| Gateways
ControlPlane --- DB[(Durable storage adapter)]
Gateways --> CloudServers[MCP services]
end
subgraph Hybrid[Hybrid]
HostedControl[Hosted control plane] -. outbound control connection .-> PrivateGateway[Private gateway]
PrivateGateway --> PrivateServers[Private MCP servers]
RemoteClients[Authorized clients] --> PrivateGateway
end
Today, the supported executable paths are a standalone gateway with a static HTTP upstream and a durable SQLite control plane. The workspace also contains stable contracts for external storage, distributed coordination, exporters, discovery adapters, and separated runtime profiles. See Deployment and Operations for current boundaries and safe production-oriented defaults.
Configuration
Configuration is strict: unknown YAML keys fail startup instead of being ignored.
| Setting | Default | Description |
|---|---|---|
gateway.host |
0.0.0.0 |
Gateway bind address. |
gateway.port |
8080 |
Gateway port; zero is rejected. |
gateway.upstream.url |
none | Static Streamable HTTP MCP endpoint. |
gateway.upstream.allow_insecure_http |
false |
Permit HTTP; use only for trusted local development. |
gateway.upstream.request_timeout_ms |
30000 |
Per-request upstream deadline. |
gateway.upstreams[].name |
upstream-{index} |
Logical upstream name targeted by policy route rules. |
gateway.environment |
development |
Deployment environment matched by policy rules. |
gateway.policies |
[] |
Policy routing rules, evaluated in order; first match wins. |
telemetry.json |
false |
Emit newline-delimited JSON logs. |
telemetry.filter |
agentmesh=info,tower_http=info |
Default tracing filter. |
The standalone binary currently reads gateway values from YAML. RUST_LOG overrides the configured
tracing filter. CLI-specific environment variables are:
AGENTMESH_CONFIGAGENTMESH_CONTROL_URLAGENTMESH_ADMIN_TOKEN
Generate a machine-readable schema or compare two valid files:
cargo run -p agentmesh -- schema > agentmesh.schema.json
cargo run -p agentmesh -- diff current.yaml candidate.yaml
Policy routing
gateway.policies manages MCP traffic with first-match-wins rules. Each rule selects requests with
match (a tool glob, a method, an environment) and applies any combination of effects:
gateway:
environment: development
upstreams:
- url: http://127.0.0.1:3001/mcp
name: github-prod
allow_insecure_http: true
- url: http://127.0.0.1:3002/mcp
name: github-free
allow_insecure_http: true
policies:
- match: { tool: "github.get_*" }
route: github-free
- match: { tool: "stripe.refund", environment: development }
deny: Refunds are disabled in development.
- match: { tool: "maps.*" }
budget: { calls_per_hour: 100 }
- match: { tool: "crm.*" }
redact: ["customer.ssn"]
| Effect | Behavior |
|---|---|
deny |
Rejects with 403 POLICY_DENIED and the configured reason. |
route |
Pins matching tools/call requests to the named upstream, bypassing discovery. |
budget |
Enforces a rolling hourly window per rule; exhaustion rejects with 429 QUOTA_EXCEEDED. |
redact |
Replaces dotted arguments paths with [REDACTED] before forwarding. |
Rules without method apply to tools/call when tool is set and to every method otherwise.
Unknown route names fail startup instead of serving a partial mesh. Every decision is recorded in
GET /metrics and shown by agentmesh monitor as a trailing policy label. Dry-run any call
without side effects (exit code 2 when it would be denied):
agentmesh policy --config config/agentmesh.local.yaml --tool github.get_issue
This is traffic management (which upstream serves a call, at what rate, with what fields). Identity
RBAC and human approvals live in the agentmesh-policy crate. Full semantics and examples are in
the User Guide.
AgentMesh Teach
Teach any application to AI agents: demonstrate a task once, and AgentMesh turns it into a reusable, validated, policy-guarded capability.
At the end of a recording or guided authoring session, Teach asks for explicit success checks
(URL, visible text, or an element's presence/absence). When at least one check is supplied, saving
the workflow also compiles a portable capability package into the learned namespace of the local
catalog at $AGENTMESH_HOME/capabilities/learned/ (or the platform AgentMesh data directory's
capabilities/learned/).
The package carries typed inputs/outputs, declared effects and permissions, recovery behavior,
and success-evidence claims. This makes the package verifiable; it does not certify successful
execution until a runtime returns matching evidence. Workflows without a success check remain
usable as workflows but are not compiled into AMCP packages. Previous package revisions are retained outside the live
catalog, and deleting or renaming a workflow removes its generated package from discovery.
agentmesh teach --name whatsapp.read_messages # guided workflow authoring
agentmesh workflows list # stored capabilities
agentmesh workflows inspect whatsapp.read_messages
agentmesh workflows validate ./workflow.yaml
# Publish every demonstrated capability as a tool library for an AI model.
agentmesh workflows export --all --target mcp --out ./taught-capabilities-mcp
Workflows are stored as a portable Workflow IR (~/.agentmesh/workflows/<id>.yaml) that
describes what a capability does — semantic targets and {{ inputs.* }} templates, never
coordinates or raw recordings:
version: "1.0"
id: whatsapp.read_messages
runtime: browser
inputs:
contact: { type: string, required: true }
limit: { type: integer, default: 20 }
steps:
- id: search_contact
op: ui.fill
target: { semantic: conversation_search, role: textbox }
value: "{{ inputs.contact }}"
- id: read_messages
op: ui.extract
target: { semantic: message_list }
outputs:
messages: { from: steps.read_messages.result }
Every load re-validates (unknown ops and dangling references fail closed). An MCP export gives
the model operational memory rather than changing its weights: each taught workflow becomes a
named tool with a typed input schema, description, outputs, policy checks, audit trail, and repair
candidates. Large libraries expose progressive search/describe/execute tools plus value-free
reusable routines. Write-capable MCP calls request contextual approval; a server owner can
preauthorize them with AGENTMESH_MCP_ALLOW_WRITES=1. Extracted content is marked untrusted,
and secrets remain outside the model. Experience reports and redacted trajectory exports provide
an evaluation/training bridge without claiming to train weights locally. Full schema and operation
families: Workflow IR.
Hands-on walkthrough: Teach manual.
MCP discovery includes each workflow's AMCP contract, described intent, required inputs,
preconditions, success checks, effects, permissions, and a semantic step summary. Successful runs
return a receipt with the checked assertions and a digest of the retained audit record; workflows
without success checks are reported as completed but unverified. Agents can create reusable,
confirmed composite capabilities with teach_create_composite_capability. A composite sequences
existing workflows, maps caller inputs and earlier outputs, and appears in capability search after
creation as a named MCP tool, with a tools-changed notification where the MCP SDK supports it. It
cannot contain arbitrary code. If a step fails after earlier steps completed, the MCP
response marks reconciliation as required before retrying.
The generated server exposes teach_explain_agentmesh with its lifecycle and authoring instructions.
By default, composite creation asks for confirmation. To let the model create declarative composites
without that prompt, the server owner can set AGENTMESH_MCP_ALLOW_COMPOSITE_CREATION=1 in the MCP
server environment. This only composes installed workflows; existing execution policy and approvals
still apply, and the model cannot add permissions or load arbitrary code through this setting.
Connect an AI client
An export is a plain MCP stdio server. Generate its ready-to-use client file instead of hand-writing JSON — the command absolutizes the server path, derives the entry name from the export, and attaches the session profile that carries logins (without it, login-backed tools run logged out):
agentmesh workflows export --all --target mcp --out ./taught-capabilities-mcp
cd ./taught-capabilities-mcp && npm install && cd ..
agentmesh workflows client-config --client claude-code \
--server ./taught-capabilities-mcp/server.mjs \
--profile whatsapp --out ./taught-capabilities-mcp/claude-mcp.json
--client |
Produces | Placement |
|---|---|---|
claude-code |
.mcp.json |
Copy to .mcp.json in the project root where Claude Code runs (or merge its mcpServers entry). |
claude-desktop |
claude_desktop_config.json |
Merge into the Claude Desktop config file, then fully quit (Cmd+Q) and reopen. |
generic |
mcp.json |
Give to any MCP host that accepts local stdio servers. |
The written file needs no edits:
{
"mcpServers": {
"agentmesh-taught-capabilities": {
"command": "node",
"args": ["/abs/path/taught-capabilities-mcp/server.mjs"],
"env": {
"AGENTMESH_TEACH_PROFILE": "/home/user/.agentmesh/profiles/whatsapp"
}
}
}
}
--profile accepts a session name (whatsapp) or a profile directory; omit
it for login-free tools (the command warns). Unknown clients, missing servers,
and unknown profiles fail closed with the supported values listed. Re-exporting
refreshes catalog.json/routines.json, which a running server reloads
without restart; per-tool registrations added afterwards need a re-export.
AgentMesh MCP 질문
AgentMesh MCP는 어떤 도구를 제공하나요?
23개 도구를 제공합니다. 예: claude-code, claude-desktop, generic, serve, control-plane.
AgentMesh를 프로덕션 환경에서 바로 사용할 수 있나요?
아니요, 현재 프리릴리스 소프트웨어 단계입니다. 민감한 프로덕션 자격 증명을 보호하는 유일한 수단으로 아직 사용해서는 안 됩니다.
빌드된 바이너리는 어떻게 설치하나요?
제공된 설치 스크립트를 사용하여 Linux/macOS의 경우 curl 명령어로, Windows의 경우 PowerShell로 설치할 수 있습니다.
소스에서 빌드하기 위한 요구 사항은 무엇인가요?
rustup을 통해 설치된 Rust 버전 1.85 이상이 필요합니다.