|
| 1 | +--- |
| 2 | +slug: changelog-1-6-0 |
| 3 | +title: "Graph Memory 1.6.0" |
| 4 | +authors: [graphmemory] |
| 5 | +tags: [release, changelog, oauth, mcp] |
| 6 | +description: "Graph Memory 1.6.0 — OAuth 2.0 for Claude.ai connectors, cleaner MCP responses, array syntax for include patterns, and tool naming consistency." |
| 7 | +--- |
| 8 | + |
| 9 | +Graph Memory **1.6.0** ships OAuth 2.0 support for AI chat clients, cleaner MCP tool responses, and several developer-experience improvements. |
| 10 | + |
| 11 | +<!-- truncate --> |
| 12 | + |
| 13 | +## OAuth 2.0 for AI chat clients |
| 14 | + |
| 15 | +You can now connect Graph Memory to **Claude.ai** (and any OAuth-capable MCP client) without manually passing API keys. The server implements the OAuth 2.0 **client_credentials** flow — no login pages, no redirects. |
| 16 | + |
| 17 | +### How to connect Claude.ai |
| 18 | + |
| 19 | +1. Open **Claude.ai → Settings → Connectors → Add custom connector** |
| 20 | +2. Enter your server URL: `https://yourserver.com/mcp/your-project` |
| 21 | +3. Under **Advanced settings**, enter: |
| 22 | + - **OAuth Client ID** — your `userId` from `graph-memory.yaml` |
| 23 | + - **OAuth Client Secret** — your `apiKey` from `graph-memory.yaml` |
| 24 | + |
| 25 | +Claude.ai handles the rest automatically: it fetches a short-lived token, uses it for all MCP requests, and refreshes it when it expires. |
| 26 | + |
| 27 | +### New endpoints |
| 28 | + |
| 29 | +| Endpoint | Purpose | |
| 30 | +|----------|---------| |
| 31 | +| `GET /.well-known/oauth-authorization-server` | RFC 8414 discovery | |
| 32 | +| `POST /oauth/token` | Issues a 1-hour Bearer JWT | |
| 33 | + |
| 34 | +Requirements: `jwtSecret` must be set in `server` config; a public HTTPS URL is needed for Claude.ai (localhost works for local clients). |
| 35 | + |
| 36 | +Existing API key authentication is fully backward-compatible — Claude Code, Cursor, and Windsurf continue to work unchanged. |
| 37 | + |
| 38 | +## Cleaner MCP tool responses |
| 39 | + |
| 40 | +MCP tool responses no longer include internal graph fields, null values, or empty arrays that were cluttering LLM context: |
| 41 | + |
| 42 | +- `docs_get_node` — removed `fileEmbedding`, `pendingLinks`, `mtime` |
| 43 | +- `code_get_symbol` — removed `fileEmbedding`, `pendingImports`, `pendingEdges` |
| 44 | +- `notes_get`, `tasks_get`, `skills_get` — removed `version`; null fields and empty arrays stripped from output |
| 45 | +- `notes_list` — removed content preview (not in tool description) |
| 46 | + |
| 47 | +This reduces token usage and makes responses easier for models to parse. |
| 48 | + |
| 49 | +## Array syntax for `include` patterns |
| 50 | + |
| 51 | +The `include` field in graph config now accepts a YAML array in addition to a single glob string, consistent with how `exclude` already works: |
| 52 | + |
| 53 | +```yaml |
| 54 | +graphs: |
| 55 | + docs: |
| 56 | + include: |
| 57 | + - "**/*.md" |
| 58 | + - "**/*.mdx" |
| 59 | + code: |
| 60 | + include: |
| 61 | + - "**/*.ts" |
| 62 | + - "**/*.tsx" |
| 63 | +``` |
| 64 | +
|
| 65 | +Single string syntax still works — no migration needed. |
| 66 | +
|
| 67 | +## Tool naming and parameter consistency |
| 68 | +
|
| 69 | +All 58 MCP tools were audited for naming consistency, parameter names, defaults, and parity with the REST API: |
| 70 | +
|
| 71 | +- Tools renamed to consistent `graph_verb_noun` prefixes across all six graphs |
| 72 | +- Parameter names and defaults aligned between MCP tools and REST endpoints |
| 73 | +- Docs, site, UI help text, and the prompt builder updated to match |
| 74 | + |
| 75 | +## Security improvement |
| 76 | + |
| 77 | +Authentication is now checked **before** project lookup in the MCP handler. Previously, unauthenticated requests could determine which project IDs existed by observing 404 vs 401 responses. Now all unauthenticated requests get a consistent 401 with `WWW-Authenticate: Bearer`. |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +Update with: |
| 82 | + |
| 83 | +```bash |
| 84 | +npm install -g @graphmemory/server@1.6.0 |
| 85 | +``` |
0 commit comments