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 +84 -58
- package/dist/tools/apps/talk.js +5 -2
- package/package.json +7 -2
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.
|
|
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 (
|
|
7
|
+
### Stdio transport (local MCP clients)
|
|
8
8
|
|
|
9
|
-
Add to your MCP client configuration
|
|
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
|
|
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
|
|
38
|
-
|
|
|
39
|
-
| Files
|
|
40
|
-
|
|
|
41
|
-
| Apps
|
|
42
|
-
| Tags
|
|
43
|
-
|
|
|
44
|
-
| Users
|
|
45
|
-
| Groups
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
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
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
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
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
| Deck
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
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
|
|
87
|
-
|
|
|
88
|
-
| `NEXTCLOUD_URL`
|
|
89
|
-
| `NEXTCLOUD_USER`
|
|
90
|
-
| `NEXTCLOUD_PASSWORD`
|
|
91
|
-
| `MCP_TRANSPORT`
|
|
92
|
-
| `MCP_AUTH_ENABLED`
|
|
93
|
-
| `MCP_AUTH_SECRET`
|
|
94
|
-
| `MCP_AUTH_ISSUER`
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
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) —
|
|
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
|
|
package/dist/tools/apps/talk.js
CHANGED
|
@@ -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.
|
|
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.
|
|
4
|
-
"description": "Nextcloud MCP server — files, calendar, contacts, mail, maps, notes, tasks
|
|
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",
|