@nesso-how/mcp 0.1.0-alpha.21 → 0.1.0-alpha.22
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
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# @nesso-how/mcp
|
|
2
|
+
|
|
3
|
+
[MCP](https://modelcontextprotocol.io/) server for [Nesso](https://nesso.how) — relation types and docs for LLM clients.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @nesso-how/mcp
|
|
9
|
+
# or run without install:
|
|
10
|
+
npx -y @nesso-how/mcp
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
Add to your MCP client (Cursor, Claude Desktop, etc.):
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"command": "npx",
|
|
20
|
+
"args": ["-y", "@nesso-how/mcp"]
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Tools: `get_relation_types`, `get_nesso_docs`.
|
|
25
|
+
|
|
26
|
+
Full guide: [MCP integration](https://nesso.how/docs/guides/mcp-integration/).
|
|
27
|
+
|
|
28
|
+
## License
|
|
29
|
+
|
|
30
|
+
MIT
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"slug": "guides/mcp-integration",
|
|
23
23
|
"title": "MCP",
|
|
24
24
|
"description": "Connect Nesso to Claude, Cursor, or any MCP-compatible AI client.",
|
|
25
|
-
"markdown": "The `@nesso-how/mcp` package is a [Model Context Protocol](https://modelcontextprotocol.io/) server that gives AI clients access to Nesso documentation and the full relation-type vocabulary. Once connected, models can answer questions about how Nesso works and use the correct relation names when you build graphs yourself in the app or in JSON.\n\n## Setup\n\n### Claude Desktop\n\nOpen `claude_desktop_config.json`. On macOS it lives at `~/Library/Application Support/Claude/claude_desktop_config.json`; on Windows at `%APPDATA%\\Claude\\claude_desktop_config.json`.\n\nAdd a `nesso` entry under `mcpServers`:\n\n```json\n{\n \"mcpServers\": {\n \"nesso\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@nesso-how/mcp\"]\n }\n }\n}\n```\n\nSave the file and restart Claude Desktop. The Nesso tools will be available to the model automatically.\n\n### Cursor\n\nOpen **Settings -> MCP** and add a new server with command `npx` and args `[\"-y\", \"@nesso-how/mcp\"]`.\n\n### Other MCP clients\n\nAny client that speaks the stdio MCP transport works. Run `npx -y @nesso-how/mcp` as the server command. No other configuration is required.\n\n## What it can do\n\nOnce connected, you can ask your AI client things like:\n\n- \"What relation types does Nesso support?\" (uses `get_relation_types`)\n- \"Show me the Nesso getting started guide\" (uses `get_nesso_docs`)\n\nYou can build graphs in [app.nesso.how](https://app.nesso.how) yourself, or paste graph JSON from the model via **Graph menu → Import JSON** when it follows the shape below.\n\n## Tools reference\n\n### `get_nesso_docs`\n\nFetches documentation pages from this site. Call it without a `slug` to get a table of contents, or with a slug (e.g. `\"guides/getting-started\"`) to get the full page content.\n\n### `get_relation_types`\n\nReturns the complete list of relation types with their category, line style, and
|
|
25
|
+
"markdown": "The `@nesso-how/mcp` package is a [Model Context Protocol](https://modelcontextprotocol.io/) server that gives AI clients access to Nesso documentation and the full relation-type vocabulary. Once connected, models can answer questions about how Nesso works and use the correct relation names when you build graphs yourself in the app or in JSON.\n\n## Setup\n\n### Claude Desktop\n\nOpen `claude_desktop_config.json`. On macOS it lives at `~/Library/Application Support/Claude/claude_desktop_config.json`; on Windows at `%APPDATA%\\Claude\\claude_desktop_config.json`.\n\nAdd a `nesso` entry under `mcpServers`:\n\n```json\n{\n \"mcpServers\": {\n \"nesso\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@nesso-how/mcp\"]\n }\n }\n}\n```\n\nSave the file and restart Claude Desktop. The Nesso tools will be available to the model automatically.\n\n### Cursor\n\nOpen **Settings -> MCP** and add a new server with command `npx` and args `[\"-y\", \"@nesso-how/mcp\"]`.\n\n### Other MCP clients\n\nAny client that speaks the stdio MCP transport works. Run `npx -y @nesso-how/mcp` as the server command. No other configuration is required.\n\n## What it can do\n\nOnce connected, you can ask your AI client things like:\n\n- \"What relation types does Nesso support?\" (uses `get_relation_types`)\n- \"Show me the Nesso getting started guide\" (uses `get_nesso_docs`)\n\nYou can build graphs in [app.nesso.how](https://app.nesso.how) yourself, or paste graph JSON from the model via **Graph menu → Import JSON** when it follows the shape below.\n\n## Tools reference\n\n### `get_nesso_docs`\n\nFetches documentation pages from this site. Call it without a `slug` to get a table of contents, or with a slug (e.g. `\"guides/getting-started\"`) to get the full page content.\n\n### `get_relation_types`\n\nReturns the complete list of relation types with their category, line style, symmetry, and semantic coefficients (transitive, inverse, strength, polarity, cardinality). Use this whenever you need valid type names for graph JSON or explanations for the learner.\n\n### Graph JSON (Import JSON)\n\nPaste this JSON shape into **Graph menu → Import JSON** in the web or desktop app (or construct it elsewhere and import the file). **Import** keeps structure (nodes, edges, display, elaboration) and resets FSRS / review fields to fresh defaults — personal scheduling from another user is not applied. **Export JSON** from the graph menu is share-safe the same way (no review history). Desktop workspace autosave is separate and retains your full progress.\n\n```json\n{\n \"name\": \"Graph title\",\n \"nodes\": [\n {\n \"id\": \"n1\",\n \"type\": \"concept\",\n \"position\": { \"x\": 0, \"y\": 0 },\n \"data\": {\n \"text\": \"Concept label\",\n \"stability\": 0,\n \"difficulty\": 0,\n \"reps\": 0,\n \"lapses\": 0,\n \"fsrsState\": 0,\n \"due\": 0,\n \"lastReview\": 0,\n \"lastRating\": 0\n }\n }\n ],\n \"edges\": [\n {\n \"id\": \"e1\",\n \"type\": \"nesso\",\n \"source\": \"n1\",\n \"target\": \"n2\",\n \"sourceHandle\": \"out\",\n \"targetHandle\": \"in\",\n \"data\": { \"type\": \"causes\" }\n }\n ]\n}\n```\n\nCall `get_relation_types` before inventing **`data.type`** values so they match Nesso."
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"slug": "guides/review-mode",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
{
|
|
40
40
|
"slug": "reference/relation-types",
|
|
41
41
|
"title": "Relation types",
|
|
42
|
-
"description": "The
|
|
43
|
-
"markdown": "Edges in Nesso carry a **semantic type**: a named relation that describes how two concepts are connected. There are
|
|
42
|
+
"description": "The 52 semantic relation types across 8 categories in Nesso.",
|
|
43
|
+
"markdown": "Edges in Nesso carry a **semantic type**: a named relation that describes how two concepts are connected. There are 52 types grouped into 8 categories. Each category has a distinct colour; each type has a line style, a glyph, and a set of semantic coefficients used by graph-analysis algorithms.\n\nAsymmetric relations come in **inverse pairs** (e.g. `subtype-of` / `has-subtype`) so traversal in either direction is first-class. Symmetric relations (`contrasts-with`, `opposite-of`, `similar-to`, `analogous-to`, `overlaps-with`, `contradicts`) are self-inverse.\n\n## Coefficients\n\nEach relation type declares:\n\n- **`symmetric`** — `true` when the edge carries the same meaning in both directions (no arrowhead).\n- **`transitive`** — `Y` (strict), `N` (none), or `weak` (transitivity with decay; algorithms may discount per step).\n- **`inverse`** — the canonical inverse type in the set. Self for symmetric relations.\n- **`strength`** — per-type semantic weight in `0..1`. Encodes how \"tight\" the relation is, not per-edge confidence.\n- **`polarity`** — `+1` positive effect, `-1` antagonistic, `0` neutral/structural. From signed-network theory.\n- **`cardinality`** — expected mapping pattern: `1-1`, `1-N`, `N-1`, or `N-N` (no constraint).\n\n## Taxonomic\n\n_What kind of thing is it?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| -------------- | ------------ | -------------- | --- | ---- | --- | ---- |\n| `subtype-of` | subtype of | `has-subtype` | Y | 0.90 | 0 | N-1 |\n| `has-subtype` | has subtype | `subtype-of` | Y | 0.90 | 0 | 1-N |\n| `instance-of` | instance of | `has-instance` | N | 0.95 | 0 | N-1 |\n| `has-instance` | has instance | `instance-of` | N | 0.95 | 0 | 1-N |\n\n## Structural\n\n_What is it made of or composed from?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| ---------- | -------- | ---------- | ---- | ---- | --- | ---- |\n| `part-of` | part of | `contains` | Y | 0.85 | 0 | N-1 |\n| `contains` | contains | `part-of` | Y | 0.85 | 0 | 1-N |\n| `made-of` | made of | `composes` | weak | 0.75 | 0 | N-N |\n| `composes` | composes | `made-of` | weak | 0.75 | 0 | N-N |\n\n## Causal\n\n_What does it do or prevent?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| -------------- | ------------ | -------------- | ---- | ---- | --- | ---- |\n| `causes` | causes | `caused-by` | N | 0.85 | +1 | N-N |\n| `caused-by` | caused by | `causes` | N | 0.85 | +1 | N-N |\n| `produces` | produces | `produced-by` | N | 0.70 | +1 | N-N |\n| `produced-by` | produced by | `produces` | N | 0.70 | +1 | N-N |\n| `enables` | enables | `enabled-by` | weak | 0.60 | +1 | N-N |\n| `enabled-by` | enabled by | `enables` | weak | 0.60 | +1 | N-N |\n| `prevents` | prevents | `prevented-by` | N | 0.85 | −1 | N-N |\n| `prevented-by` | prevented by | `prevents` | N | 0.85 | −1 | N-N |\n| `triggers` | triggers | `triggered-by` | N | 0.70 | +1 | N-N |\n| `triggered-by` | triggered by | `triggers` | N | 0.70 | +1 | N-N |\n| `inhibits` | inhibits | `inhibited-by` | N | 0.55 | −1 | N-N |\n| `inhibited-by` | inhibited by | `inhibits` | N | 0.55 | −1 | N-N |\n| `disables` | disables | `disabled-by` | weak | 0.60 | −1 | N-N |\n| `disabled-by` | disabled by | `disables` | weak | 0.60 | −1 | N-N |\n| `consumes` | consumes | `consumed-by` | N | 0.65 | −1 | N-N |\n| `consumed-by` | consumed by | `consumes` | N | 0.65 | −1 | N-N |\n| `delays` | delays | `delayed-by` | weak | 0.55 | −1 | N-N |\n| `delayed-by` | delayed by | `delays` | weak | 0.55 | −1 | N-N |\n\n`prevents` (total blockage), `inhibits` (partial reduction), and `disables` (switches off a capacity or function) are three distinct negative types — intensity and mechanism are semantic properties of the type, not a per-edge value. `disables` is the counterpart to `enables`; use `prevents` when an outcome is fully blocked and `inhibits` when it is only reduced.\n\nThe category also includes `consumes` (resource destruction, distinct from dependency's `uses`) and `delays` (slows or postpones an effect; polarity −1 because delay hinders the outcome).\n\n## Dependency\n\n_What does it need or serve?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| ------------- | ----------- | ------------- | ---- | ---- | --- | ---- |\n| `requires` | requires | `required-by` | Y | 0.85 | 0 | N-N |\n| `required-by` | required by | `requires` | Y | 0.85 | 0 | N-N |\n| `uses` | uses | `used-by` | weak | 0.50 | 0 | N-N |\n| `used-by` | used by | `uses` | weak | 0.50 | 0 | N-N |\n| `used-for` | used for | `purpose-of` | N | 0.55 | +1 | N-N |\n| `purpose-of` | purpose of | `used-for` | N | 0.55 | +1 | N-N |\n\n## Temporal\n\n_When or where does it happen?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| ---------------- | -------------- | ---------------- | --- | ---- | --- | ---- |\n| `precedes` | precedes | `follows` | Y | 0.50 | 0 | N-N |\n| `follows` | follows | `precedes` | Y | 0.50 | 0 | N-N |\n| `occurs-in` | occurs in | `has-occurrence` | Y | 0.40 | 0 | N-1 |\n| `has-occurrence` | has occurrence | `occurs-in` | Y | 0.40 | 0 | 1-N |\n| `during` | during | `spans` | Y | 0.55 | 0 | N-1 |\n| `spans` | spans | `during` | Y | 0.55 | 0 | 1-N |\n| `overlaps-with` | overlaps with | self (symmetric) | N | 0.45 | 0 | N-N |\n| `derives-from` | derives from | `gives-rise-to` | Y | 0.70 | 0 | N-1 |\n| `gives-rise-to` | gives rise to | `derives-from` | Y | 0.70 | 0 | 1-N |\n\n`during` / `spans` model Allen's interval-in-interval containment (peer intervals). Distinct from `occurs-in` which localizes a quasi-point event in a period (different scale).\n\n`derives-from` / `gives-rise-to` capture genealogical descent — temporal lineage with transformative continuity (languages, species, ideas), distinct from `caused-by` (direct influence without continuity) and from taxonomic `subtype-of` (class membership at a snapshot in time, not historical descent).\n\n## Opposition\n\n_What does it contrast with?_ Symmetric.\n\n| Type | Label | T | S | P | Card |\n| ---------------- | -------------- | --- | ---- | --- | ---- |\n| `contrasts-with` | contrasts with | N | 0.50 | −1 | N-N |\n| `opposite-of` | opposite of | N | 0.80 | −1 | 1-1 |\n\n## Similarity\n\n_What is it like?_ Symmetric.\n\n| Type | Label | T | S | P | Card |\n| -------------- | ------------ | ---- | ---- | --- | ---- |\n| `similar-to` | similar to | weak | 0.40 | +1 | N-N |\n| `analogous-to` | analogous to | N | 0.30 | +1 | N-N |\n\n## Epistemic\n\n_How do we know?_\n\n| Type | Label | Inverse | T | S | P | Card |\n| -------------- | ------------ | ---------------- | ---- | ---- | --- | ---- |\n| `supports` | supports | `supported-by` | weak | 0.70 | +1 | N-N |\n| `supported-by` | supported by | `supports` | weak | 0.70 | +1 | N-N |\n| `contradicts` | contradicts | self (symmetric) | N | 0.75 | −1 | N-N |\n| `explains` | explains | `explained-by` | weak | 0.80 | 0 | N-N |\n| `explained-by` | explained by | `explains` | weak | 0.80 | 0 | N-N |\n| `defines` | defines | `defined-by` | N | 0.90 | 0 | 1-1 |\n| `defined-by` | defined by | `defines` | N | 0.90 | 0 | 1-1 |\n\n`defines` goes from the defining expression (definiens) to the term being defined (definiendum) — e.g. \"F = ma defines force\". Cardinality 1-1 enforces one canonical definition per term.\n\n`contradicts` is symmetric (mutual logical incompatibility), unlike `supports` and `explains` which are asymmetric evidence/explanans → claim relations.\n\n---\n\n**Edge encoding** is controlled per-graph via Settings → Appearance → Edge encoding:\n\n- `full`: glyph and line style\n- `category`: colour only\n- `minimal`: plain line"
|
|
44
44
|
}
|
|
45
45
|
]
|
|
46
46
|
}
|
|
@@ -2,7 +2,9 @@ import * as z from 'zod/v4';
|
|
|
2
2
|
import { RELATION_TYPES, RELATION_CATEGORY_META } from '@nesso-how/relation-types';
|
|
3
3
|
export function registerGetRelationTypes(server) {
|
|
4
4
|
server.registerTool('get_relation_types', {
|
|
5
|
-
description: 'Returns all
|
|
5
|
+
description: 'Returns all 52 semantic relation types supported by Nesso, grouped by 8 categories. ' +
|
|
6
|
+
'Each type carries semantic coefficients (transitive, inverse, strength, polarity, cardinality) ' +
|
|
7
|
+
'in addition to its visual encoding. ' +
|
|
6
8
|
'Use this when you need valid relation type names for graph JSON or explanations for the user.',
|
|
7
9
|
inputSchema: z.object({}),
|
|
8
10
|
}, async () => {
|
|
@@ -16,6 +18,11 @@ export function registerGetRelationTypes(server) {
|
|
|
16
18
|
label: def.label,
|
|
17
19
|
line: def.line,
|
|
18
20
|
symmetric: def.symmetric,
|
|
21
|
+
transitive: def.transitive,
|
|
22
|
+
inverse: def.inverse,
|
|
23
|
+
strength: def.strength,
|
|
24
|
+
polarity: def.polarity,
|
|
25
|
+
cardinality: def.cardinality,
|
|
19
26
|
})),
|
|
20
27
|
}));
|
|
21
28
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nesso-how/mcp",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.22",
|
|
4
4
|
"description": "MCP server exposing Nesso knowledge graph tools to LLM clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@cfworker/json-schema": "^4.1.1",
|
|
19
|
-
"@modelcontextprotocol/server": "
|
|
20
|
-
"
|
|
21
|
-
"
|
|
19
|
+
"@modelcontextprotocol/server": "^2.0.0-alpha.2",
|
|
20
|
+
"zod": "^4.4.3",
|
|
21
|
+
"@nesso-how/relation-types": "0.1.0-alpha.22"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "^22.0.0",
|