@chartobserver/mcp-server 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +2 -4
- package/SECURITY.md +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +3 -3
- package/dist/instructions.js +3 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.2 — 2026-06-12
|
|
4
|
+
|
|
5
|
+
The self-serve credentials page is now live in production.
|
|
6
|
+
|
|
7
|
+
- README, SECURITY.md, server instructions, and config error hints now point
|
|
8
|
+
to the real credentials page: https://chart.observer/integrations/mcp
|
|
9
|
+
(Integrations → AI Agent (MCP)) — masked webhook ID with reveal, copy
|
|
10
|
+
buttons, and a pre-filled MCP config snippet.
|
|
11
|
+
- Removed the interim "ask Brian" fallback; the package is now fully
|
|
12
|
+
self-serve: sign up at https://chart.observer, copy credentials, connect.
|
|
13
|
+
|
|
3
14
|
## 0.2.1 — 2026-06-12
|
|
4
15
|
|
|
5
16
|
Agent-facing signup guidance. No behavior changes to tools or transport.
|
package/README.md
CHANGED
|
@@ -45,9 +45,7 @@ Restart Claude Desktop. The tools become available in any conversation.
|
|
|
45
45
|
|
|
46
46
|
### Where to find your credentials
|
|
47
47
|
|
|
48
|
-
Sign in at https://chart.observer and open **
|
|
49
|
-
|
|
50
|
-
(Until that settings page ships, ask Brian for your three values.)
|
|
48
|
+
Sign in at https://chart.observer and open **Integrations → AI Agent (MCP)** — or go directly to https://chart.observer/integrations/mcp. The page shows your webhook ID, UID, and username with copy buttons and a pre-filled config snippet you can paste straight into your MCP client.
|
|
51
49
|
|
|
52
50
|
## Environment variables
|
|
53
51
|
|
|
@@ -97,7 +95,7 @@ Sign in at https://chart.observer and open **Settings → API & Integrations**.
|
|
|
97
95
|
- **`place_trade` defaults to dry-run.** The AI agent must explicitly pass `dry_run: false` to execute. You should be asked for confirmation before that happens.
|
|
98
96
|
- **Live trades are validated.** Execution runs the same checks as the dry run (sufficient funds, position size, well-formed quantities) and refuses trades that would fail, without calling the API.
|
|
99
97
|
- **Secret redaction.** Error text returned to the agent is sanitized; the webhook credential is redacted as defense-in-depth so it cannot leak into transcripts.
|
|
100
|
-
- **Bearer-secret auth.** The webhook ID acts as a bearer token. If it leaks, anyone can act on your account. Don't paste it into screenshots, logs, or chat messages. If you suspect compromise, regenerate it from
|
|
98
|
+
- **Bearer-secret auth.** The webhook ID acts as a bearer token. If it leaks, anyone can act on your account. Don't paste it into screenshots, logs, or chat messages. If you suspect compromise, regenerate it from https://chart.observer/integrations/mcp.
|
|
101
99
|
- **No account creation.** Sign up at https://chart.observer in a browser. Web signup requires a CAPTCHA, which a headless MCP server can't solve.
|
|
102
100
|
|
|
103
101
|
## What's not in v1
|
package/SECURITY.md
CHANGED
|
@@ -37,7 +37,7 @@ standing and visible portfolio, not real funds). Treat it like a password:
|
|
|
37
37
|
- This server sanitizes its error output and redacts the credential from any
|
|
38
38
|
text returned to the AI agent, as defense-in-depth.
|
|
39
39
|
- If you suspect it leaked, regenerate it from your ChartObserver account
|
|
40
|
-
settings (
|
|
40
|
+
settings (https://chart.observer/integrations/mcp) — the old value stops working
|
|
41
41
|
immediately.
|
|
42
42
|
|
|
43
43
|
## Reporting a vulnerability
|
package/dist/config.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export interface Config {
|
|
|
8
8
|
}
|
|
9
9
|
export declare const DEFAULT_API_BASE = "https://g2uyqqluc4.execute-api.us-east-2.amazonaws.com/dev";
|
|
10
10
|
export declare const DEFAULT_TIMEOUT_MS = 15000;
|
|
11
|
-
export declare const PACKAGE_VERSION = "0.2.
|
|
11
|
+
export declare const PACKAGE_VERSION = "0.2.2";
|
|
12
12
|
export declare const CREDENTIALS_HINT: string;
|
|
13
13
|
export declare function loadConfig(env?: NodeJS.ProcessEnv): Config;
|
package/dist/config.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export const DEFAULT_API_BASE = "https://g2uyqqluc4.execute-api.us-east-2.amazonaws.com/dev";
|
|
3
3
|
export const DEFAULT_TIMEOUT_MS = 15_000;
|
|
4
|
-
export const PACKAGE_VERSION = "0.2.
|
|
4
|
+
export const PACKAGE_VERSION = "0.2.2";
|
|
5
5
|
export const CREDENTIALS_HINT = "These values come from your chart.observer account: create one in a " +
|
|
6
6
|
"browser at https://chart.observer (accounts cannot be created via this " +
|
|
7
|
-
"server), then copy your webhook ID, UID, and username from
|
|
8
|
-
"
|
|
7
|
+
"server), then copy your webhook ID, UID, and username from " +
|
|
8
|
+
"https://chart.observer/integrations/mcp (Integrations → AI Agent (MCP)).";
|
|
9
9
|
// Validation messages must never echo the webhook value — they can end up in
|
|
10
10
|
// MCP client logs.
|
|
11
11
|
const configSchema = z.object({
|
package/dist/instructions.js
CHANGED
|
@@ -11,8 +11,9 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
11
11
|
"and must be done by the user in a browser at https://chart.observer).",
|
|
12
12
|
"If the configured credentials are missing or invalid, tell the user to:",
|
|
13
13
|
"(1) create an account at https://chart.observer in their browser, then",
|
|
14
|
-
"(2) copy their webhook ID, UID, and username from
|
|
15
|
-
"
|
|
14
|
+
"(2) copy their webhook ID, UID, and username from",
|
|
15
|
+
"https://chart.observer/integrations/mcp into this server's environment",
|
|
16
|
+
"variables (see the package",
|
|
16
17
|
"README). All trading is simulated paper trading — no real funds move — but",
|
|
17
18
|
"trades do affect the user's public leaderboard standing, so always confirm",
|
|
18
19
|
"with the user before executing a trade (place_trade defaults to dry_run).",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chartobserver/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "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.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "ChartObserver Corp",
|