███████╗████████╗██████╗ █████╗ ████████╗ ██████╗
██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗
███████╗ ██║ ██████╔╝███████║ ██║ ██║ ██║
╚════██║ ██║ ██╔══██╗██╔══██║ ██║ ██║ ██║
███████║ ██║ ██║ ██║██║ ██║ ██║ ╚██████╔╝
╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝
██████╗ ██████╗ ██╗██████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
██╔════╝ ██╔══██╗██║██╔══██╗██║ ██║██╔═══██╗██╔═══██╗██║ ██╔╝
██║ ███╗██████╔╝██║██████╔╝███████║██║ ██║██║ ██║█████╔╝
██║ ██║██╔══██╗██║██╔═══╝ ██╔══██║██║ ██║██║ ██║██╔═██╗
╚██████╔╝██║ ██║██║██║ ██║ ██║╚██████╔╝╚██████╔╝██║ ██╗
╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
Griphook is an MCP (Model Context Protocol) server that connects AI agents to the STRATO blockchain platform.
STRATO is a blockchain platform with a comprehensive DeFi ecosystem including token management, decentralized exchange, lending markets, CDP vaults, cross-chain bridging, and governance.
Griphook lets AI assistants like Claude interact with STRATO. Through 67 MCP tools, your AI can:
- Read token balances, swap pools, lending positions, CDP vaults, and protocol metrics
- Execute swaps, lending operations, borrowing, bridging, and reward claims
- Manage platform administration and governance voting
Public hosted instances are available for both production and testnet:
| Environment | Login URL | MCP Endpoint |
|---|---|---|
| Production | https://griphook.strato.nexus/login | https://griphook.strato.nexus/mcp |
| Testnet | https://griphook-testnet.strato.nexus/login | https://griphook-testnet.strato.nexus/mcp |
- Visit the login URL to sign in and get a token
- Add to your MCP config (e.g.,
.mcp.jsonfor Claude Code):
{
"mcpServers": {
"griphook": {
"type": "http",
"url": "https://griphook.strato.nexus/mcp",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}See AI Coding Tool Compatibility for tool-specific configurations.
To run your own Griphook server, add to .mcp.json:
{
"mcpServers": {
"griphook": {
"command": "node",
"args": ["/path/to/griphook/dist/cli.js", "serve"],
"env": {
"OAUTH_CLIENT_ID": "your-client-id",
"OAUTH_CLIENT_SECRET": "your-client-secret",
"OPENID_DISCOVERY_URL": "https://keycloak.blockapps.net/auth/realms/mercata/.well-known/openid-configuration",
"STRATO_API_BASE_URL": "https://buildtest.mercata-testnet.blockapps.net/api"
}
}
}
}| Variable | Description |
|---|---|
OAUTH_CLIENT_ID |
OAuth 2.0 client ID |
OAUTH_CLIENT_SECRET |
OAuth 2.0 client secret |
OPENID_DISCOVERY_URL |
OpenID Connect discovery endpoint |
| Variable | Default | Description |
|---|---|---|
STRATO_API_BASE_URL |
http://localhost:3001/api |
STRATO API base URL |
STRATO_HTTP_TIMEOUT_MS |
15000 |
HTTP request timeout (ms) |
| Variable | Default | Description |
|---|---|---|
GRIPHOOK_HTTP_ENABLED |
true |
Enable HTTP transport |
GRIPHOOK_HTTP_HOST |
127.0.0.1 |
Bind address |
GRIPHOOK_HTTP_PORT |
3005 |
Port |
| Variable | Description |
|---|---|
GRIPHOOK_PUBLIC_URL |
Public URL (enables multi-user auth) |
Set GRIPHOOK_PUBLIC_URL to enable multi-user deployment with per-request authentication. You'll also need to add the redirect URI https://<your-domain>/login/callback to your Keycloak client.
GRIPHOOK_PUBLIC_URL=https://griphook-testnet.strato.nexus npm startThe server exposes /.well-known/oauth-protected-resource (RFC 9728). MCP clients with OAuth support authenticate automatically. For clients without OAuth support, visit /login to get a Bearer token.
See deployment guide for full setup including Keycloak, DNS, nginx, and SSL configuration.
| Error | Solution |
|---|---|
OPENID_DISCOVERY_URL ... required |
Set OAuth env vars before npm run login |
Failed to acquire access token |
Check credentials and discovery URL |
403 Forbidden |
Token expired - run npm run login again |
ECONNREFUSED |
Check STRATO_API_BASE_URL points to running instance |
Griphook works with any MCP-enabled AI coding tool. All tools use the same authentication flow: sign in at /login to get a token, then add it to your tool's config.
| Tool | Config File | Type Field |
|---|---|---|
| Cursor | .cursor/mcp.json or ~/.cursor/mcp.json |
http |
| Claude Code | .mcp.json or ~/.claude.json |
http |
| Codex | ~/.codex/config.toml |
http |
| Kilo Code | .kilocode/mcp.json |
streamable-http |
| Cline | cline_mcp_settings.json |
streamableHttp |
| OpenCode | opencode.json or ~/.config/opencode/opencode.json |
remote |
| VS Code Copilot | .vscode/mcp.json |
http |
Cursor (.cursor/mcp.json or ~/.cursor/mcp.json):
{
"mcpServers": {
"griphook": {
"type": "http",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}Claude Code (.mcp.json or ~/.claude.json):
{
"mcpServers": {
"griphook": {
"type": "http",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}Codex (~/.codex/config.toml):
[mcp_servers.griphook]
type = "http"
url = "https://griphook.strato.nexus/mcp"
[mcp_servers.griphook.headers]
Authorization = "Bearer <your-token>"Kilo Code (.kilocode/mcp.json):
{
"mcpServers": {
"griphook": {
"type": "streamable-http",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}Cline (cline_mcp_settings.json):
{
"mcpServers": {
"griphook": {
"type": "streamableHttp",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}OpenCode (opencode.json):
{
"mcp": {
"griphook": {
"type": "remote",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}VS Code Copilot (.vscode/mcp.json):
{
"servers": {
"griphook": {
"type": "http",
"url": "https://griphook.strato.nexus/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}- Cursor: Tools may appear in the sidebar but not be callable in chat. Try using global config (
~/.cursor/mcp.json) and restart Cursor. - VS Code Copilot: Requires VS Code 1.102+ with Agent Mode enabled (
chat.agent.enabled).
This tool can move funds and change on-chain state. Treat it accordingly.
- Credentials are stored unencrypted at
~/.griphook/credentials.json(file0600, dir0700). Protect your filesystem. - HTTP transport binds to
127.0.0.1without TLS. Keep it local or front with HTTPS + auth if exposed. - Report vulnerabilities privately to maintainers rather than opening public issues.