Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add mcp/lykhoyda/rn-dev-agent/codex-plugin-cdpgit clone --depth 1 https://github.com/Lykhoyda/rn-dev-agentGrade A, and why
cdp scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
"const f=require('fs'),p=require('path'),o=require('os'),c=require('child_process');const V='1.0.0';const D=x=>{try{return f.readdirSync(x).map(n=>p.join(x,n)).filter(z=>{try{return f.statSync(z).isDirectory()}catch{retu What it actually says
{
"cdp": {
"command": "node",
"args": [
"-e",
"const f=require('fs'),p=require('path'),o=require('os'),c=require('child_process');const V='1.0.0';const D=x=>{try{return f.readdirSync(x).map(n=>p.join(x,n)).filter(z=>{try{return f.statSync(z).isDirectory()}catch{return false}})}catch{return[]}};const C=process.env.CODEX_HOME||p.join(o.homedir(),'.codex');const R=[process.env.RN_DEV_AGENT_CODEX_PLUGIN_ROOT,...D(p.join(C,'plugins','cache')).map(m=>p.join(m,'rn-dev-agent',V))].filter(Boolean);let L=null;for(const r of R){const x=p.join(r,'bin','cdp-supervisor.js');if(f.existsSync(x)){L=x;break}}if(!L){process.stderr.write('rn-dev-agent: Codex launcher not found for rn-dev-agent '+V+'\\n');process.exit(1)}const ch=c.spawn(process.execPath,[L,...process.argv.slice(1)],{stdio:'inherit',cwd:process.cwd(),env:process.env});ch.on('error',e=>{process.stderr.write('rn-dev-agent: failed to spawn Codex launcher '+L+': '+e.message+'\\n');process.exit(1)});for(const s of ['SIGTERM','SIGINT','SIGHUP'])process.on(s,()=>{try{ch.kill(s)}catch{}});ch.on('exit',(code,sig)=>{if(sig){process.removeAllListeners(sig);try{process.kill(process.pid,sig)}catch{process.exit(1)}}else process.exit(code??0)})"
],
"tool_timeout_sec": 900
}
}What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 10 lines scan A 25cbfb8412fb
cdp is an MCP server published in the GitHub repository Lykhoyda/rn-dev-agent (11 stars, last pushed 2d ago), licensed MIT. Its token cost is not measured: an MCP server costs its tool schemas, not its config file. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other mcp servers, from other repositories
upwork
MCP server "upwork", hosted remotely at 127.0.0.1, as configured in citizenweb3/upwork-agent.
nightgate-mcp
MCP server exposing NIGHTGATE (Midnight blockchain attestation layer) to AI agents. Runs locally from the @odatano/nightgate-mcp npm package.
fleetwright
Work leases in one SQLite file, so a fleet of agents divides a job list instead of racing it. Library, CLI and MCP server, zero dependencies. Runs locally from the fleetwright Python package.
multi-agent-orchestration-with-mcp-and-a2a
MCP server "multi-agent-orchestration-with-mcp-and-a2a" as configured in Saad-Dev13/MultiAgentOrchestrationwithMCPandA2A. Runs locally from the multi-agent-orchestration-with-mcp-and-a2a Python package.
docs-langchain
MCP server "docs-langchain", hosted remotely at docs.langchain.com, as configured in langchain-ai/langchain.
reference-langchain
MCP server "reference-langchain", hosted remotely at reference.langchain.com, as configured in langchain-ai/langchain.