aiquila-mcp 0.4.9 → 0.4.11

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,12 +1,12 @@
1
1
  # AIquila MCP Server
2
2
 
3
- MCP (Model Context Protocol) server that gives any MCP client full access to your Nextcloud instance — files, calendar, tasks, contacts, mail, talk, maps, bookmarks, notes, polls, forms, and more. 244 tools across 33 categories.
3
+ MCP (Model Context Protocol) server that gives any MCP client full access to your Nextcloud instance — files, calendar, tasks, contacts, mail, talk, maps, bookmarks, notes, polls, forms, and more. 311 tools across 43 categories.
4
4
 
5
5
  ## Quick Start
6
6
 
7
- ### Stdio (Claude Desktop, Claude Code, Cursor, etc.)
7
+ ### Stdio transport (local MCP clients)
8
8
 
9
- Add to your MCP client configuration (example for Claude Desktop `~/.config/claude/claude_desktop_config.json`):
9
+ Add to your MCP client configuration. Example for Claude Desktop (`~/.config/claude/claude_desktop_config.json`); Claude Code, Cursor and VS Code use the same server definition in their own config files:
10
10
 
11
11
  ```json
12
12
  {
@@ -26,75 +26,101 @@ Add to your MCP client configuration (example for Claude Desktop `~/.config/clau
26
26
 
27
27
  Generate an App Password in Nextcloud: **Settings → Security → Devices & sessions**.
28
28
 
29
- ### HTTP Transport (Docker, Claude.ai, remote clients)
29
+ ### HTTP transport (Docker, remote MCP clients)
30
30
 
