solana-forensics
Provides on-chain forensics tools for the Solana blockchain, including funding source tracing, wash trading detection, holder distribution analysis, MEV/bundle detection, and token creation investigation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@solana-forensicstrace the funding sources for wallet 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Solana Forensics MCP
On-chain investigation and analysis tools for Solana blockchain. Detects wash trading, traces funding sources, analyzes holder concentration, and identifies MEV/bundle activity.
Quick Start
1. Get a Helius API Key
Sign up at dashboard.helius.dev and create an API key.
2. Install
cd solana-forensics-mcp
uv venv && source .venv/bin/activate
uv pip install -e .3. Configure Your Client
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"solana-forensics": {
"command": "uv",
"args": ["--directory", "/path/to/solana-forensics-mcp", "run", "python", "-m", "src.server"],
"env": {
"HELIUS_API_KEY": "your_api_key_here"
}
}
}
}Restart Claude Desktop. The server will appear as solana-forensics with 4 tools.
Add to ~/.claude/settings.json:
{
"mcpServers": {
"solana-forensics": {
"command": "uv",
"args": ["--directory", "/path/to/solana-forensics-mcp", "run", "python", "-m", "src.server"],
"env": {
"HELIUS_API_KEY": "your_api_key_here"
}
}
}
}Or add to your project's .mcp.json for project-specific access:
{
"mcpServers": {
"solana-forensics": {
"command": "uv",
"args": ["--directory", "/path/to/solana-forensics-mcp", "run", "python", "-m", "src.server"],
"env": {
"HELIUS_API_KEY": "your_api_key_here"
}
}
}
}Restart Claude Code. Tools will be available as mcp__solana-forensics__*.
Related MCP server: Solana DeFi Analytics MCP Server
Forensics Operations
Operation | Description |
| BFS traversal of SOL transfer history to trace funding sources |
| Identify shared funding sources across multiple wallets |
| DFS cycle detection in token trade graphs |
| Gini coefficient, top-10 concentration, tier breakdown |
| Find transaction clusters in same slot (MEV/bundle detection) |
| Trace back to token mint creation transaction |
Supporting Operations
Category | Operations |
wallets |
|
trading |
|
tokens |
|
transactions |
|
balances |
|
accounts |
|
assets |
|
fees |
|
webhooks |
|
programs |
|
Usage
The server exposes 4 meta-tools:
solana_forensics_discover() # Browse all operations
solana_forensics_get_schema(op) # Get parameter details
solana_forensics_execute(op, {}) # Execute operation
solana_forensics_continue() # Continue paginated resultsExample: Trace Funding Sources
solana_forensics_execute("forensics.trace_sol_funding", {
"address": "TARGET_WALLET",
"max_hops": 3
})Example: Detect Wash Trading
solana_forensics_execute("forensics.detect_wash_trading", {
"mint": "TOKEN_MINT_ADDRESS",
"limit": 100
})Example: Find Common Funding Across Wallets
solana_forensics_execute("forensics.find_common_funding", {
"addresses": ["WALLET_1", "WALLET_2", "WALLET_3"],
"max_hops": 2
})Example: Analyze Token Holder Distribution
solana_forensics_execute("forensics.analyze_holder_distribution", {
"mint": "TOKEN_MINT_ADDRESS"
})Requirements
Python 3.10+
uv package manager
Helius API key (free tier works)
Data Provider
Powered by Helius API for Solana blockchain data access.
Available Tools
4 toolssolana_forensics_continueA
Continue retrieving paginated results from a previous operation.
Args: session_id: Session ID from the paginated response. If not provided, uses the last paginated operation.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the core behavior and session_id default, but doesn't disclose potential errors (e.g., no previous operation), read-only nature, or side effects. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and the parameter explanation following. No redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an output schema present, the description covers the essential context: what it does and how the session_id works. It could be slightly more explicit about prerequisites, but it's adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description fully explains the only parameter session_id: its source and the fallback to the last paginated operation. This adds complete meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Continue retrieving paginated results from a previous operation' with a clear verb (continue) and resource (paginated results), clearly distinguishing itself from sibling tools like discover, get_schema, and execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies when to use (after a paginated operation) and explains the default behavior when session_id is omitted. However, it doesn't explicitly mention alternatives or exclusions, though there are none relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana_forensics_discoverA
Browse all available Solana forensics operations organized by category.
Returns a tree of operations with descriptions. Use this to explore what operations are available before executing them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states that the tool returns a tree of operations with descriptions, which is useful. However, it does not explicitly confirm read-only behavior or mention any potential side effects, rate limits, or required permissions. For a simple discovery tool, this is acceptable but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the main purpose, and every sentence adds value: what it does, what it returns, and when to use it. There is no wasted wording or redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, discovery-oriented) and the presence of an output schema, the description is sufficiently complete. It explains the purpose, output, and usage context. It could mention specific categories or that it is safe to call anytime, but these are minor gaps. Overall it provides enough context for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. Per the rubric, a baseline of 4 is appropriate when there are no params to explain. The description adds nothing about parameters but does not need to. It provides high-level context about the output structure, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb 'browse' and resource 'Solana forensics operations organized by category'. It distinguishes itself from sibling tools like execute and get_schema by describing an exploratory/discovery function, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this to explore what operations are available before executing them', providing clear when-to-use guidance. It does not explicitly name alternative tools, but the instruction to use it before executing implies when not to use it (when ready to execute, use execute). This is clear but lacks a direct contrast to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana_forensics_executeA
Execute a Solana forensics operation with the specified parameters.
Use solana_forensics_get_schema first to understand required parameters.
Args: operation: Operation identifier (e.g., 'forensics.trace_sol_funding') params: Operation parameters as defined in the schema
Returns the operation result. Large results are automatically paginated - use solana_forensics_continue to get next pages.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that large results are automatically paginated and that continue is needed for subsequent pages, adding useful behavioral context beyond annotations. However, it does not mention whether operations are read-only, any side effects, authentication requirements, or error behavior, which is important for a generic executor tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise and well-structured: purpose, prerequisite, argument explanation, and pagination are each addressed in separate sentences without redundancy. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the generic nature of the tool, the description covers the essential workflow: get schema, execute, handle pagination. The presence of an output schema reduces the need to describe return values. It could improve by explicitly mentioning discover for listing operations, but the sibling tool names imply that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates partially by explaining the operation parameter as an identifier (with an example) and the params parameter as matching the schema. Yet it does not enumerate possible operations or provide details about the params structure beyond referencing the schema, leaving significant ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it executes a Solana forensics operation with specified parameters, providing a concrete example operation identifier. It distinguishes itself from siblings by being the executor, while discover, get_schema, and continue serve auxiliary roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use solana_forensics_get_schema first to understand required parameters, and mentions solana_forensics_continue for pagination. However, it does not explicitly mention when not to use this tool or mention solana_forensics_discover for finding available operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana_forensics_get_schemaA
Get detailed parameter schema for a specific operation.
Args: operation: Operation identifier in format 'category.action' (e.g., 'forensics.trace_sol_funding', 'forensics.detect_wash_trading')
Returns parameter requirements, types, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states that it returns parameter requirements, types, and descriptions, and uses 'Get' which implies read-only behavior. However, it doesn't explicitly declare side-effect-free status, error handling, or prerequisites beyond knowing the operation identifier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose, an Args section with a clear parameter explanation, and a return summary. Every sentence provides value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter introspection tool, the description is mostly complete. It covers the operation format and return value, and since an output schema exists, return details don't need to be over-explained. A minor gap is not mentioning that discover can list valid operations, but this is an acceptable omission given sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the 'operation' parameter, but the description compensates by giving the format 'category.action' with concrete examples. This adds significant meaning beyond the schema, though it could further mention where to discover valid operations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed parameter schema for a specific operation' with a specific verb and resource. It provides the operation format and examples, distinguishing it from sibling tools like execute and discover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for when you need the parameter schema of a specific operation, but it doesn't explicitly state when to use it versus alternatives or mention exclusions. No reference to sibling tools like discover for enumeration or execute for running operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
solana_forensics_continue - First observed
solana_forensics_discover - First observed
solana_forensics_execute - First observed
solana_forensics_get_schema
TDQS
Scored across 4 tools
Each tool has a distinct, non-overlapping purpose: discover lists operations, get_schema returns parameter details, execute runs an operation, and continue handles pagination. There is no ambiguity about which tool to use for a given step.
All tools follow a consistent 'solana_forensics_<verb>' pattern (discover, get_schema, execute, continue). The naming convention is uniform and predictable, making the API easy to navigate.
Four tools is well-scoped for a meta-interface. Each tool is necessary for the operation lifecycle (explore, inspect, execute, paginate), and there is no bloat or redundancy.
The tool set covers the full workflow: discovering available operations, fetching schemas, executing them, and continuing through paginated results. No obvious gaps exist for the stated purpose of a forensics operation interface.
Maintenance
Related MCP Connectors
Solana on-chain intelligence — token scans, wallet profiling, bundle detection, 19 MCP tools.
Full Solana DeFi coverage: launchpads, tokens, trades, and wallets, decoded at scale.
Blockchain intelligence for tracing funds, screening addresses, and investigating on-chain activity.
Solana onchain intelligence for AI agents: wallet risk, due-diligence, perps funding, smart money.
Related MCP Servers
- FlicenseCqualityDmaintenanceProvides comprehensive analytics for Solana wallets, enabling real-time portfolio insights, cross-protocol DeFi position monitoring, behavioral analytics, and AI-powered investment strategy recommendations across the Solana ecosystem.3-
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive analytics and insights for Solana wallets and their DeFi activities, including transaction tracking, DeFi position monitoring, risk profiling, and strategy recommendations.15 npm7MIT
- AlicenseNot gradedqualityCmaintenanceEnables blockchain forensics across multiple chains (Base, Ethereum, Arbitrum, Optimism, Polygon) with tools to trace transactions, cluster addresses, detect anomalies, and identify mixer usage.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Solana wallet forensics via MCP, including tracing funds, identifying entities, scoring risk, and comparing wallets using Helius APIs.MIT