@vemdev/mcp-server 0.1.1 → 0.1.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/README.md CHANGED
@@ -1,30 +1,151 @@
1
1
  # @vemdev/mcp-server
2
2
 
3
- Official [VEM](https://vem.dev) MCP Server for AI agent project memory.
3
+ Official [VEM](https://vem.dev) MCP Server gives AI agents (Claude, Cursor, Copilot, etc.) durable project memory via the [Model Context Protocol](https://modelcontextprotocol.io).
4
4
 
5
- Exposes project memory tools (tasks, decisions, context) to AI agents via the [Model Context Protocol](https://modelcontextprotocol.io).
5
+ Agents can read tasks, record decisions, search context, and sync snapshots to the cloud all through structured MCP tools.
6
6
 
7
- ## Usage
7
+ ---
8
8
 
9
- Run the server directly:
9
+ ## Quick start
10
10
 
11
11
  ```sh
12
- npx @vemdev/mcp-server@latest
12
+ npx @vemdev/mcp-server@latest --api-key <your-api-key>
13
13
  ```
14
14
 
15
- Or configure it in your MCP host (e.g. Claude Desktop, Cursor):
15
+ Get your API key from **[app.vem.dev](https://app.vem.dev) Settings → API Keys**.
16
+
17
+ ---
18
+
19
+ ## MCP host configuration
20
+
21
+ ### Claude Desktop
22
+
23
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
16
24
 
17
25
  ```json
18
26
  {
19
27
  "mcpServers": {
20
28
  "vem": {
21
29
  "command": "npx",
22
- "args": ["@vemdev/mcp-server@latest"]
30
+ "args": ["@vemdev/mcp-server@latest", "--api-key", "nk_your_key_here"]
23
31
  }
24
32
  }
25
33
  }
26
34
  ```
27
35
 
36
+ ### Cursor / VS Code
37
+
38
+ Add to your MCP settings:
39
+
40
+ ```json
41
+ {
42
+ "vem": {
43
+ "command": "npx",
44
+ "args": ["@vemdev/mcp-server@latest", "--api-key", "nk_your_key_here"]
45
+ }
46
+ }
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Authentication
52
+
53
+ There are three ways to provide your API key, in priority order:
54
+
55
+ ### 1. `--api-key` flag (recommended for MCP hosts)
56
+
57
+ Pass the key directly when starting the server:
58
+
59
+ ```sh
60
+ npx @vemdev/mcp-server@latest --api-key nk_your_key_here
61
+ ```
62
+
63
+ The key is saved to `~/.vem/config.json` on first run, so subsequent starts
64
+ without the flag will reuse it automatically.
65
+
66
+ ### 2. `VEM_API_KEY` environment variable
67
+
68
+ Useful in CI or when you prefer not to store the key on disk:
69
+
70
+ ```sh
71
+ VEM_API_KEY=nk_your_key_here npx @vemdev/mcp-server@latest
72
+ ```
73
+
74
+ Or in your MCP host config:
75
+
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "vem": {
80
+ "command": "npx",
81
+ "args": ["@vemdev/mcp-server@latest"],
82
+ "env": {
83
+ "VEM_API_KEY": "nk_your_key_here"
84
+ }
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### 3. `vem login` CLI (if you already use the CLI)
91
+
92
+ If you have the VEM CLI installed and have already logged in, the MCP server
93
+ picks up the saved key automatically — no extra config needed:
94
+
95
+ ```sh
96
+ npx @vemdev/cli@latest login nk_your_key_here
97
+ npx @vemdev/mcp-server@latest # key is read from ~/.vem/config.json
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Getting an API key
103
+
104
+ 1. Go to **[app.vem.dev](https://app.vem.dev)** and sign in
105
+ 2. Navigate to **Settings → API Keys**
106
+ 3. Click **Create key** and copy the `nk_...` token
107
+ 4. Pass it to the server via any of the methods above
108
+
109
+ ---
110
+
111
+ ## Available tools
112
+
113
+ | Tool | Description |
114
+ |---|---|
115
+ | `get_active_tasks` | List all active tasks in the project |
116
+ | `add_task` | Create a new task |
117
+ | `start_task` | Transition a task to in-progress |
118
+ | `complete_task` | Mark a task as done with evidence |
119
+ | `update_task` | Update task fields (title, status, priority) |
120
+ | `delete_task` | Delete a task |
121
+ | `get_task_details` | Get full details of a specific task |
122
+ | `get_task_context` | Get ephemeral context for a task |
123
+ | `update_task_context` | Update ephemeral context for a task |
124
+ | `get_context` | Read `CONTEXT.md` (project summary) |
125
+ | `update_current_state` | Update `CURRENT_STATE.md` |
126
+ | `list_decisions` | List recorded architectural decisions |
127
+ | `add_decision` | Record a new architectural decision |
128
+ | `search_memory` | Semantic search across project memory |
129
+ | `ask_question` | Ask a question about the project context |
130
+ | `get_changelog` | Read recent changelog entries |
131
+ | `apply_vem_update` | Apply a structured `vem_update` block |
132
+ | `sync_push` | Push a memory snapshot to the cloud |
133
+ | `sync_pull` | Pull the latest snapshot from the cloud |
134
+ | `get_subtasks` | List subtasks of a task |
135
+ | `list_agent_sessions` | List recorded agent sessions |
136
+ | `save_session_stats` | Save session stats for a task |
137
+
138
+ ---
139
+
140
+ ## Environment variables
141
+
142
+ | Variable | Default | Description |
143
+ |---|---|---|
144
+ | `VEM_API_KEY` | — | API key (alternative to `--api-key` flag) |
145
+ | `VEM_API_URL` | `https://api.vem.dev` | VEM API endpoint |
146
+ | `VEM_AGENT_NAME` | `mcp-agent` | Agent name shown in the dashboard |
147
+
148
+ ---
28
149
 
29
150
  ## License
30
151
 
package/dist/index.js CHANGED
@@ -3021,7 +3021,9 @@ ${context}`);
3021
3021
 
3022
3022
  ${currentState}`);
3023
3023
  return {
3024
- content: [{ type: "text", text: parts.join("\n\n---\n\n") || "(no context yet)" }]
3024
+ content: [
3025
+ { type: "text", text: parts.join("\n\n---\n\n") || "(no context yet)" }
3026
+ ]
3025
3027
  };
3026
3028
  }
3027
3029
  if (name === "list_decisions") {
@@ -3740,5 +3742,10 @@ ${JSON.stringify(stats, null, 2)}`
3740
3742
  throw new Error(`Tool not found: ${name}`);
3741
3743
  });
3742
3744
  var transport = new StdioServerTransport();
3745
+ var apiKeyFlagIndex = process.argv.indexOf("--api-key");
3746
+ if (apiKeyFlagIndex !== -1 && process.argv[apiKeyFlagIndex + 1]) {
3747
+ const flagKey = process.argv[apiKeyFlagIndex + 1];
3748
+ await configService.setApiKey(flagKey);
3749
+ }
3743
3750
  await server.connect(transport);
3744
3751
  //# sourceMappingURL=index.js.map