@adrata/starfield-mcp 1.0.0
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 +68 -0
- package/bin/starfield-mcp.js +40 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# @adrata/starfield-mcp
|
|
2
|
+
|
|
3
|
+
Give a coding agent your Starfield board.
|
|
4
|
+
|
|
5
|
+
Starfield is the work board in Adrata — boards, cards, tags, roll-ups, and the
|
|
6
|
+
governed writes that move them. This package lets Claude Code, Codex, Cursor,
|
|
7
|
+
Windsurf, or any other MCP client read that board and change it through exactly
|
|
8
|
+
the same endpoints the app uses, so workspace scoping, validation, and the
|
|
9
|
+
transactional move all hold whether a human dragged the card or an agent did.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
You don't. Point your agent's config at it and the client installs it on
|
|
14
|
+
launch.
|
|
15
|
+
|
|
16
|
+
**Claude Code**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
claude mcp add starfield --scope user -- npx -y @adrata/starfield-mcp
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Codex** — `codex mcp add` writes the global file, `~/.codex/config.toml`;
|
|
23
|
+
there is no project-scope flag.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
codex mcp add starfield -- npx -y @adrata/starfield-mcp
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For a project-scoped setup, edit the file yourself — `.mcp.json` for Claude
|
|
30
|
+
Code, `.codex/config.toml` for Codex. Codex ignores project config in a
|
|
31
|
+
directory you have not trusted, and says nothing when it does.
|
|
32
|
+
|
|
33
|
+
## Then, inside the agent
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
connect_workspace # signs you in through the browser; read-only by default
|
|
37
|
+
workspace_status # names the credential in play and the tier it grants
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`connect_workspace` runs a real OAuth 2.1 + PKCE flow against a loopback
|
|
41
|
+
callback and stores a refreshable, revocable token on your machine. Ask for
|
|
42
|
+
`connect_workspace` with `writeAccess: true` when the agent needs to move cards.
|
|
43
|
+
Nothing outside your machine can tell you whether the config landed —
|
|
44
|
+
`workspace_status` is the confirmation.
|
|
45
|
+
|
|
46
|
+
## What this actually is
|
|
47
|
+
|
|
48
|
+
The same server as [`@adrata/adrata-mcp`](https://www.npmjs.com/package/@adrata/adrata-mcp),
|
|
49
|
+
under the name people wiring an agent to a board are looking for. It is a
|
|
50
|
+
dependency, not a copy: this package's entire implementation is six lines that
|
|
51
|
+
default `ADRATA_MCP_SERVER_NAME` to `Starfield` — so your client's server list
|
|
52
|
+
says Starfield — and then import the real thing. Every tool, every tier, and
|
|
53
|
+
every governed-write contract is identical, and there is no second codebase to
|
|
54
|
+
drift.
|
|
55
|
+
|
|
56
|
+
Install either name; they are the same server.
|
|
57
|
+
|
|
58
|
+
## Environment
|
|
59
|
+
|
|
60
|
+
| Variable | Meaning |
|
|
61
|
+
|---|---|
|
|
62
|
+
| `ADRATA_API_URL` | API base URL (default `https://api.adrata.com`) |
|
|
63
|
+
| `ADRATA_API_KEY` | Pro-tier API key |
|
|
64
|
+
| `ADRATA_OAUTH_TOKEN` | Enterprise OAuth token (or use `connect_workspace`) |
|
|
65
|
+
| `ADRATA_MCP_SERVER_NAME` | Display name in `serverInfo` (default `Starfield` here) |
|
|
66
|
+
|
|
67
|
+
Full documentation, including the tier model and the complete tool list, lives
|
|
68
|
+
in the [`@adrata/adrata-mcp` README](https://www.npmjs.com/package/@adrata/adrata-mcp).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @adrata/starfield-mcp — Starfield under its own name.
|
|
5
|
+
*
|
|
6
|
+
* This is not a second MCP server. It is the same server, `@adrata/adrata-mcp`,
|
|
7
|
+
* reached by the name the person installing it actually has in mind.
|
|
8
|
+
*
|
|
9
|
+
* The reasoning, since a wrapper this thin invites deletion:
|
|
10
|
+
*
|
|
11
|
+
* A developer wiring a coding agent to their build board is thinking about
|
|
12
|
+
* Starfield. They may never encounter the company name, and shouldn't have to
|
|
13
|
+
* type it to install a board client. The precedent is unanimous — `@angular/core`
|
|
14
|
+
* is Google's, `next` is Vercel's, `react` is Meta's; when a product is what
|
|
15
|
+
* people know, the product name wins. The `@adrata` scope stays because this
|
|
16
|
+
* server holds workspace credentials and reaches both the CRM and the board,
|
|
17
|
+
* and a scope is a provenance signal an unscoped name has none of.
|
|
18
|
+
*
|
|
19
|
+
* What it must NOT be is a fork. Two copies of a 116kB server that drift is a
|
|
20
|
+
* far worse outcome than an odd-looking six-line file, so `@adrata/adrata-mcp`
|
|
21
|
+
* is an ordinary runtime dependency and this file adds exactly one thing: the
|
|
22
|
+
* display name.
|
|
23
|
+
*
|
|
24
|
+
* It imports rather than spawns. A child process would double the startup, add
|
|
25
|
+
* a second thing to keep alive, and put a signal- and exit-code-forwarding
|
|
26
|
+
* problem between a client and its stdio transport — all to accomplish what
|
|
27
|
+
* setting one variable before an import does for free. The server reads its
|
|
28
|
+
* configuration from `process.env` when it is evaluated, so assigning first and
|
|
29
|
+
* importing second is sufficient, and dynamic import is what makes the order
|
|
30
|
+
* real (a static `import` is hoisted and would run before this line).
|
|
31
|
+
*
|
|
32
|
+
* The default is a default, not an override: an explicit ADRATA_MCP_SERVER_NAME
|
|
33
|
+
* wins, so anyone running this under a white-labelled name still gets it.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
if (!process.env.ADRATA_MCP_SERVER_NAME?.trim()) {
|
|
37
|
+
process.env.ADRATA_MCP_SERVER_NAME = 'Starfield';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
await import('@adrata/adrata-mcp');
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adrata/starfield-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Starfield MCP server — give Claude Code, Codex, Cursor, and other coding agents your Starfield board. Read boards and cards, create and move work, and run governed writes from the terminal.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./bin/starfield-mcp.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"starfield-mcp": "./bin/starfield-mcp.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "node ./bin/starfield-mcp.js"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"mcp",
|
|
15
|
+
"starfield",
|
|
16
|
+
"adrata",
|
|
17
|
+
"model-context-protocol",
|
|
18
|
+
"claude-code",
|
|
19
|
+
"codex",
|
|
20
|
+
"cursor",
|
|
21
|
+
"windsurf",
|
|
22
|
+
"kanban",
|
|
23
|
+
"board",
|
|
24
|
+
"issue-tracker",
|
|
25
|
+
"agents"
|
|
26
|
+
],
|
|
27
|
+
"license": "UNLICENSED",
|
|
28
|
+
"private": false,
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/adrata/adrata",
|
|
35
|
+
"directory": "code/starfield-mcp"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://adrata.com",
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"bin/",
|
|
43
|
+
"README.md"
|
|
44
|
+
],
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@adrata/adrata-mcp": "^1.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|