Atlas / MCP servers / mcpany / MCP Any

MCP AnyBLOCK

mcp/mcpany/mcp-any
Verdict
BLOCK
Grade
F
Trust score
31 /100
Exposed tools
47 43r · 4w · 0d
Transport
sse · stdio · streamable-http
License
Apache-2.0
Stars
22
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Elevator Pitch

What is this? MCP Any is the Universal Adapter for AI agents. Why does it exist? It empowers developers to build secure, capability-enabled APIs (REST, gRPC, GraphQL, Command-line) through lightweight YAML/JSON configurations, serving as an ultimate universal bridge and eliminating the need to write custom boilerplate adapters. It acts as the backbone of interoperable autonomous systems.

Architecture

MCP Any relies on a "Configuration over Code" pattern. Users deploy a single binary which reads dynamically loaded capability definitions. The architecture supports gRPC, OpenAPI, HTTP, GraphQL, and CLI tools seamlessly without touching the underlying source code.

Key Design Patterns & Features:

  • Dynamic Tool Registration: Add and modify capabilities purely via configuration files at runtime.
  • Safety Policies: Robust constraint engines and safety layers designed to restrict arbitrary code execution and contain side effects safely.
  • Upstream Authentication: Out-of-the-box identity federation with various standard identity providers.
  • Multi-Tenant Isolation: Safe-by-default execution spaces that maintain boundary domains between differing agent systems.

High-Level Flow

graph TD
classDef agent fill:#f9f,stroke:#333,stroke-width:2px;
classDef core fill:#bbf,stroke:#333,stroke-width:2px;
classDef target fill:#bfb,stroke:#333,stroke-width:2px;

A[Client Application / Agent Framework]:::agent -->|Model Context Protocol| B(MCP Any Adapter Hub):::core

subgraph Config [Capability Configurations]
B --> C{Dynamic Router}
end

C -->|REST/OpenAPI Specs| D[REST/HTTP API]:::target
C -->|Protobuf/Reflection| E[gRPC Service]:::target
C -->|GraphQL Schema| F[GraphQL Endpoint]:::target
C -->|Standard I/O| G[Command Line Tools]:::target

Getting Started

Follow these step-by-step instructions t

Read from source at commit 3517ea122951OBSERVED · 2026-10-10
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add nextn --env MCPANY_API_KEY=${MCPANY_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "nextn": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "MCPANY_API_KEY": "${MCPANY_API_KEY}"
      }
    }
  }
}
03

Exposed tools (47)

43 read · 4 write · 0 destructive.

ToolRiskDescription
ALLOWED_PATHreadPath to expose (e.g. /home/user/projects)
CloudflarereadManage Cloudflare resources.
DB_PATHreadPath to SQLite database file
EverythingreadReference server with all MCP features.
FilesystemwriteRead/Write access to local files and directories.
GITHUB_PERSONAL_ACCESS_TOKENreadPersonal Access Token (classic or fine-grained)
GitHubreadAccess GitHub repositories, issues, and pull requests.
LinearreadLinear issue tracking integration
PostgreSQLreadConnect to a PostgreSQL database.
PuppeteerreadBrowser automation and scraping.
SQLitereadQuery and manage SQLite databases.
SentryreadAccess Sentry issues and errors.
SlackreadInteract with Slack channels and messages.
TestreadTest
TimereadCheck the current time in any timezone.
calculatorwritePerforms basic arithmetic operations (add, subtract, multiply, divide)
calculator_addwriteAdd two numbers
db_querywriteRun a database query
diff_test_toolreadTest diffing
disabled-toolreadA disabled tool
echoreadEchoes back the input message
echo_toolreadEchoes back input
get_userreadGet user details
get_usersreadReturns a list of users in a table
get_weatherreadGet weather for a location
ghost_toolreadHeavy and unused
heavy_toolreadA very heavy tool
light_toolreadLight
list_directoryreadList files in a directory
new_toolreadNew Tool Description
process_paymentreadProcess a payment via Stripe.
read_filereadRead a file
repeated_stringreadlist of strings
sayreadSays a message using cowsay.
special-toolreadA very special tool
system_inforeadReturns basic system information (simulated)
test-promptreadA test prompt
test-toolreadA test tool
test_toolreadA test tool
tool-1readA test tool
tool-2readDescription 2
tool-3readDescription 3
tool1readTool 1
tool2readTool 2
tool3readTool 3
used_toolreadUsed
weatherreadGet current weather for a location
04