31
- See the [Docker setup guide](https://github.com/elgorro/aiquila/blob/main/docs/mcp/setup.md#docker--claudeai-http-transport) for running AIquila as an HTTP server with OAuth for remote MCP clients.
31
+ See the [Docker setup guide](https://github.com/elgorro/aiquila/blob/main/docs/mcp/setup.md#docker--claudeai-http-transport) for running AIquila as an HTTP server with OAuth for remote MCP clients such as Claude.ai.
32
+
33
+ ### Which AI model does this use?
34
+
35
+ None. This server has no model of its own and no provider setting — it exposes your
36
+ Nextcloud to whatever MCP client you point at it, and that client brings its own model.
37
+ Provider choice (Claude, Hetzner Inference, Mistral, a local model, DeepSeek) belongs to
38
+ the [AIquila Nextcloud app](https://github.com/elgorro/aiquila/blob/main/docs/installation/aiquila-setup.md), which is a separate component.
32
39
 
33
40
  ## What It Can Do
34
41
 
35
42
  ### Core (always available)
36
43
 
37
- | Category | Tools |
38
- | ---------- | ----: |
39
- | Files | 12 |
40
- | Status | 3 |
41
- | Apps | 6 |
42
- | Tags | 6 |
43
- | Search | 2 |
44
- | Users | 4 |
45
- | Groups | 4 |
46
- | Shares | 10 |
47
- | Absence | 3 |
48
- | Trash | 3 |
49
- | Versions | 2 |
44
+ | Category | Tools |
45
+ | ------------- | ----: |
46
+ | Files | 15 |
47
+ | Shares | 10 |
48
+ | Apps | 6 |
49
+ | Tags | 6 |
50
+ | User Status | 5 |
51
+ | Users | 4 |
52
+ | Groups | 4 |
53
+ | Notifications | 4 |
54
+ | Status | 3 |
55
+ | Absence | 3 |
56
+ | Trash | 3 |
57
+ | Search | 2 |
58
+ | Versions | 2 |
59
+ | Activity | 2 |
60
+ | **Subtotal** | **69** |
50
61
 
51
62
  ### AIquila app
52
63
 
53
- | Category | Tools |
54
- | ---------- | ----: |
55
- | AIquila | 3 |
56
- | Security | 2 |
57
- | OCC | 1 |
58
- | Projects | 7 |
64
+ | Category | Tools |
65
+ | ------------ | ----: |
66
+ | Projects | 7 |
67
+ | Cowork | 7 |
68
+ | AIquila | 3 |
69
+ | Security | 2 |
70
+ | OCC | 1 |
71
+ | **Subtotal** | **20** |
59
72
 
60
73
  ### Optional Nextcloud apps
61
74
 
62
- | Category | Tools |
63
- | ------------- | ----: |
64
- | Calendar | 6 |
65
- | Tasks | 6 |
66
- | Contacts | 6 |
67
- | Notes | 5 |
68
- | Mail | 8 |
69
- | Deck | 12 |
70
- | Cookbook | 6 |
71
- | Maps | 25 |
72
- | Photos | 11 |
73
- | Talk | 10 |
74
- | Circles | 8 |
75
- | Bookmarks | 13 |
76
- | Polls | 21 |
77
- | Forms | 25 |
78
- | Assistant | 4 |
79
- | Translate | 1 |
80
- | User Status | 5 |
81
- | Notifications | 4 |
82
- | **Total** | **244** |
75
+ | Category | Tools |
76
+ | ---------------- | ----: |
77
+ | Maps | 40 |
78
+ | Forms | 25 |
79
+ | Polls | 21 |
80
+ | News | 17 |
81
+ | Bookmarks | 13 |
82
+ | Deck | 12 |
83
+ | Photos | 11 |
84
+ | Mail | 10 |
85
+ | Talk | 10 |
86
+ | Circles | 8 |
87
+ | Calendar | 6 |
88
+ | Tasks | 6 |
89
+ | Contacts | 6 |
90
+ | Cookbook | 6 |
91
+ | Notes | 5 |
92
+ | Text | 5 |
93
+ | Terms of Service | 5 |
94
+ | Assistant | 4 |
95
+ | Announcements | 3 |
96
+ | Passman | 3 |
97
+ | Registration | 3 |
98
+ | Translate | 1 |
99
+ | Social Sharing | 1 |
100
+ | Recommendations | 1 |
101
+ | **Subtotal** | **222** |
102
+
103
+ **Total: 311 tools.**
83
104
 
84
105
  ## Configuration
85
106
 
86
- | Variable | Required | Notes |
87
- | -------------------- | -------- | --------------------------------------------- |
88
- | `NEXTCLOUD_URL` | Yes | trailing slash stripped automatically |
89
- | `NEXTCLOUD_USER` | Yes | |
90
- | `NEXTCLOUD_PASSWORD` | Yes | use an App Password |
91
- | `MCP_TRANSPORT` | No | `stdio` (default) or `http` |
92
- | `MCP_AUTH_ENABLED` | No | `true` to enable OAuth for remote clients |
93
- | `MCP_AUTH_SECRET` | If auth | `openssl rand -hex 32` |
94
- | `MCP_AUTH_ISSUER` | If auth | public HTTPS URL of this server |
95
- | `MCP_ALLOWED_HOSTS` | No | extra hostnames for DNS rebinding protection |
96
- | `MCP_CORS_ORIGINS` | No | extra browser origins allowed via CORS |
97
- | `LOG_LEVEL` | No | `trace`/`debug`/`info`/`warn`/`error`/`fatal` |
107
+ | Variable | Required | Notes |
108
+ | ---------------------- | -------- | ------------------------------------------------------------------------------------- |
109
+ | `NEXTCLOUD_URL` | Yes | trailing slash stripped automatically |
110
+ | `NEXTCLOUD_USER` | Yes | |
111
+ | `NEXTCLOUD_PASSWORD` | Yes | use an App Password |
112
+ | `MCP_TRANSPORT` | No | `stdio` (default) or `http` |
113
+ | `MCP_AUTH_ENABLED` | No | `true` to enable OAuth for remote clients |
114
+ | `MCP_AUTH_SECRET` | If auth | `openssl rand -hex 32` |
115
+ | `MCP_AUTH_ISSUER` | If auth | public HTTPS URL of this server |
116
+ | `MCP_AUTH_STATE_DIR` | No | directory for persisted OAuth state (default `/app/state`) |
117
+ | `MCP_LAZY_AUTH` | No | `false` requires a bearer token on every JSON-RPC method (default `true`) |
118
+ | `MCP_LOCALE` | No | BCP 47 locale tag for `get_local_time` (e.g. `sv-SE`); defaults to the system locale |
119
+ | `MCP_MAX_FILE_SIZE` | No | max `write_file` content length in bytes (default `1073741824` = 1 GB) |
120
+ | `MCP_ALLOWED_HOSTS` | No | extra hostnames for DNS rebinding protection |
121
+ | `MCP_CORS_ORIGINS` | No | extra browser origins allowed via CORS |
122
+ | `MCP_OCC_ALLOWLIST` | No | allowed OCC commands for `run_occ`; overrides the default allowlist |
123
+ | `LOG_LEVEL` | No | `trace`/`debug`/`info`/`warn`/`error`/`fatal` |
98
124
 
99
125
  ## Requirements
100
126
 
@@ -106,7 +132,7 @@ Optional Nextcloud apps unlock additional tool categories: Tasks, Calendar, Cont
106
132
  ## Documentation
107
133
 
108
134
  - [Setup Guide](https://github.com/elgorro/aiquila/blob/main/docs/mcp/setup.md) — detailed installation and configuration
109
- - [Tools Reference](https://github.com/elgorro/aiquila/blob/main/docs/mcp/README.md) — all 198 tools documented
135
+ - [Tools Reference](https://github.com/elgorro/aiquila/blob/main/docs/mcp/README.md) — the full tool catalogue
110
136
  - [Architecture](https://github.com/elgorro/aiquila/blob/main/docs/dev/mcp-server-architecture.md) — design and internals
111
137
  - [Full Documentation](https://github.com/elgorro/aiquila/blob/main/docs/) — complete docs index
112
138
 
@@ -40,7 +40,7 @@ function resolveRichMessage(message, params) {
40
40
  return message;
41
41
  let resolved = message;
42
42
  for (const [key, param] of Object.entries(params)) {
43
- resolved = resolved.replace(`{${key}}`, param.name ?? param.id);
43
+ resolved = resolved.replaceAll(`{${key}}`, param.name ?? param.id);
44
44
  }
45
45
  return resolved;
46
46
  }
@@ -114,7 +114,7 @@ export const listMessagesTool = {
114
114
  idempotentHint: true,
115
115
  openWorldHint: false,
116
116
  },
117
- description: 'List recent messages in a Talk conversation. Returns message content with timestamps and authors.',
117
+ description: 'List recent messages in a Talk conversation. Returns message content with timestamps and authors. Reading does not mark the conversation as read.',
118
118
  inputSchema: z.object({
119
119
  token: z.string().describe('Conversation token (from list_conversations)'),
120
120
  limit: z.number().optional().describe('Number of messages to retrieve (default 50, max 200)'),
@@ -132,6 +132,9 @@ export const listMessagesTool = {
132
132
  const queryParams = {
133
133
  lookIntoFuture: '0',
134
134
  limit: String(Math.min(args.limit ?? 50, 200)),
135
+ // Talk defaults setReadMarker=1; keep this tool read-only so listing
136
+ // messages does not clear the conversation's unread badge.
137
+ setReadMarker: '0',
135
138
  };
136
139
  if (args.lastKnownMessageId) {
137
140
  queryParams.lastKnownMessageId = String(args.lastKnownMessageId);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aiquila-mcp",
3
- "version": "0.4.9",
4
- "description": "Nextcloud MCP server — files, calendar, contacts, mail, maps, notes, tasks & 120+ more tools",
3
+ "version": "0.4.11",
4
+ "description": "Nextcloud MCP server — 311 tools for files, calendar, contacts, mail, maps, notes, tasks and more",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
@@ -21,9 +21,14 @@
21
21
  },
22
22
  "keywords": [
23
23
  "mcp",
24
+ "mcp-server",
24
25
  "model-context-protocol",
25
26
  "nextcloud",
26
27
  "claude",
28
+ "mistral",
29
+ "deepseek",
30
+ "ollama",
31
+ "llm",
27
32
  "ai",
28
33
  "aiquila",
29
34
  "webdav",