Convex MCP Server
OFFICIAL SERVERInspect and operate a Convex deployment: tables, documents, functions, logs and environment variables
A GraphQL compiler and MCP server that puts databases, files and code indexes behind one governed graph
By Spacy (individual) Go Local · stdio, Streamable HTTP DatabasesDeveloper tools
75 popularity score ★ 3.2k ↓ 833/wk
Opens the app, which asks before it adds the server.
claude mcp add --transport http graphjin http://localhost:8080/api/v1/mcp{
"mcpServers": {
"graphjin": {
"url": "http://localhost:8080/api/v1/mcp"
}
}
}{
"servers": {
"graphjin": {
"type": "http",
"url": "http://localhost:8080/api/v1/mcp"
}
}
}[mcp_servers.graphjin]
url = "http://localhost:8080/api/v1/mcp"gemini mcp add --scope user --transport http graphjin http://localhost:8080/api/v1/mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
npm install -g graphjin
graphjin serve new <APP_NAME>claude mcp add graphjin -- graphjin mcp --path '<ABSOLUTE_PATH_TO_APP>'{
"mcpServers": {
"graphjin": {
"command": "graphjin",
"args": [
"mcp",
"--path",
"<ABSOLUTE_PATH_TO_APP>"
]
}
}
}{
"mcpServers": {
"graphjin": {
"command": "graphjin",
"args": [
"mcp",
"--path",
"<ABSOLUTE_PATH_TO_APP>"
]
}
}
}{
"servers": {
"graphjin": {
"type": "stdio",
"command": "graphjin",
"args": [
"mcp",
"--path",
"<ABSOLUTE_PATH_TO_APP>"
]
}
}
}[mcp_servers.graphjin]
command = "graphjin"
args = ["mcp", "--path", "<ABSOLUTE_PATH_TO_APP>"]gemini mcp add --scope user graphjin graphjin -- mcp --path '<ABSOLUTE_PATH_TO_APP>'GRAPHJIN_USER_ID |
Optional: User ID the stdio session acts as; overrides mcp.stdio_user_id, overridden by --user-id. |
|---|---|
GRAPHJIN_USER_ROLE |
Optional: Role the stdio session acts as, which decides what it may query; overrides mcp.stdio_user_role. |
ANTHROPIC_API_KEY |
Optional: Model key that enables the built-in agent and ask_graphjin_agent; OPENAI_API_KEY or GOOGLE_APIKEY also work. |
GraphJin is a Go service that reads the schema of the databases you point it at and turns GraphQL requests into single SQL statements. It supports PostgreSQL, MySQL, MongoDB, SQLite, Oracle, MSSQL, Snowflake, Redshift, BigQuery and Cassandra, plus object stores (local disk, S3, GCS) shown as tables and a CodeSQL index that makes a source tree queryable. The same engine serves an MCP surface, so an assistant can look up what tables, relationships and saved queries exist before it runs anything.
The MCP side is deliberately small. The base set is graphql_help and query_catalog for discovery, execute_saved_query for allow-listed queries and validate_where_clause for checking filters. execute_graphql (arbitrary queries) appears only when mcp.allow_raw_queries is on; get_current_config and validate_config appear only in dev mode, and update_current_config additionally needs mcp.allow_config_updates; ask_graphjin_agent appears only when the built-in agent is enabled with a model provider key. That makes nine tools at most, which the README never totals (serv/mcp.go, v3.21.13).
The README only shows the HTTP endpoint at /api/v1/mcp (Streamable HTTP, served by graphjin serve), but the binary also has a stdio mode: graphjin mcp --path <app folder>. When ~/.config/graphjin/client.json exists from graphjin mcp setup, the same command instead proxies stdio traffic to that remote GraphJin server (cmd/cmd_mcp.go). A built-in demo (graphjin mcp --demo) runs on SQLite with seeded data.
| Runtime | Node.js |
|---|
The graphjin binary: npm install -g graphjin (its postinstall step downloads the platform binary), Homebrew, Scoop, .deb/.rpm releases or the dosco/graphjin Docker image. A GraphJin app folder made with graphjin serve new <name>, whose config holds the database connection strings. For the HTTP endpoint, start graphjin serve --path <app folder>. The optional built-in agent needs an OPENAI_API_KEY, ANTHROPIC_API_KEY or GOOGLE_APIKEY.
Without mcp.allow_raw_queries (default false in serv/config.go, auto-enabled in dev mode) an assistant can only run saved, allow-listed queries. Config tools exist only in dev mode; update_current_config also needs mcp.allow_config_updates (default false). In production mode CodeSQL stops watching source files live. Apollo Federation _entities resolution is not implemented yet. Some dialects do not support batched subscriptions. Legacy discovery tools and HTTP helper endpoints are off unless mcp.legacy_discovery is set.
Suits teams that want an assistant to query several company databases, warehouses and files through one permission-aware layer, with saved-query allow-lists and read-only flags rather than raw credentials, and who can run and configure a Go service. It is heavy for someone who only wants to ask questions of a single local database: it needs an app folder and config before it does anything beyond the demo. Pick it over a plain SQL server when you want role-based limits and audit logs around what the assistant can run.
graphql_helpquery_catalogexecute_saved_queryvalidate_where_clauseexecute_graphqlget_current_configvalidate_configupdate_current_configask_graphjin_agent