惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
小众软件
小众软件
S
SegmentFault 最新的问题
GbyAI
GbyAI
量子位
爱范儿
爱范儿
L
LangChain Blog
Vercel News
Vercel News
A
About on SuperTechFans
腾讯CDC
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
V
Visual Studio Blog
美团技术团队
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
APX `mcp check` Is the Fastest Way to Debug Shadowed MCPs
Manuel Bruña · 2026-06-27 · via DEV Community

APX mcp check Is the Fastest Way to Debug Shadowed MCPs

APC is the portable context layer. APX is the local runtime and tooling layer that makes APC useful every day. When an MCP setup feels wrong, the fastest fix is usually not to stare at the final list of servers. It is to inspect how APX merged the sources.

That is why apx mcp check matters. It shows the source files, the active entries after merge, and any conflicts. In other words, it answers the real question: which MCP won, and what got shadowed?

Why list is not enough

apx mcp list is useful, but it only shows the merged result. That is good for a quick inventory and bad for debugging drift. If the same MCP name exists in more than one scope, the final list hides the path that produced it.

A clean list can still hide a bad setup. For example:

  • a shared MCP in .apc/mcps.json
  • a runtime override in ~/.apx/projects/<id>/mcps.json
  • a machine-wide entry in ~/.apx/mcps.json

The name looks fine. The source may not be the one you expected.

The merge rule

APX is explicit about priority: runtime > shared > global. The runtime file wins when names collide, then the shared APC file, then the machine-wide global file. The tests cover that chain, and the CLI prints conflicts on purpose.

That means two things:

  1. Shadowing is normal.
  2. Shadowing should be visible.

If a server disappears or behaves differently than expected, do not guess. Ask APX which source won.

What mcp check shows

apx mcp check gives you three useful views at once:

  • source files and whether each file exists
  • active entries after merge
  • conflicts, if a name appears more than once

That is the right level for debugging. It tells you whether APX is reading the repo file, the runtime file, or the global file. It also tells you whether an entry is APX-owned or coming from a foreign IDE config that APX only reads advisory.

A typical flow looks like this:

apx mcp check --project iacrmar
apx mcp list --scope runtime --project iacrmar
apx mcp list --scope shared --project iacrmar

Use check first. Use list second, when you already know where to look.

A concrete failure mode

Imagine you add github in shared scope because you want every clone of the repo to know the server exists. Later, you add another github entry in runtime scope because this machine needs a token.

That is not a bug. It is a layered override. But if you forget the runtime copy exists, you may edit the shared file and still see the runtime version win. The project looks unchanged, because APX is doing what the merge rule says.

apx mcp check makes that obvious. It will show the runtime entry as the winner and report the shared entry as the loser.

Ownership still matters

APX can inspect foreign MCP configs from other tools, but it will not rewrite them. The code is careful here: if an MCP comes from a foreign source, APX tells you to change it in that tool's config instead. That is a good boundary. APX should manage APX-owned scopes, not silently mutate somebody else's setup.

So the practical rule is simple:

  • repo-shared MCPs belong in APC
  • machine-specific MCPs belong in APX runtime
  • machine-wide defaults belong in APX global
  • foreign IDE configs stay in the IDE

Why this split helps APC too

APC stays portable because it only carries the shared part of the story. If a token or a local endpoint sneaks into the repo, the clone-safe contract breaks. APX protects that contract by keeping runtime state local and by making conflicts visible instead of hidden.

That is the deeper reason mcp check exists. It is not a status screen. It is a sanity check for the boundary between portable context and local execution.

Bottom line

When MCP behavior looks wrong, start with apx mcp check.

It shows the files, the winners, and the conflicts. That is usually enough to explain the issue in one pass, without guessing which layer won or which file got shadowed.