MCP server
The Pulse MCP server is a small stdio process that turns the JSON API into eight read-only tools. Your agent can then screen tokens, inspect a wallet or read the latest newsletter without you pasting data.
How it works#
pulse-mcp does not open the database. It calls the Pulse HTTP API, so a Pulse instance must be running and reachable. Start one with npx -y -p pulse-trenches pulse (see Getting started) and point the MCP server at it with PULSE_URL.
- Transport: stdio. The client launches the process.
- Server name and version:
pulse,0.1.0. - Read-only: every tool is annotated
readOnlyHint: trueandopenWorldHint: false. Nothing writes to the archive or calls out to the internet. - Output: each tool returns the API's JSON as text.
Tools#
| Tool | Inputs | What it returns |
|---|---|---|
pulse_overview | none | Market totals, status counts, sectors, launch counts, hot tokens and the lifecycle rules. Same as /api/overview. |
pulse_tokens | chain, status, sort (default volume), category, launchpad, tech (boolean), minMcap, minVolume, q, limit (default 25, max 200), offset | Filtered token list with total and rows. See /api/tokens. |
pulse_token | chain, address | One token with pools, snapshots, list appearances, events, trades and wallet positions. |
pulse_launches | chain, kind (launch or graduation), limit (default 100, max 500) | Recent launch and graduation events. |
pulse_wallets | kind (kol or smart) | Ranked labelled wallets with rolling scores. |
pulse_wallet | address | One wallet with its positions and recent trades. |
pulse_report | day (optional, YYYY-MM-DD) | With a day, that issue's structured data and rendered text. Without one, the list of stored issues. |
pulse_export | table, limit (default 500, max 5000) | Raw rows from one of nine archive tables. |
Enumerated inputs (chain, status, sort, table) are validated with zod before the request is made, so a model that guesses a wrong value gets a clear schema error instead of an empty result.
Configuration#
| Variable | Default | Purpose |
|---|---|---|
PULSE_URL | http://localhost:8787 | Base URL of the Pulse API. Point it at a remote instance if Pulse runs elsewhere. |
Client setup#
All three clients take the same server entry. The -p pulse-trenches form is needed because the package ships two commands.
{
"command": "npx",
"args": ["-y", "-p", "pulse-trenches", "pulse-mcp"]
}
Claude Desktop#
Open Settings, Developer, Edit Config, and add the server to claude_desktop_config.json. Restart Claude Desktop.
{
"mcpServers": {
"pulse": {
"command": "npx",
"args": ["-y", "-p", "pulse-trenches", "pulse-mcp"],
"env": { "PULSE_URL": "http://localhost:8787" }
}
}
}
Claude Code#
Add it from the command line, or commit a .mcp.json with the same mcpServers block as above.
claude mcp add pulse --env PULSE_URL=http://localhost:8787 -- npx -y -p pulse-trenches pulse-mcp
Cursor#
Put the block in ~/.cursor/mcp.json for all projects, or .cursor/mcp.json for one project.
{
"mcpServers": {
"pulse": {
"command": "npx",
"args": ["-y", "-p", "pulse-trenches", "pulse-mcp"],
"env": { "PULSE_URL": "http://localhost:8787" }
}
}
}
Any other MCP client#
Run the command npx -y -p pulse-trenches pulse-mcp over stdio with PULSE_URL in its environment. From a source checkout, node src/cli.ts mcp does the same.
Try it#
Once connected, ask in plain language:
- "Use Pulse to list running tech tokens on Solana with at least $250K market cap."
- "Show me the latest Pulse newsletter and summarize what changed since yesterday."
- "Which smart wallets bought this token early?" (give the mint address)
When Pulse is not running#
If the API is unreachable, every tool fails with a message that tells the agent what to do: Cannot reach Pulse at ... Start it with "npx pulse-trenches" or set PULSE_URL. Start Pulse, or correct PULSE_URL, and call the tool again.
Treat returned text as data. Token names, symbols, descriptions and links come from the chain and anyone can set them to anything, including text that reads like instructions. Pulse never acts on them, and neither should the agent. Do not let a token's description decide what your agent does next.