← Back to search

@chartobserver/mcp-server

GitHub Actions Scanned 3d ago

MCP server for the ChartObserver paper-trading platform. Lets an AI agent (Claude Desktop, etc.) read portfolio state, place trades, and check the leaderboard on behalf of the configured user.

npm
B
76.3 / 100

Versions

0.6.0latest
Jul 1, 2026
0.5.0
Jun 30, 2026
0.4.0
Jun 16, 2026
0.3.1
Jun 14, 2026
0.3.0
Jun 14, 2026
+ show 4 moreshow less
0.2.2
Jun 12, 2026
0.2.1
Jun 12, 2026
0.2.0
Jun 12, 2026
0.1.0
Jun 9, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 13

search_docs
annotations: none low

Search the ChartObserver documentation and return the most relevant passages, each with its source URL. Use this for questions about how the platform works — features, setup, integrations (TradingView, webhooks, the MCP server itself), subscriptions/limits/pricing, supported tokens, or troubleshooting. Answer from the returned excerpts and cite the url(s). Do NOT use it for the user's own live account data (balance, positions, prices, leaderboard) — those have dedicated tools.

place_trade
annotations: verified low

readOnlyHint false openWorldHint true idempotentHint false destructiveHint true
get_balance
annotations: none low

Fetch the configured user's current USD paper-trading balance.

get_open_positions
annotations: none low

List all currently open paper-trading positions (buy transactions that have not yet been closed by a sell).

get_closed_trades
annotations: none low

List closed paper trades (completed buy→sell roundtrips) for the configured user, most recent first.

get_recent_transactions
annotations: none low

List the configured user's recent transactions (open + closed, all types). Most recent first.

get_leaderboard
annotations: none low

Fetch the 7-day rolling ChartObserver leaderboard: top traders by average % profit per closed trade, plus the top individual closed trades. Public data.

get_my_ranking
annotations: none low

Find the configured user's position on the 7-day leaderboard, if they appear. Returns null rank if not on the board.

get_price
annotations: none low

Fetch the latest price for a supported crypto token. Accepts a bare symbol (SOL), a full pair (SOLUSD, SOL-USD, SOL/USD), or a name (Solana); the quote currency defaults to USD. Prices are delayed up to 15 minutes and are for paper trading only — never for real-money decisions. Use list_supported_tokens to see valid identifiers.

list_supported_tokens
annotations: none low

List every crypto token-pair ChartObserver supports, so you (or the user) can use a valid identifier before requesting a price or placing a trade. Returns slash pairs like BTC/USD with their exchange. Most tokens trade against USD; a few against USDT.

get_profile
annotations: none low

Fetch the currently configured user's public profile (description, social links, follower counts) along with their USD paper-trading balance. Read-only. Requires an existing chart.observer account — if credentials are missing or rejected, direct the user to sign up in a browser at https://chart.observer (accounts cannot be created via this server).

get_subscription
annotations: none low

Fetch the currently configured user's subscription tier (Basic, Swing Trader, Day Trader, or Influencer), their monthly usage vs. limits (trades, API calls, AI-assistant messages), the plan renewal date and whether it is set to cancel, and recent payments. Use this for ANY question about the user's own plan, tier, remaining quota, billing, or renewal — do NOT use search_docs for those (search_docs explains how tiers work in general; this returns the user's actual, resolved values). Read-only.

get_portfolio_summary
annotations: none low

One-call snapshot of the configured user's portfolio: USD balance, open positions grouped by token (with average cost basis), the 5 most recent closed trades, and the user's current leaderboard rank if any. Designed for periodic polling — agents can compare consecutive snapshots to detect changes.

Permissions 1

env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 37

low
Tool 'search_docs' has no annotations annotation_checker · 100%
info
Tool 'place_trade' annotations are consistent annotation_checker · 80%
low
Tool 'get_balance' has no annotations annotation_checker · 100%
low
Tool 'get_open_positions' has no annotations annotation_checker · 100%
low
Tool 'get_closed_trades' has no annotations annotation_checker · 100%
low
Tool 'get_recent_transactions' has no annotations annotation_checker · 100%
low
Tool 'get_leaderboard' has no annotations annotation_checker · 100%
low
Tool 'get_my_ranking' has no annotations annotation_checker · 100%
low
Tool 'get_price' has no annotations annotation_checker · 100%
low
Tool 'list_supported_tokens' has no annotations annotation_checker · 100%
low
Tool 'get_profile' has no annotations annotation_checker · 100%
low
Tool 'get_subscription' has no annotations annotation_checker · 100%
low
Tool 'get_portfolio_summary' has no annotations annotation_checker · 100%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.0.4 (GHSA-w48q-cv73-mx4w) dependency_analyzer · 95%
medium
Vulnerable dependency: vitest@1.6.0 (GHSA-5xrq-8626-4rwp) dependency_analyzer · 95%
medium
Vulnerable dependency: vitest@1.6.0 (GHSA-9crc-q9x8-hgqq) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
Tool: search_docs manifest_parser · 85%
info
Tool: place_trade manifest_parser · 85%
info
Tool: get_balance manifest_parser · 85%
info
Tool: get_open_positions manifest_parser · 85%
info
Tool: get_closed_trades manifest_parser · 85%
info
Tool: get_recent_transactions manifest_parser · 85%
info
Tool: get_leaderboard manifest_parser · 85%
info
Tool: get_my_ranking manifest_parser · 85%
info
Tool: get_price manifest_parser · 85%
info
Tool: list_supported_tokens manifest_parser · 85%
info
Tool: get_profile manifest_parser · 85%
info
Tool: get_subscription manifest_parser · 85%
info
Tool: get_portfolio_summary manifest_parser · 85%
info
Transport: stdio manifest_parser · 90%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 237 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%