MCP, MCP server
Metamesh Uga
The MCP Operating System — A Serverless Control Plane for AI Agents and MCP Infrastructure
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit b2e7d1f9dfeb, unchanged since the check below.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV OBFUSCATION_ENCODED_BLOB INSTALL_DOCUMENTED_INSTALLER SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
scripts/backup-db.js, line 41
await fs.unlink(localPath); - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
packages/agent-billing/src/index.js, line 44
async fetch(request, env) { - NETWORK_UNNAMED_HOST Low
Calls a fixed host that the description does not name.
packages/agent-billing/src/index.js, line 44
async fetch(request, env) { - SECRETS_PATH_DOTENV Low
Mentions a .env file.
scripts/autonomous-deploy.js, line 108
const envPath = path.join(process.cwd(), '.env'); - OBFUSCATION_ENCODED_BLOB Low
Contains a long base64 shaped string in a file that should be readable.
package-lock.json, line 1
{ - INSTALL_DOCUMENTED_INSTALLER Note
Documentation shows an installer that pipes a download into a shell.
FINAL-DEPLOY.md, line 140
curl -s https://metamesh-uga.dev/install | bash -s -- --dry-run - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
scripts/autonomous-deploy.js, line 174
const key = crypto.scryptSync(process.env.BACKUP_PASSWORD || 'metamesh-backup-key', 'salt', 32);
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
scripts/backup-db.js, line 41
await fs.unlink(localPath);
Install and update
Note
The docs document an installer that pipes a download into a shell.
INSTALL_DOCUMENTED_INSTALLER
FINAL-DEPLOY.md, line 140
curl -s https://metamesh-uga.dev/install | bash -s -- --dry-run
LAUNCH.md, line 122
curl -s https://metamesh-uga.dev/install | bash
OPERATIONAL-REPORT-COMPLETE.md, line 177
curl -s https://metamesh-uga.dev/install | bash && metamesh connect
Show more
OPERATIONAL-REPORT-FINAL-VERIFIED.md, line 84
curl -s https://metamesh-uga.dev/install | bash && metamesh connect
OPERATIONAL-REPORT-FINAL.md, line 119
curl -s https://metamesh-uga.dev/install | bash
OPERATIONAL-REPORT.md, line 106
curl -s https://metamesh-uga.dev/install | bash
SUMMARY.md, line 190
- **One-line install**: `curl -s https://metamesh-uga.dev/install | bash`
SUMMARY.md, line 286
- **Install**: `curl -s https://metamesh-uga.dev/install | bash`
llms-install.md, line 55
curl -s https://metamesh-uga.dev/install | bash
metamesh-uga_blueprint.md, line 573
curl -s https://metamesh-uga.dev/install | bash
metamesh-uga_blueprint.md, line 1379
curl -s https://metamesh-uga.dev/install | bash && metamesh connect
packages/landing/public/install.sh, line 4
# Usage: curl -s https://metamesh-uga.dev/install | bash
# 🚀 MetaMesh-UGA - Blueprint Compl.txt, line 776
curl -s https://metamesh-uga.dev/install | bash
## 🤖 ISTRUZIONI PER DEVIN.AI - Set & Forget Definitivo.txt, line 345
curl -s https://metamesh-uga.dev/install | bash && metamesh connect
Network
Concern
can reach a host that is not written as a fixed address. can reach api.telegram.org. The description does not name that host. can reach registry.mcp.io. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
packages/agent-billing/src/index.js, line 44
async fetch(request, env) {
packages/agent-billing/src/index.js, line 367
await fetch(`https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
packages/aggregator/src/index.js, line 38
async fetch(request, env) {
Show more
packages/aggregator/src/index.js, line 170
await fetch(`https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
packages/alerts/src/index.js, line 70
async fetch(request, env) {
packages/alerts/src/index.js, line 332
await fetch(`https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
packages/alerts/src/index.js, line 349
await fetch(env.DISCORD_WEBHOOK_URL, {
packages/analytics/src/index.js, line 10
async fetch(request, env) {
packages/dashboard/src/pages/AgentDashboard.tsx, line 173
<pre className="bg-slate-950 border border-slate-800 rounded-lg p-4 text-xs font-mono text-slate-300 overflow-x-auto">{`curl -X POST https://api.metamesh-uga.dev/mcp \\
packages/dashboard/src/pages/AgentDashboard.tsx, line 177
onClick={() => copy(`curl -X POST https://api.metamesh-uga.dev/mcp
packages/gateway/src/index.js, line 326
rest_call: "curl -X POST https://api.metamesh-uga.dev/v1/call -H 'Content-Type: application/json' -d '{\"tool\":\"example.echo\",\"params\":{\"message\":\"hi\"}}'",
packages/landing/functions/sitemap.xml.js, line 13
const res = await fetch('https://api.metamesh-uga.dev/v1/tools');
packages/landing/src/App.tsx, line 275
curl https://api.metamesh-uga.dev/v1/tools?limit=20
scripts/self-healing.js, line 121
const response = await fetch('https://api.metamesh-uga.dev/v1/tools?limit=1');
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
scripts/autonomous-deploy.js, line 108
const envPath = path.join(process.cwd(), '.env');
scripts/autonomous-deploy.js, line 118
logger.info('Loaded credentials from .env');
scripts/autonomous-deploy.js, line 174
const key = crypto.scryptSync(process.env.BACKUP_PASSWORD || 'metamesh-backup-key', 'salt', 32);
Show more
scripts/autonomous-deploy.js, line 120
logger.warn('No .env file found');
scripts/autonomous-deploy.js, line 125
const envPath = path.join(process.cwd(), '.env');
scripts/autonomous-deploy.js, line 130
logger.success('Saved credentials to .env');
scripts/autonomous-deploy.js, line 389
logger.info('3. Add it to .env or run: wrangler secret put STRIPE_SECRET_KEY');
scripts/backup-db.js, line 84
const botToken = process.env.TELEGRAM_BOT_TOKEN;
scripts/credential-rotation.js, line 90
// Update in .env
scripts/credential-rotation.js, line 91
const envPath = path.join(process.cwd(), '.env');
scripts/credential-rotation.js, line 119
const botToken = process.env.TELEGRAM_BOT_TOKEN;
scripts/self-healing.js, line 273
const botToken = process.env.TELEGRAM_BOT_TOKEN;
scripts/validation-report.js, line 12
const ADMIN_KEY = process.env.ADMIN_KEY || '';
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains an encoded blob in a file that should be readable.
OBFUSCATION_ENCODED_BLOB
package-lock.json, line 1
{
.credentials/credentials-1781603876674.json, line 3
"encrypted": "8bfe4c0a2a762339032785aafbbc4961:d629f2086b1fa9a8922a2da061b88173:36f1237e7b2a048c4dcfac3580adc4bfb96ac5704177b730459d2b740eecdae06e9adf9e4b73b00c8ee634be0f599196cd57
.credentials/credentials-1781603989459.json, line 3
"encrypted": "0f90394d1535b41fe1dc7a78b4b423dd:937c4fff74b2cf47c4d61c7871f97ca7:9ef91b3debcb9fe356cd05f41cc9a420758056faa6aeff0fd5b150adcd03d8bf3ae6a0c994ce1338000d7fc0dc9abb9ca565
Show more
.credentials/credentials-1781604127854.json, line 3
"encrypted": "6274d6038cc3d616d89075431061e98f:ebf57d5bed831961abda680d5cb973bf:a8e48a335f3e23e0e27dd368a581b57ba378e457b3e1fd50c28586ab008d15e307e833e01f0f890b38d49cec49f3f97a59c6
.credentials/credentials-1781605246719.json, line 3
"encrypted": "075042dd90921d16e4ef751550427daa:35cfa50773228aa519fb2d2db59c0e9b:23e93663d31255efc83bf14a48bc80d0e8b3721ba9cf1f384d8c0a705a4b4e4f0eb32de030fe81fc574a39e24986c37c5edf
.credentials/credentials-1781605318310.json, line 3
"encrypted": "aadb13a0b26a8ffa2845ba19d0a057d4:bd3064a5857e9e98ec152e1428942db9:02ef69755d186f323995d8aa6546b58936e14c7f4dab8e118599cc204b62e299c23c41612105c029e8508c3d0a5ac2ca47fe
.credentials/credentials-1781605444648.json, line 3
"encrypted": "bfbf3cdbd9fd27d3129dca29c371dc83:d169e8a7e323a9682de49f12e780df73:16f838538b536e4dafe3352bb7bf9e772fb9a698e73c17714c3dc8e00e1bfdbd7ec25bb770e465235c4dfd5af9aaf64bcb79
.credentials/credentials-1781605553933.json, line 3
"encrypted": "e915d603f24e9a47eadc4a7d328f9bb7:63a65ab5bc3072a55f2efeecbc9dfef1:2f94c4da581dcc422c24cf5286f8b039c4099d5cd401ff9941c5c93c4a726ca8340a727a0e431a787fbcf5cc63f409c1bddb
.credentials/credentials-1781605637049.json, line 3
"encrypted": "1f35738fb11fdbb2444a7a5a3809acc0:b4817683375347b7da5b2ac90cb4d1ce:b83abf42ca3f84a2dc79470bde1e5dce0b1a789a3eebe566b5b6fb48726e12876fedf5fe05ddf2f2072ee0d45d9fdaeb9f9b
Licence
Note
no licence file found.
LICENCE_MISSING
No file path was stored.
no licence file found.
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit b2e7d1f9dfeb. can delete files. The docs document an installer that pipes a download into a shell. can reach a host that is not written as a fixed address. can reach api.telegram.org. The description does not name that host. can reach registry.mcp.io. The description does not name that host. reads a credential or environment file. contains an encoded blob in a file that should be readable. no licence file found.
Date and source
Date checked:
github.com
Commit graded: b2e7d1f9dfebd5cf1596210151521f6cd3cb5b7f
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.