Trust audit

BLOCKgrade F · trust 31/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (6 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
ui/src/components/services/bulk-service-import.tsx:136
data = yaml.load(jsonContent);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
ui/src/components/services/editor/service-editor.tsx:122
const parsed = yaml.load(value) as UpstreamServiceConfig;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
ui/src/components/stacks/stack-editor.tsx:79
yaml.load(value);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
ui/src/components/stacks/stack-editor.tsx:91
const collection = yaml.load(value) as any;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
ui/src/components/stacks/stack-editor.tsx:105
const doc = yaml.load(value) as any || {};
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
server/pkg/tool/types.go:3887
dangerousCalls := []string{"system(", "exec(", "popen(", "eval("}
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
server/pkg/validation/validation.go:190
if baseLower == "id_rsa" || baseLower == "id_dsa" || baseLower == "id_ed25519" || baseLower == "id_ecdsa" || baseLower == "id_rsa.key" || baseLower == "id_dsa.key" {
Why it matters. touches a credential store
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
server/docker/docker-compose.oauth.yml:12
- DSN=postgres://hydra:secret@postgres:5432/hydra?sslmode=disable&max_conns=20&max_idle_conns=4
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
server/docker/docker-compose.oauth.yml:36
- DSN=postgres://hydra:secret@postgres:5432/hydra?sslmode=disable&max_conns=20&max_idle_conns=4
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
server/pkg/app/seeds.go:53
"default": "postgresql://postgres:postgres@localhost:5432/postgres"
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
docs/features/design-delegation-attestation-layer.md:52
**Context:** Today's market sync revealed a new "Shadow Context Injection" pattern where malicious state fragments can bypass safety evaluations if the evaluator lacks full context visibility.
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
docs/features/design-pbr-adapter.md:6
As AI agents move toward deeper autonomy, "Tool Gating" (blocking a specific call) is becoming insufficient. Malicious instructions can manipulate an agent's reasoning loop to "hallucinate" authorizat
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMInsecure crypto · crypto.weak_random · CWE-327, CWE-338
ui/src/components/register-service-dialog.tsx:625
const state = Math.random().toString(36).substring(7); // Temporary client-side state for session key?
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/interop/placeholder.go:354
"Base-URL Hijack Protection (Exfiltration Guard)",
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/interop/placeholder.go:396
"UDP Beacon Discovery Listener",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
server/docker/setup_oauth.sh:23
--endpoint http://127.0.0.1:4445 \
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
server/pkg/util/hunter_redact_test.go:40
input:    "postgres://user:p#ssword@host:5432/db",
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
server/pkg/util/hunter_redact_test.go:45
input:    "postgres://user:p?ssword@host:5432/db",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
k8s/helm/mcpany/values.yaml:133
apiKey: "CHANGE_ME_IN_PRODUCTION" # WARN: Default value. Change this in production!
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/docs/features/audit_logging.md:73
api_key: "your-datadog-api-key"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/tests/integration/upstream/webhooks_e2e_test.go:80
const secret = "dGVzdC1zZWNyZXQtMTIz" //nolint:gosec // base64("test-secret-123")
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/tests/integration/upstream/webhooks_e2e_test.go:180
const secret = "dGVzdC1zZWNyZXQtMTIz" //nolint:gosec
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
ui/src/lib/monaco-theme.ts:45
{ token: "delimiter.parenthesis", foreground: "f8f8f2" },
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
server/tests/tls/ca.key:1
-----BEGIN PRIVATE KEY-----
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
server/tests/tls/client.key:1
-----BEGIN PRIVATE KEY-----

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 3517ea122951full audit observations/trust-audit/mcp-server/mcpany__mcp-any.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-103517ea122951BLOCKF31first audit
06

Questions

What tools does MCP Any expose?

47 in total: 43 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is MCP Any safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (31/100) and found 12 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does MCP Any need?

It reads MCPANY_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does MCP Any run?

It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as nextn at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (3517ea122951), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement