@timetick/mcp 0.2.1 → 0.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 CHANGED
@@ -1,113 +1,78 @@
1
1
  # @timetick/mcp
2
2
 
3
- Model Context Protocol (MCP) server for [Timetick](https://timetick.io) — drive EV charger simulators, OCPP tests and real hardware from an AI client, in plain language.
3
+ Run [Timetick](https://timetick.io) from your AI client. Say "I want to test my CSMS" and the agent signs you in, sets up simulators, runs the test and explains the result. It works with OCPP 1.6 and 2.0.1, and can test a CSMS or a real charger.
4
4
 
5
- Built on the official [`@timetick/sdk`](https://www.npmjs.com/package/@timetick/sdk).
5
+ ## Install
6
6
 
7
- ## Quick start
7
+ Claude Code:
8
8
 
9
- Generate an API key in the Timetick portal under **Account (top-right corner) → API keys**, then register the server with your MCP client. For Claude Desktop, in `claude_desktop_config.json`:
9
+ ```
10
+ claude mcp add timetick -- npx -y @timetick/mcp@latest
11
+ ```
12
+
13
+ Codex:
14
+
15
+ ```
16
+ codex mcp add timetick -- npx -y @timetick/mcp@latest
17
+ ```
18
+
19
+ Gemini CLI, Claude Desktop, Cursor and other MCP clients:
10
20
 
11
21
  ```json
12
22
  {
13
23
  "mcpServers": {
14
24
  "timetick": {
15
25
  "command": "npx",
16
- "args": ["-y", "@timetick/mcp"],
17
- "env": { "TIMETICK_API_TOKEN": "your_api_key_here" }
26
+ "args": ["-y", "@timetick/mcp@latest"]
18
27
  }
19
28
  }
20
29
  }
21
30
  ```
22
31
 
23
- Restart the client and ask for something:
32
+ Keep `@latest` so you stay on the current version.
24
33
 
25
- - _"list my simulators"_
26
- - _"power on CP-001"_
27
- - _"create a full charge cycle test and run it on CP-001"_
34
+ ## Sign in
28
35
 
29
- Cursor, Claude Code and other MCP clients take the same command and environment variable.
36
+ Ask the agent to log in to Timetick. A page opens in your browser where you can sign in, create an account or paste an API key. Your password stays out of the AI conversation.
30
37
 
31
- ## Configuration
38
+ If you use Google or LinkedIn to sign in, create an API key in the portal under **API keys** and paste it on that page.
32
39
 
33
- | Env var | Required | Description |
34
- | -------------------- | -------- | ------------------------------------------------------------ |
35
- | `TIMETICK_API_TOKEN` | yes | Your Timetick API key, sent as `x-api-key` |
36
- | `TIMETICK_API_URL` | no | API endpoint (defaults to `https://app.timetick.io/graphql`) |
37
- | `TIMETICK_MCP_READONLY` | no | `1` or `true` — read-only mode, see below |
40
+ On a machine with no browser, such as over SSH, set `TIMETICK_API_TOKEN` to your API key in the client config.
38
41
 
39
- ## Read-only mode
42
+ To switch accounts, ask the agent to log in again. To use two accounts at once, add the server twice, each with its own `TIMETICK_API_TOKEN`.
40
43
 
41
- With `TIMETICK_MCP_READONLY=1` the server registers only tools annotated `readOnlyHint: true`; `power_on_simulator`, `power_off_simulator`, `run_simulator_action`, `create_test`, `run_test` and `stop_test_run` are left out.
44
+ ## Test your CSMS
42
45
 
43
- ## Projects and sim worlds
46
+ Simulators connect to your CSMS from Timetick's cloud, so it needs a public `ws://` or `wss://` address. Your CSMS sees the simulator's name as the charge point identity.
44
47
 
45
- Most tools work inside a project's sim world and resolve it for you.
48
+ Steps on the charger side, such as plugging in, run automatically. Steps named `Remote:` wait for your CSMS to send the command. If you set expected results, the step passes or fails on its own. Otherwise the agent asks you what happened.
46
49
 
47
- | Situation | What happens |
48
- | ------------------------ | ---------------------------------------------------------------- |
49
- | Your key has one project | It is selected automatically |
50
- | Your key has several | Call `use_project` once, by name or id; it holds for the session |
51
- | Any time | `get_context` reports the active project and sim world |
50
+ ## Test a real charger
52
51
 
53
- Pass `project` to a tool to target a different project for that call alone. The session's active project stays where it is.
52
+ Your charger connects to Timetick's CSMS. Someone at the charger does the physical steps, and `Remote:` steps run automatically.
54
53
 
55
- ## Tools
54
+ ## What you can do
56
55
 
57
- Projects, simulators and tests are addressed by name or by id, whichever you have.
56
+ - Create and manage simulators, hardware, models and OCPP configurations
57
+ - Write tests or start from a template
58
+ - Run tests, test plans and Stress Tests
59
+ - Read results and OCPP logs
60
+ - Manage projects, tags and API keys
58
61
 
59
- ### Context
62
+ Some things still need the [portal](https://app.timetick.io): billing, resetting a password, and security profiles (Basic Auth or certificates towards a CSMS).
60
63
 
61
- | Tool | Description |
62
- | ------------- | -------------------------------- |
63
- | `get_context` | The active project and sim world |
64
- | `use_project` | Switch the active project |
64
+ ## Projects and trial
65
65
 
66
- ### Inspect
66
+ Your first project gets the free trial, which starts when you create it. Any further project needs payment details, which you add in the portal.
67
67
 
68
- | Tool | Description |
69
- | ----------------- | ------------------------------------------------------- |
70
- | `list_projects` | Projects your API key can reach |
71
- | `list_simulators` | Virtual chargers, filtered by name or protocol |
72
- | `get_simulator` | One simulator: network status, power status, connectors |
73
- | `list_hardware` | Physical OCPP devices |
74
- | `list_actions` | The step library available for building tests |
68
+ A project with no active plan is read-only. If you started onboarding in the portal and didn't finish, ask the agent to start the trial.
75
69
 
76
- Lists come back 20 rows per page. Pass `page` and `pageSize` for the rest; every reply reports the total.
70
+ If you have several projects, tell the agent which one to use.
77
71
 
78
- ### Support (read-only)
79
-
80
- | Tool | Description |
81
- | ---------------------- | ----------------------------------------------------------------------------------- |
82
- | `get_simulator_config` | OCPP keys (credential values masked), behavior, model, connector types, last run |
83
- | `get_simulator_logs` | OCPP messages in a window: `from`/`to` (ISO) or `last` (`30m`, `6h`), `limit`, `action` |
84
- | `get_test_run_details` | A run's status and fail reason, one page of its simulators (`page`), and the steps of one `simulator` |
85
-
86
- The `simulator` argument of every tool also takes a portal link, e.g. `https://app.timetick.io/projects/1/simulators/42?tab=testPlays`. A link is resolved by the simulator id in it, never by name.
87
-
88
- ### Control simulators
89
-
90
- | Tool | Description |
91
- | ---------------------- | -------------------------------------------------------------------- |
92
- | `power_on_simulator` | Boot a simulator and connect it to the OCPP server |
93
- | `power_off_simulator` | Shut a simulator down |
94
- | `run_simulator_action` | Run one step — reset, plug in, plug out — with `key=value` arguments |
95
-
96
- ### Tests
97
-
98
- | Tool | Description |
99
- | ------------- | ----------------------------------------------- |
100
- | `list_tests` | Tests in the active sim world |
101
- | `get_test` | One test, with its device requirements |
102
- | `create_test` | Build a test from an ordered list of step names |
72
+ ## Read-only mode
103
73
 
104
- ### Run and monitor
74
+ Set `TIMETICK_MCP_READONLY=1` and the agent can read your data but not change it. You can still sign in and out.
105
75
 
106
- | Tool | Description |
107
- | ---------------- | --------------------------- |
108
- | `run_test` | Start a test on a simulator |
109
- | `get_test_run` | Status of a run |
110
- | `list_test_runs` | Recent runs |
111
- | `stop_test_run` | Shut a run down |
76
+ ## Help
112
77
 
113
- A simulator runs one test at a time. If it is busy, `run_test` says so and starts nothing — stop the run that holds it with `stop_test_run`, then ask again.
78
+ For questions, write to support@timetick.io.