Atlas / MCP servers / dosco / graphjin

graphjinBLOCK

mcp/dosco/graphjin

One governed graph for AI agents — GraphQL + MCP over your databases, files, APIs, and code

Verdict
BLOCK
Grade
F
Trust score
46 /100
Exposed tools
3 3r · 0w · 0d
Transport
streamable-http
License
Apache-2.0
Stars
3,206
01

Overview

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

[](https://github.com/dosco/graphjin/blob/master/LICENSE) [](https://www.npmjs.com/package/graphjin) [](https://hub.docker.com/r/dosco/graphjin/tags) [](https://discord.gg/6pSWCTZ) [](https://pkg.go.dev/github.com/dosco/graphjin/core/v3) [](https://goreportcard.com/report/github.com/dosco/graphjin/core/v3)

GraphJin is a compiler and runtime that gives AI agents one governed graph over the systems a real company already has: databases, warehouses, files, source code, workflows, metadata, and security policy. Instead of handing an agent raw credentials and hoping it guesses correctly, GraphJin exposes that graph through GraphQL + MCP: the agent discovers before acting, validates queries, runs approved work, observes runtime status — and every answer is checked against an execution ledger before it leaves the server.

It is not only for agents. GraphJin is still a high-performance GraphQL-to-database compiler, Go library, standalone API service, REST/OpenAPI gateway, and real-time subscription server. The agent use case is where everything comes together: the same compiler that serves your apps can also give AI a smart, auditable way to work across data, code, and operations.

Works with PostgreSQL, MySQL, MongoDB, SQLite, Oracle, MSSQL, Snowflake, Redshift, BigQuery, Apache Cassandra / Amazon Keyspaces, S3/GCS/local files, CodeSQL source indexes - and models from Claude/GPT-4 to local 7B

Read from source at commit ed3f1f55a764OBSERVED · 2026-10-12
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.

claude-code
claude mcp add graphjin-site -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "graphjin-site": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (3)

3 read · 0 write · 0 destructive.

ToolRiskDescription
AlcoholreadBad for you!
BeersreadLiquid Bread
oopsreadnope
04

Trust audit

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

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

What the source does

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

Findings (25)

CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
cmd/tmpl/dev.yml:340
#     # Or inline: private_key_pem: "-----BEGIN PRIVATE KEY-----\n..."
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
serv/config_docs/dev.yml:346
#     # Or inline: private_key_pem: "-----BEGIN PRIVATE KEY-----\n..."
HIGHHard-coded secrets · inv.env_committed · CWE-798, CWE-321
serv/web/.env
.env
Why it matters. a real .env in the package
Fix. ship .env.example with placeholders only
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cassandradriver/conn.go:120
func (s *Stmt) Exec(args []driver.Value) (driver.Result, error) {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cassandradriver/executor.go:66
func (e *gocqlExecutor) Exec(ctx context.Context, stmt Statement) (ResultSet, error) {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
cassandradriver/resolve.go:31
Exec(ctx context.Context, stmt Statement) (ResultSet, error)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
clickhousedriver/conn.go:101
func (s *Stmt) Exec(args []driver.Value) (driver.Result, error) {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
website/content/start/demos.md:162
Every demo ships an end-to-end smoke suite: `scripts/smoke.sh` exercises data queries, saved queries, workflows, watches, and the artifact store; `--agent-eval` adds strict agent-protocol evals; `--mo
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.tool_poisoning · CWE-94, CWE-1427
notes/IMPLEMENTING_NEW_QUERY_OPERATIONS.md:30
If needed, add test tables to all database schema files. **IMPORTANT: When adding test tables, you MUST add them to ALL database schema files to ensure consistency across different database backends.*
Why it matters. a tool description carrying instructions to the agent
Fix. tool descriptions describe the tool; nothing else
MEDIUMInsecure crypto · crypto.weak_random · CWE-327, CWE-338
serv/web/build/assets/react-vendor-CIMexeMC.js:1
import{a as e,r as t,t as n}from"./rolldown-runtime-CNC7AqOf.js";import{Fr as r,Ir as i,Mr as a,Nr as o,c as s}from"./graphiql-D05UQ1BV.js";var c=e(i(),1),l=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,u=/^[\\
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
cmd/env_health_cmd.go:115
return "http://127.0.0.1:8090"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
cmd/env_health_cmd.go:119
return "http://127.0.0.1:8090"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
cmd/env_health_cmd.go:124
return "http://127.0.0.1:8090"
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
core/internal/qcode/gen_string.go:262
const _ExpOp_name = "OpNopOpAndOpOrOpNotOpEqualsOpNotEqualsOpGreaterOrEqualsOpLesserOrEqualsOpGreaterThanOpLesserThanOpInOpNotInOpLikeOpNotLikeOpILikeOpNotILikeOpSimilarOpNotSimilarOpRegexOpNotRegexOp
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
agent/sanitize_test.go:33
anthropic := "sk-ant-api03-abcdefghijklmnopqrstuvwxyz0123456789"
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
CONFIG.md:564
connection_string: postgres://app:secret@db/app
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
FEATURES.md:1422
connection_string: postgres://app:secret@db/app
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
README.md:309
connection_string: postgres://app:secret@db/app
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
tests/dbint_test.go:981
connStr := "postgres://postgres:postgres@localhost:5432/adventureworks?sslmode=disable"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
README.md:240
secret: "long-random-shared-secret"   # used to sign and verify local JWTs
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
auth/issuer/issuer_test.go:14
const secret = "a-very-long-test-secret-not-for-prod-use"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
auth/issuer/issuer_test.go:77
iss, err := New(Config{Secret: "x-very-long-secret-for-testing-only", TTL: time.Hour})
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
serv/agent_handler_test.go:803
const secret = "AIza-canary-secret-value-1234567890"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
serv/auth_login_test.go:23
Secret:   "test-secret-plenty-long",
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
CONFIG.md:647
# private_key_pem: "-----BEGIN PRIVATE KEY-----\n..."

Gates applied: critical_finding, instruction_override, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha ed3f1f55a764full audit observations/trust-audit/mcp-server/dosco__graphjin.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-12ed3f1f55a764BLOCKF46first audit
06

Questions

What is the graphjin MCP server?

One governed graph for AI agents — GraphQL + MCP over your databases, files, APIs, and code

What tools does graphjin expose?

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

Is graphjin safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (46/100) and found 9 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 graphjin need?

No credential environment variables were found in its source, so it appears to need none.

How does graphjin run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as graphjin-site at 1.0.0.

How current is this page?

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

Advertisement