- ✓Open-source license (BSD-3-Clause)
- ✓Actively maintained (<30d)
- ✓Documented (README)
- !No description
claude mcp add mcp -- docker run -i --rm //your-dashboard-api-host{
"mcpServers": {
"mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "//your-dashboard-api-host"],
"env": {
"DASHBOARD_URL": "<dashboard_url>",
"DASHBOARD_API_KEY": "<dashboard_api_key>"
}
}
}
}DASHBOARD_URLDASHBOARD_API_KEYMCP Servers overview
# Everstake MCP Server
MCP server exposing Everstake staking data and company information to AI agents. Built in Go using [modelcontextprotocol/go-sdk](https://github.com/modelcontextprotocol/go-sdk).
**Transports:** Streamable HTTP (MCP 2025-03-26 spec, single `/` endpoint) or stdio. Selected via `MCP_TRANSPORT`.
---
## Available Tools
| Tool | Type | Description |
|---|---|---|
| `get_company_profile` | static | Company overview, metrics, certifications |
| `get_products` | static | Product details: Institutional Staking, VaaS, Yield, SWQOS, ShredStream |
| `get_solutions` | static | Solutions by audience: custodians, exchanges, asset managers, banks, fintech |
| `get_developer_docs` | static | SDK links, integration guides, API references |
| `get_contact_information` | static | Contact channels and routing guide |
| `get_security_profile` | static | Certifications: SOC 2 Type II, ISO 27001, NIST CSF, ITGC, GDPR, CCPA |
| `get_integrations` | static | Custody integrations: Fireblocks, BitGo, Anchorage, Coinbase, etc. |
| `get_uptime_metrics` | live | Uptime metrics from dashboard API (30 min cache) |
| `get_chains` | live | Supported chains with APY, fees, status (30 min cache) |
| `staking_calculator` | live | Estimated staking rewards by network and amount |
| `request_integration` | write | Submit integration/staking inquiry to Everstake sales |
---
## Running the Server
### Prerequisites
- Go 1.26.1+
- Environment variable `DASHBOARD_URL` set (required)
### Local
```bash
export DASHBOARD_URL=https://your-dashboard-api-host
go run ./cmd/mcp_server
```
The server starts on port `8080` by default. Override with `PORT=<port>`.
### Stdio mode
```bash
export DASHBOARD_URL=https://your-dashboard-api-host
export MCP_TRANSPORT=stdio
go run ./cmd/mcp_server
```
In stdio mode, the HTTP server, `/health` endpoint, and rate limiting are disabled. Logs go to stderr; stdout carries the MCP JSON-RPC protocol.
### Docker
HTTP mode:
```bash
docker build -t everstake-mcp .
docker run -e DASHBOARD_URL=https://your-dashboard-api-host -p 8080:8080 everstake-mcp
```
Stdio mode (interactive, no port mapping):
```bash
docker run --rm -i \
-e DASHBOARD_URL=https://your-dashboard-api-host \
-e MCP_TRANSPORT=stdio \
everstake-mcp
```
Use `-i` to keep stdin attached for the JSON-RPC protocol; do **not** pass `-t` (a TTY breaks line-based JSON framing). For MCP clients that launch the server as a subprocess, point `command` at `docker` with `args` matching the above, or wrap in a helper script (see [`.vscode/stdio_docker.sh`](.vscode/stdio_docker.sh) for an example using `--env-file`).
### Environment Variables
| Variable | Default | Required |
|---|---|---|
| `DASHBOARD_URL` | — | yes |
| `MCP_TRANSPORT` | `http` | no (`http` or `stdio`) |
| `PORT` | `8080` | no (http mode only) |
| `GIN_MODE` | — | no (`release` set in Dockerfile) |
### Health Check
```
GET /health
```
---
## Debugging with MCP Inspector
[MCP Inspector](https://github.com/modelcontextprotocol/inspector) is the official tool for poking at MCP servers — list tools, call them, see raw JSON-RPC.
> **Stdio note:** stdio servers are owned by the parent process; you cannot connect Inspector to an already-running stdio container. Inspector must **launch** the subprocess itself. For an interactive session you can reconnect to, use HTTP mode (option below).
### HTTP mode (recommended for general debugging)
Start the container:
```bash
docker run --rm -p 8080:8080 \
-e DASHBOARD_URL=https://your-dashboard-api-host \
-e DASHBOARD_API_KEY=<key> \
everstake-mcp
```
Open Inspector:
```bash
npx @modelcontextprotocol/inspector
```
In the UI:
- **Transport Type:** `Streamable HTTP`
- **URL:** `http://localhost:8080/`
Container stays running across Inspector sessions.
### Stdio mode (verify stdio transport)
Let Inspector launch the container so it owns stdin/stdout:
```bash
npx @modelcontextprotocol/inspector \
docker run --rm -i \
--env-file .env \
everstake-mcp
```
Or fill the UI manually:
- **Transport Type:** `STDIO`
- **Command:** `docker`
- **Arguments:** `run --rm -i --env-file .env everstake-mcp`
Each Inspector session forks a fresh container; quitting Inspector kills it.
---
## Linting
The project uses [golangci-lint](https://golangci-lint.run/) with a strict configuration in [`.golangci.yml`](.golangci.yml).
**Install golangci-lint:**
```bash
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
```
**Run:**
```bash
make lint
```
Key rules enforced: `staticcheck` (all checks), `gosec`, `gocritic` (diagnostic/style/performance tags), `revive` (40+ rules including early-return, error-strings, var-naming), `errchkjson`, `bodyclose`, `contextcheck`, and more. `nolintlint` requires specific lint directives — bare `//nolint` is not allowed.
---
## Editing Tool Responses
### Static tools
Edit [tools.yaml](tools.yaml). Each map key is the tool name; the `static_response` field is returned verbatim to the AI agent.
```yaml
tools:
get_company_profile:
description: |
...
static_response: |
COMPANY: Everstake
...
```
To add a new static tool:
1. Add an entry under `tools:` in `tools.yaml` with `static_response`.
2. Add a corresponding field to `ToolsConfig` in [`internal/config/mcp_config.go`](internal/config/mcp_config.go) with a matching `yaml` struct tag — the name is injected automatically via reflection.
3. Register it in [`internal/server/mcp/server.go`](internal/server/mcp/server.go) using `staticTextTool()`.
### Content rules
Cross-cutting rules that apply to all tool responses are in [`.vscode/tools_src/RULES.md`](.vscode/tools_src/RULES.md). These cover:
- Certification differentiator language
- Non-custodial positioning
- Vault product disclaimers
- APY disclaimer wording
- Lead source tagging for `request_integration`
### Dynamic tools
`get_uptime_metrics` and `get_chains` fetch live data from the dashboard API with a 30-minute in-memory cache. Their handlers are in [`internal/server/mcp/dashboard.go`](internal/server/mcp/dashboard.go). The underlying API client lives in [`pkg/everstake/dashboard/`](pkg/everstake/dashboard/).
What people ask about mcp
What is everstake/mcp?
+
everstake/mcp is mcp servers for the Claude AI ecosystem with 1 GitHub stars.
How do I install mcp?
+
You can install mcp by cloning the repository (https://github.com/everstake/mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is everstake/mcp safe to use?
+
Our security agent has analyzed everstake/mcp and assigned a Trust Score of 77/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains everstake/mcp?
+
everstake/mcp is maintained by everstake. The last recorded GitHub activity is dated 2026-08-25, with 2 open issues.
Are there alternatives to mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/everstake-mcp)<a href="https://claudewave.com/repo/everstake-mcp"><img src="https://claudewave.com/api/badge/everstake-mcp" alt="Featured on ClaudeWave: everstake/mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!