@everstateai/mcp 1.2.1 → 1.3.1
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/README.md +141 -15
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +138 -132
- package/dist/index.js.map +1 -1
- package/dist/setup.d.ts +10 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +520 -0
- package/dist/setup.js.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +164 -149
- package/src/setup.ts +546 -0
package/README.md
CHANGED
|
@@ -1,16 +1,42 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @everstateai/mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Everstate MCP Server** - Persistent memory for AI coding assistants.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
+
### Option 1: Global Install (Recommended)
|
|
8
|
+
|
|
7
9
|
```bash
|
|
8
|
-
npm install -g @
|
|
10
|
+
npm install -g @everstateai/mcp
|
|
9
11
|
```
|
|
10
12
|
|
|
13
|
+
### Option 2: Use npx
|
|
14
|
+
|
|
15
|
+
No installation needed - just reference in your MCP config (see below).
|
|
16
|
+
|
|
11
17
|
## Configuration
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
### Claude Code / VS Code
|
|
20
|
+
|
|
21
|
+
Add to your MCP configuration:
|
|
22
|
+
|
|
23
|
+
**Global** (`~/.claude.json`):
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"everstate": {
|
|
29
|
+
"command": "npx",
|
|
30
|
+
"args": ["-y", "@everstateai/mcp"],
|
|
31
|
+
"env": {
|
|
32
|
+
"EVERSTATE_API_KEY": "ck_your_api_key_here"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Or if installed globally:**
|
|
14
40
|
|
|
15
41
|
```json
|
|
16
42
|
{
|
|
@@ -18,7 +44,43 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
|
|
18
44
|
"everstate": {
|
|
19
45
|
"command": "everstate-mcp",
|
|
20
46
|
"env": {
|
|
21
|
-
"EVERSTATE_API_KEY": "
|
|
47
|
+
"EVERSTATE_API_KEY": "ck_your_api_key_here"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Claude Desktop
|
|
55
|
+
|
|
56
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"everstate": {
|
|
62
|
+
"command": "npx",
|
|
63
|
+
"args": ["-y", "@everstateai/mcp"],
|
|
64
|
+
"env": {
|
|
65
|
+
"EVERSTATE_API_KEY": "ck_your_api_key_here"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Cursor
|
|
73
|
+
|
|
74
|
+
Add to `~/.cursor/mcp.json`:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"mcpServers": {
|
|
79
|
+
"everstate": {
|
|
80
|
+
"command": "npx",
|
|
81
|
+
"args": ["-y", "@everstateai/mcp"],
|
|
82
|
+
"env": {
|
|
83
|
+
"EVERSTATE_API_KEY": "ck_your_api_key_here"
|
|
22
84
|
}
|
|
23
85
|
}
|
|
24
86
|
}
|
|
@@ -29,23 +91,87 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
|
|
29
91
|
|
|
30
92
|
| Variable | Required | Description |
|
|
31
93
|
|----------|----------|-------------|
|
|
32
|
-
| `EVERSTATE_API_KEY` | Yes | Your Everstate API key |
|
|
33
|
-
| `EVERSTATE_PROJECT_ID` | No |
|
|
94
|
+
| `EVERSTATE_API_KEY` | Yes | Your Everstate API key (get one at [everstate.ai](https://www.everstate.ai)) |
|
|
95
|
+
| `EVERSTATE_PROJECT_ID` | No | Explicit project ID (auto-detected from `.everstate.json` if not set) |
|
|
34
96
|
| `EVERSTATE_API_URL` | No | API base URL (default: `https://www.everstate.ai`) |
|
|
35
97
|
| `EVERSTATE_MODE` | No | Tool mode: `core`, `meta`, or `extended` |
|
|
36
98
|
|
|
99
|
+
## Project Detection
|
|
100
|
+
|
|
101
|
+
The MCP proxy automatically detects your project in this order:
|
|
102
|
+
|
|
103
|
+
1. **`EVERSTATE_PROJECT_ID` env var** - Explicit configuration wins
|
|
104
|
+
2. **`.everstate.json` file** - Searches current directory and parents for a config file with `projectId`
|
|
105
|
+
3. **API fallback** - Fetches your projects and uses the first one
|
|
106
|
+
|
|
107
|
+
For multi-project setups, create a `.everstate.json` in each project:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"projectId": "proj_abc123...",
|
|
112
|
+
"projectName": "My Project"
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Quick Setup
|
|
117
|
+
|
|
118
|
+
The easiest way to set up Everstate:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npx @everstateai/mcp setup ck_YOUR_API_KEY
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
This automatically:
|
|
125
|
+
- Configures Claude Code with the MCP server
|
|
126
|
+
- Creates `.everstate.json` in your project
|
|
127
|
+
- Sets up session hooks
|
|
128
|
+
- Stores your API key securely
|
|
129
|
+
|
|
130
|
+
Options:
|
|
131
|
+
```bash
|
|
132
|
+
npx @everstateai/mcp setup --help # Show all options
|
|
133
|
+
npx @everstateai/mcp setup KEY --project-dir . # Specify project directory
|
|
134
|
+
npx @everstateai/mcp setup KEY --skip-hooks # Skip hook installation
|
|
135
|
+
```
|
|
136
|
+
|
|
37
137
|
## How It Works
|
|
38
138
|
|
|
39
|
-
This proxy is intentionally minimal
|
|
139
|
+
This proxy is intentionally minimal. It:
|
|
140
|
+
|
|
141
|
+
1. **On startup**: Auto-detects your project from `.everstate.json` or API
|
|
142
|
+
2. **On tool list**: Fetches tool definitions from the Everstate API
|
|
143
|
+
3. **On tool call**: Forwards the call to the Everstate API with your projectId
|
|
144
|
+
4. **Returns**: Responses to Claude/Cursor/etc.
|
|
145
|
+
|
|
146
|
+
All business logic, tool schemas, and data operations live server-side. Benefits:
|
|
147
|
+
|
|
148
|
+
- **Instant updates** - New features without npm updates
|
|
149
|
+
- **Feature gating** - Tools enabled by your API key tier
|
|
150
|
+
- **Security** - All authentication and metering server-side
|
|
151
|
+
|
|
152
|
+
## Troubleshooting
|
|
153
|
+
|
|
154
|
+
### "No such tool available"
|
|
155
|
+
|
|
156
|
+
1. Restart your AI tool (Claude Code, Cursor, etc.)
|
|
157
|
+
2. Check your API key is correct
|
|
158
|
+
3. Verify the MCP config JSON is valid
|
|
159
|
+
|
|
160
|
+
### Tools fail with "projectId is required"
|
|
161
|
+
|
|
162
|
+
1. Create `.everstate.json` in your project directory
|
|
163
|
+
2. Or set `EVERSTATE_PROJECT_ID` in your MCP config
|
|
164
|
+
3. Or call `sync({ projectId: "proj_..." })` at session start
|
|
165
|
+
|
|
166
|
+
### Multiple projects
|
|
167
|
+
|
|
168
|
+
Use `.everstate.json` in each project directory. The proxy auto-detects based on your working directory.
|
|
40
169
|
|
|
41
|
-
|
|
42
|
-
2. Forwards tool calls to the Everstate API
|
|
43
|
-
3. Returns responses to Claude
|
|
170
|
+
## Get an API Key
|
|
44
171
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- Full security and metering server-side
|
|
172
|
+
1. Go to [everstate.ai](https://www.everstate.ai)
|
|
173
|
+
2. Sign up (free)
|
|
174
|
+
3. Generate an API key from the dashboard
|
|
49
175
|
|
|
50
176
|
## License
|
|
51
177
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Everstate MCP
|
|
3
|
+
* Everstate MCP Package
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* This file is intentionally minimal (~50 lines of actual logic).
|
|
9
|
-
* Users see nothing proprietary - just HTTP forwarding.
|
|
5
|
+
* Two modes:
|
|
6
|
+
* 1. Setup: npx @everstateai/mcp setup YOUR_API_KEY
|
|
7
|
+
* 2. MCP Server: Runs as stdio MCP server (default)
|
|
10
8
|
*/
|
|
11
9
|
export {};
|
|
12
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
* Everstate MCP
|
|
4
|
+
* Everstate MCP Package
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* This file is intentionally minimal (~50 lines of actual logic).
|
|
10
|
-
* Users see nothing proprietary - just HTTP forwarding.
|
|
6
|
+
* Two modes:
|
|
7
|
+
* 1. Setup: npx @everstateai/mcp setup YOUR_API_KEY
|
|
8
|
+
* 2. MCP Server: Runs as stdio MCP server (default)
|
|
11
9
|
*/
|
|
12
10
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
11
|
if (k2 === undefined) k2 = k;
|
|
@@ -43,147 +41,155 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
43
41
|
};
|
|
44
42
|
})();
|
|
45
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
47
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
48
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
49
|
-
const API_BASE = process.env.EVERSTATE_API_URL || "https://www.everstate.ai";
|
|
50
|
-
const API_KEY = process.env.EVERSTATE_API_KEY;
|
|
51
|
-
const INITIAL_PROJECT_ID = process.env.EVERSTATE_PROJECT_ID;
|
|
52
|
-
// Session state - persists projectId across tool calls within this proxy instance
|
|
53
|
-
let sessionProjectId = INITIAL_PROJECT_ID;
|
|
54
|
-
if (!API_KEY) {
|
|
55
|
-
console.error("EVERSTATE_API_KEY environment variable is required");
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
44
|
const fs = __importStar(require("fs"));
|
|
59
45
|
const path = __importStar(require("path"));
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
46
|
+
// Check if this is a setup command
|
|
47
|
+
const args = process.argv.slice(2);
|
|
48
|
+
if (args[0] === "setup" || args[0] === "--help" || args[0] === "-h") {
|
|
49
|
+
// Dynamic import to avoid loading MCP deps for setup
|
|
50
|
+
import("./setup.js").then(({ runSetup }) => {
|
|
51
|
+
runSetup(args);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Run MCP server
|
|
56
|
+
runMcpServer();
|
|
57
|
+
}
|
|
58
|
+
async function runMcpServer() {
|
|
59
|
+
const { Server } = await import("@modelcontextprotocol/sdk/server/index.js");
|
|
60
|
+
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
61
|
+
const { CallToolRequestSchema, ListToolsRequestSchema, } = await import("@modelcontextprotocol/sdk/types.js");
|
|
62
|
+
const API_BASE = process.env.EVERSTATE_API_URL || "https://www.everstate.ai";
|
|
63
|
+
const API_KEY = process.env.EVERSTATE_API_KEY;
|
|
64
|
+
const INITIAL_PROJECT_ID = process.env.EVERSTATE_PROJECT_ID;
|
|
65
|
+
// Session state - persists projectId across tool calls within this proxy instance
|
|
66
|
+
let sessionProjectId = INITIAL_PROJECT_ID;
|
|
67
|
+
if (!API_KEY) {
|
|
68
|
+
console.error("EVERSTATE_API_KEY environment variable is required");
|
|
69
|
+
console.error("");
|
|
70
|
+
console.error("To set up Everstate, run:");
|
|
71
|
+
console.error(" npx @everstateai/mcp setup YOUR_API_KEY");
|
|
72
|
+
console.error("");
|
|
73
|
+
console.error("Get your API key at: https://www.everstate.ai");
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
// Try to detect project from .everstate.json in current directory or parents
|
|
77
|
+
function detectProjectFromConfig() {
|
|
78
|
+
let dir = process.cwd();
|
|
79
|
+
const root = path.parse(dir).root;
|
|
80
|
+
while (dir !== root) {
|
|
81
|
+
const configPath = path.join(dir, ".everstate.json");
|
|
82
|
+
if (fs.existsSync(configPath)) {
|
|
83
|
+
try {
|
|
84
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
85
|
+
if (config.projectId) {
|
|
86
|
+
console.error(`[Everstate] Found project config: ${configPath}`);
|
|
87
|
+
return config.projectId;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Invalid JSON, continue searching
|
|
72
92
|
}
|
|
73
93
|
}
|
|
74
|
-
|
|
75
|
-
// Invalid JSON, continue searching
|
|
76
|
-
}
|
|
94
|
+
dir = path.dirname(dir);
|
|
77
95
|
}
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
// Auto-detect default project: 1) env var, 2) .everstate.json, 3) API fallback
|
|
83
|
-
async function detectDefaultProject() {
|
|
84
|
-
if (sessionProjectId) {
|
|
85
|
-
console.error(`[Everstate] Using configured project: ${sessionProjectId}`);
|
|
86
|
-
return;
|
|
96
|
+
return null;
|
|
87
97
|
}
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
// Auto-detect default project: 1) env var, 2) .everstate.json, 3) API fallback
|
|
99
|
+
async function detectDefaultProject() {
|
|
100
|
+
if (sessionProjectId) {
|
|
101
|
+
console.error(`[Everstate] Using configured project: ${sessionProjectId}`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Try to detect from .everstate.json in project directory
|
|
105
|
+
const configProjectId = detectProjectFromConfig();
|
|
106
|
+
if (configProjectId) {
|
|
107
|
+
sessionProjectId = configProjectId;
|
|
108
|
+
console.error(`[Everstate] Using project from .everstate.json: ${sessionProjectId}`);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Fallback: fetch user's projects from API and use first one
|
|
112
|
+
try {
|
|
113
|
+
const res = await fetch(`${API_BASE}/api/projects`, {
|
|
114
|
+
headers: { Authorization: `Bearer ${API_KEY}` },
|
|
115
|
+
});
|
|
116
|
+
if (res.ok) {
|
|
117
|
+
const projects = (await res.json());
|
|
118
|
+
if (projects.length > 0) {
|
|
119
|
+
sessionProjectId = projects[0].id;
|
|
120
|
+
console.error(`[Everstate] Auto-detected default project: ${projects[0].name} (${sessionProjectId})`);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.error("[Everstate] Warning: No projects found. Use switch_project or sync to set one.");
|
|
124
|
+
}
|
|
108
125
|
}
|
|
109
126
|
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error("[Everstate] Could not auto-detect project:", error);
|
|
129
|
+
}
|
|
110
130
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
throw new Error(`Failed to fetch tools: ${res.status} ${res.statusText}`);
|
|
129
|
-
}
|
|
130
|
-
const data = (await res.json());
|
|
131
|
-
return { tools: data.tools };
|
|
132
|
-
});
|
|
133
|
-
// Forward tool calls to cloud
|
|
134
|
-
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
135
|
-
const { name, arguments: args } = request.params;
|
|
136
|
-
// Inject default projectId if not provided and we have one configured
|
|
137
|
-
// For meta-tool (everstate), projectId may be in params.projectId
|
|
138
|
-
const enrichedArgs = { ...args };
|
|
139
|
-
const params = enrichedArgs.params;
|
|
140
|
-
const hasProjectIdInParams = params && typeof params === 'object' && 'projectId' in params && params.projectId;
|
|
141
|
-
// Use session projectId (may have been set by switch_project or sync)
|
|
142
|
-
if (sessionProjectId && !enrichedArgs.projectId && !hasProjectIdInParams) {
|
|
143
|
-
enrichedArgs.projectId = sessionProjectId;
|
|
144
|
-
}
|
|
145
|
-
const res = await fetch(`${API_BASE}/mcp/execute`, {
|
|
146
|
-
method: "POST",
|
|
147
|
-
headers: {
|
|
148
|
-
Authorization: `Bearer ${API_KEY}`,
|
|
149
|
-
"Content-Type": "application/json",
|
|
150
|
-
},
|
|
151
|
-
body: JSON.stringify({ name, arguments: enrichedArgs }),
|
|
131
|
+
// Create MCP server
|
|
132
|
+
const server = new Server({ name: "everstate", version: "1.3.0" }, { capabilities: { tools: {} } });
|
|
133
|
+
// Fetch tool definitions from cloud
|
|
134
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
135
|
+
const res = await fetch(`${API_BASE}/mcp/tools`, {
|
|
136
|
+
method: "POST",
|
|
137
|
+
headers: {
|
|
138
|
+
Authorization: `Bearer ${API_KEY}`,
|
|
139
|
+
"Content-Type": "application/json",
|
|
140
|
+
},
|
|
141
|
+
body: JSON.stringify({ mode: process.env.EVERSTATE_MODE }),
|
|
142
|
+
});
|
|
143
|
+
if (!res.ok) {
|
|
144
|
+
throw new Error(`Failed to fetch tools: ${res.status} ${res.statusText}`);
|
|
145
|
+
}
|
|
146
|
+
const data = (await res.json());
|
|
147
|
+
return { tools: data.tools };
|
|
152
148
|
});
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
149
|
+
// Forward tool calls to cloud
|
|
150
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
151
|
+
const { name, arguments: args } = request.params;
|
|
152
|
+
// Inject default projectId if not provided and we have one configured
|
|
153
|
+
const enrichedArgs = { ...args };
|
|
154
|
+
const params = enrichedArgs.params;
|
|
155
|
+
const hasProjectIdInParams = params && typeof params === "object" && "projectId" in params && params.projectId;
|
|
156
|
+
// Use session projectId (may have been set by switch_project or sync)
|
|
157
|
+
if (sessionProjectId && !enrichedArgs.projectId && !hasProjectIdInParams) {
|
|
158
|
+
enrichedArgs.projectId = sessionProjectId;
|
|
159
|
+
}
|
|
160
|
+
const res = await fetch(`${API_BASE}/mcp/execute`, {
|
|
161
|
+
method: "POST",
|
|
162
|
+
headers: {
|
|
163
|
+
Authorization: `Bearer ${API_KEY}`,
|
|
164
|
+
"Content-Type": "application/json",
|
|
165
|
+
},
|
|
166
|
+
body: JSON.stringify({ name, arguments: enrichedArgs }),
|
|
167
|
+
});
|
|
168
|
+
if (!res.ok) {
|
|
169
|
+
return {
|
|
170
|
+
content: [{ type: "text", text: `API error: ${res.status} ${res.statusText}` }],
|
|
171
|
+
isError: true,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const result = (await res.json());
|
|
175
|
+
// Update session state based on tool results
|
|
176
|
+
if (name === "switch_project" || name === "everstate_switch_project") {
|
|
177
|
+
const data = result.data || result.project;
|
|
178
|
+
if (data?.id) {
|
|
179
|
+
sessionProjectId = data.id;
|
|
180
|
+
console.error(`[Everstate] Session project set to: ${sessionProjectId}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (name === "sync" && enrichedArgs.projectId) {
|
|
184
|
+
sessionProjectId = enrichedArgs.projectId;
|
|
167
185
|
console.error(`[Everstate] Session project set to: ${sessionProjectId}`);
|
|
168
186
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
// sync with explicit projectId sets the session project
|
|
172
|
-
sessionProjectId = enrichedArgs.projectId;
|
|
173
|
-
console.error(`[Everstate] Session project set to: ${sessionProjectId}`);
|
|
174
|
-
}
|
|
175
|
-
return result;
|
|
176
|
-
});
|
|
177
|
-
// Start server
|
|
178
|
-
async function main() {
|
|
187
|
+
return result;
|
|
188
|
+
});
|
|
179
189
|
// Auto-detect default project before starting
|
|
180
190
|
await detectDefaultProject();
|
|
181
|
-
const transport = new
|
|
191
|
+
const transport = new StdioServerTransport();
|
|
182
192
|
await server.connect(transport);
|
|
183
193
|
console.error("Everstate MCP Proxy connected to", API_BASE);
|
|
184
194
|
}
|
|
185
|
-
main().catch((error) => {
|
|
186
|
-
console.error("Fatal error:", error);
|
|
187
|
-
process.exit(1);
|
|
188
|
-
});
|
|
189
195
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Everstate Setup Command
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx @everstateai/mcp setup ck_YOUR_API_KEY
|
|
7
|
+
* npx @everstateai/mcp setup ck_YOUR_API_KEY --project-dir /path/to/project
|
|
8
|
+
*/
|
|
9
|
+
export declare function runSetup(argv: string[]): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAmdH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBAuE5C"}
|