@andrewkimjoseph/celina 0.3.2 → 0.3.3

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.
Files changed (2) hide show
  1. package/README.md +65 -49
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/andrewkimjoseph/celina/main/assets/logo.png" alt="Celina logo — yellow C with profile silhouette on black" width="160" />
2
+ <img src="https://raw.githubusercontent.com/andrewkimjoseph/celina/main/assets/logo-yellow.png#gh-dark-mode-only" alt="Celina logo — yellow C with profile silhouette on black" width="160" />
3
+ <img src="https://raw.githubusercontent.com/andrewkimjoseph/celina/main/assets/logo-black.png#gh-light-mode-only" alt="Celina logo — black C with profile silhouette" width="160" />
3
4
  </p>
4
5
 
5
6
  <h1 align="center">Celina — Celo MCP Server</h1>
@@ -24,9 +25,9 @@ npm: [@andrewkimjoseph/celina](https://www.npmjs.com/package/@andrewkimjoseph/ce
24
25
 
25
26
  ## Quick start
26
27
 
27
- Celina is not meant to be run manually in a terminal for normal use. Your MCP client (Cursor, Claude Desktop, LM Studio, etc.) spawns it as a child process and talks to it over stdio. Install the package, then add it to your MCP config (see [Cursor / Claude Desktop config](#cursor--claude-desktop-config)).
28
+ Celina is not meant to be run manually in a terminal for normal use. Your MCP client (Cursor, Claude Desktop, LM Studio, etc.) spawns it as a child process and talks to it over stdio.
28
29
 
29
- **From npm:**
30
+ **Recommended:** install from npm, then add Celina to your MCP config (see [MCP setup](#mcp-setup)).
30
31
 
31
32
  ```bash
32
33
  npm i @andrewkimjoseph/celina
@@ -40,30 +41,39 @@ npm run build
40
41
  npm start
41
42
  ```
42
43
 
43
- ## Deploy to Render
44
+ ## MCP setup
44
45
 
45
- This project includes a [Render Blueprint](render.yaml) for one-click deployment as a public Streamable HTTP MCP server.
46
+ Pick your client, install the package, paste the config, restart. Celina shows up as MCP tools your LLM can call.
46
47
 
47
- ### 1. Generate an RSA key pair
48
+ ### Local stdio (recommended)
48
49
 
49
- ```bash
50
- openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
51
- openssl rsa -pubout -in private.pem -out public.pem
52
- ```
50
+ Install the package, then point your MCP client at the built entry. Works in any stdio client (Cursor, Claude Desktop, LM Studio, Continue, MCP Inspector). Requires Node.js ≥ 20.
53
51
 
54
- ### 2. Deploy
52
+ 1. Run `npm i @andrewkimjoseph/celina`
53
+ 2. Open your MCP config (e.g. `claude_desktop_config.json`, Cursor **Settings → MCP**) and merge the snippet below into `mcpServers`
54
+ 3. Replace the path with your absolute path to `node_modules/@andrewkimjoseph/celina/build/index.js`, then restart the client
55
55
 
56
- 1. Push this repo to GitHub
57
- 2. Render Dashboard → **New → Blueprint** → connect the repo
58
- 3. Set `WALLET_ENCRYPTION_PRIVATE_KEY` in the Render Environment tab (paste contents of `private.pem`)
59
- 4. (Optional) Add a custom domain in Render and set `ALLOWED_HOSTS` to that hostname (comma-separated if multiple)
60
- 5. Your MCP endpoint will be at your Render URL + `/mcp`
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "celina": {
60
+ "type": "stdio",
61
+ "command": "node",
62
+ "args": ["/absolute/path/to/node_modules/@andrewkimjoseph/celina/build/index.js"],
63
+ "env": {
64
+ "CELO_PRIVATE_KEY": "0x...",
65
+ "SELF_AGENT_PRIVATE_KEY": "0x..."
66
+ }
67
+ }
68
+ }
69
+ }
70
+ ```
61
71
 
62
- > **Note:** Free Render services spin down after ~15 minutes of inactivity. Cold starts can take 30–60 seconds and may cause MCP client timeouts. Use a Starter plan for always-on hosting.
72
+ Keep `CELO_PRIVATE_KEY` and `SELF_AGENT_PRIVATE_KEY` out of source control they stay on your machine. Omit both for read-only chain queries.
63
73
 
64
- ## Cursor / Claude Desktop config
74
+ ### Cursor remote (streamable HTTP)
65
75
 
66
- ### Cursorremote (recommended)
76
+ No local install paste and go. Write tools use the [hosted encryption flow](#write-tools-hosted-mode) (no plaintext keys in config).
67
77
 
68
78
  ```json
69
79
  {
@@ -101,43 +111,46 @@ Fully quit and relaunch Claude Desktop after editing the config (closing the win
101
111
 
102
112
  > **Pro / Max / Team / Enterprise:** you can skip `mcp-remote` and add `https://mcp.celina.andrewkimjoseph.com/mcp` under **Settings → Integrations** instead.
103
113
 
104
- ### Local stdio (npm)
114
+ ### Local stdio (from source)
105
115
 
106
- After `npm i @andrewkimjoseph/celina`, point your MCP client at the installed entry file (use an absolute path):
116
+ For development from a cloned repo, point at your local `build/index.js`:
107
117
 
108
118
  ```json
109
119
  {
110
120
  "mcpServers": {
111
121
  "celina": {
122
+ "type": "stdio",
112
123
  "command": "node",
113
- "args": ["/absolute/path/to/node_modules/@andrewkimjoseph/celina/build/index.js"]
124
+ "args": ["/absolute/path/to/celina/build/index.js"],
125
+ "env": {
126
+ "CELO_PRIVATE_KEY": "0x...",
127
+ "SELF_AGENT_PRIVATE_KEY": "0x..."
128
+ }
114
129
  }
115
130
  }
116
131
  }
117
132
  ```
118
133
 
119
- ### Local stdio (from source)
134
+ ## Deploy to Render
120
135
 
121
- ```json
122
- {
123
- "mcpServers": {
124
- "celina": {
125
- "command": "node",
126
- "args": ["/absolute/path/to/celina/build/index.js"]
127
- }
128
- }
129
- }
130
- ```
136
+ This project includes a [Render Blueprint](render.yaml) for one-click deployment as a public Streamable HTTP MCP server.
131
137
 
132
- For local write tools, add a funded mainnet wallet:
138
+ ### 1. Generate an RSA key pair
133
139
 
134
- ```json
135
- "env": {
136
- "CELO_PRIVATE_KEY": "0x..."
137
- }
140
+ ```bash
141
+ openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
142
+ openssl rsa -pubout -in private.pem -out public.pem
138
143
  ```
139
144
 
140
- Never commit private keys. Use env vars only.
145
+ ### 2. Deploy
146
+
147
+ 1. Push this repo to GitHub
148
+ 2. Render Dashboard → **New → Blueprint** → connect the repo
149
+ 3. Set `WALLET_ENCRYPTION_PRIVATE_KEY` in the Render Environment tab (paste contents of `private.pem`)
150
+ 4. (Optional) Add a custom domain in Render and set `ALLOWED_HOSTS` to that hostname (comma-separated if multiple)
151
+ 5. Your MCP endpoint will be at your Render URL + `/mcp`
152
+
153
+ > **Note:** Free Render services spin down after ~15 minutes of inactivity. Cold starts can take 30–60 seconds and may cause MCP client timeouts. Use a Starter plan for always-on hosting.
141
154
 
142
155
  ## Local LLM integration
143
156
 
@@ -147,10 +160,10 @@ Read-only tools (balances, blocks, GoodDollar status, etc.) work out of the box.
147
160
 
148
161
  ### LM Studio (0.3.17+)
149
162
 
150
- LM Studio can host MCP servers directly via `mcp.json` (same format as Cursor).
163
+ LM Studio can host MCP servers directly via `mcp.json`. After `npm i @andrewkimjoseph/celina`:
151
164
 
152
165
  1. Open LM Studio → **Program** → **Install** → **Edit mcp.json**
153
- 2. Add Celina under `mcpServers`
166
+ 2. Add Celina under `mcpServers` (same JSON as [Local stdio (recommended)](#local-stdio-recommended))
154
167
  3. In **Server Settings**, enable **Allow calling servers from mcp.json**
155
168
  4. Chat with a tool-capable model (e.g. Qwen 2.5, Llama 3.1+)
156
169
 
@@ -158,17 +171,19 @@ LM Studio can host MCP servers directly via `mcp.json` (same format as Cursor).
158
171
  {
159
172
  "mcpServers": {
160
173
  "celina": {
174
+ "type": "stdio",
161
175
  "command": "node",
162
176
  "args": ["/absolute/path/to/node_modules/@andrewkimjoseph/celina/build/index.js"],
163
177
  "env": {
164
- "CELO_PRIVATE_KEY": "0x..."
178
+ "CELO_PRIVATE_KEY": "0x...",
179
+ "SELF_AGENT_PRIVATE_KEY": "0x..."
165
180
  }
166
181
  }
167
182
  }
168
183
  }
169
184
  ```
170
185
 
171
- Omit `CELO_PRIVATE_KEY` if you only need read-only chain queries.
186
+ Omit both env vars for read-only chain queries.
172
187
 
173
188
  ### Open WebUI + Ollama
174
189
 
@@ -197,7 +212,9 @@ For write tools over HTTP, set `WALLET_ENCRYPTION_PRIVATE_KEY` in `.env` (see [D
197
212
 
198
213
  [Continue](https://docs.continue.dev/customize/deep-dives/mcp) works with local models (Ollama, LM Studio, etc.) in **agent mode**.
199
214
 
200
- Create `.continue/mcpServers/celina.yaml` in your workspace:
215
+ 1. Run `npm i @andrewkimjoseph/celina`
216
+ 2. Create `.continue/mcpServers/celina.yaml` in your workspace
217
+ 3. Switch Continue to agent mode and prompt
201
218
 
202
219
  ```yaml
203
220
  name: Celina
@@ -206,14 +223,13 @@ schema: v1
206
223
  mcpServers:
207
224
  - name: celina
208
225
  type: stdio
209
- command: node
226
+ command: npx
210
227
  args:
211
- - "/absolute/path/to/node_modules/@andrewkimjoseph/celina/build/index.js"
212
- env:
213
- CELO_PRIVATE_KEY: "0x..."
228
+ - "-y"
229
+ - "@andrewkimjoseph/celina"
214
230
  ```
215
231
 
216
- Alternatively, copy the [local stdio JSON](#local-stdio-npm) from the Cursor section into `.continue/mcpServers/mcp.json` — Continue picks up Claude/Cursor-style configs automatically.
232
+ Alternatively, copy the [local stdio JSON](#local-stdio-recommended) into `.continue/mcpServers/mcp.json` — Continue picks up Claude/Cursor-style configs automatically.
217
233
 
218
234
  ### Test without an LLM
219
235
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrewkimjoseph/celina",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Celina — MCP server for Celo mainnet. Balances, transfers, Self Agent ID, and chain reads for LLM agents.",
5
5
  "type": "module",
6
6
  "main": "build/index.js",