outline-mcp-server 5.2.0 → 5.3.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Outline MCP Server
2
2
 
3
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=outline&config=eyJjb21tYW5kIjoibnB4IC15IG91dGxpbmUtbWNwLXNlcnZlci1zdGRpb0BsYXRlc3QiLCJlbnYiOnsiT1VUTElORV9BUElfS0VZIjoiPFJFUExBQ0VfTUU%2BIiwiT1VUTElORV9BUElfVVJMIjoiaHR0cHM6Ly9hcHAuZ2V0b3V0bGluZS5jb20vYXBpIiwiT1VUTElORV9NQ1BfUE9SVCI6IjYwNjAifX0%3D)
3
+ [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=outline&config=eyJjb21tYW5kIjoibnB4IC15IC0tcGFja2FnZT1vdXRsaW5lLW1jcC1zZXJ2ZXJAbGF0ZXN0IC1jIG91dGxpbmUtbWNwLXNlcnZlci1zdGRpbyIsImVudiI6eyJPVVRMSU5FX0FQSV9LRVkiOiI8UkVQTEFDRV9NRT4iLCJPVVRMSU5FX0FQSV9VUkwiOiJodHRwczovL2FwcC5nZXRvdXRsaW5lLmNvbS9hcGkifX0%3D)
4
4
 
5
5
  ![npm](https://img.shields.io/npm/v/outline-mcp-server) • ![downloads](https://img.shields.io/npm/dy/outline-mcp-server)
6
6
 
@@ -15,7 +15,6 @@ A Model Context Protocol (MCP) server that provides tools for interacting with [
15
15
  ## Features
16
16
 
17
17
  - **Document Management**
18
-
19
18
  - ✅ Create new documents with customizable properties
20
19
  - ✅ Get document details
21
20
  - ✅ Update existing documents
@@ -28,13 +27,11 @@ A Model Context Protocol (MCP) server that provides tools for interacting with [
28
27
  - ✅ Archive documents
29
28
 
30
29
  - **Collection Management**
31
-
32
30
  - ✅ Get collection details
33
31
  - ✅ List collections
34
32
  - ✅ Create and update collections
35
33
 
36
34
  - **Comment Management**
37
-
38
35
  - ✅ Create comments on documents
39
36
  - ✅ Update existing comments
40
37
  - ✅ Delete comments
@@ -51,14 +48,16 @@ A Model Context Protocol (MCP) server that provides tools for interacting with [
51
48
  - Outline API key with appropriate permissions
52
49
  - Note: if you need to use the AI-powered ask feature, you must enable the "AI Answers" feature in your Outline Workspace settings
53
50
 
54
- ### Running directly
51
+ ### Running
52
+
53
+ `outline-mcp-server` supports the latest streamable-http protocol, the deprecated sse protocol, and good ole fashioned stdio.
55
54
 
56
55
  ```bash
57
56
  # S-HTTP/SSE servers
58
- OUTLINE_API_KEY=... npx outline-mcp-server@latest -y
57
+ OUTLINE_API_KEY=... npx -y outline-mcp-server@latest
59
58
 
60
59
  # STDIO
61
- OUTLINE_API_KEY=... npx outline-mcp-server-stdio@latest -y
60
+ OUTLINE_API_KEY=... npx -y --package=outline-mcp-server@latest -c outline-mcp-server-stdio
62
61
  ```
63
62
 
64
63
  ### Cursor (mcp.json)
package/build/dxt.js ADDED
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Outline MCP Desktop Extension (DXT) Server
4
+ */
5
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
+ import toolRegistry from './utils/toolRegistry.js';
7
+ import { getMcpServer } from './utils/getMcpServer.js';
8
+ import logger from './utils/logger.js';
9
+ // Configuration - Note: environment variables are set by the DXT runtime
10
+ const CONFIG = {
11
+ OUTLINE_API_KEY: process.env.OUTLINE_API_KEY,
12
+ OUTLINE_API_URL: process.env.OUTLINE_API_URL || 'https://app.getoutline.com/api',
13
+ };
14
+ // Error handling for uncaught exceptions
15
+ process.on('uncaughtException', (error) => {
16
+ logger.error('Uncaught exception:', error);
17
+ process.exit(1);
18
+ });
19
+ process.on('unhandledRejection', (reason, promise) => {
20
+ logger.error('Unhandled rejection at:', promise, 'reason:', reason);
21
+ process.exit(1);
22
+ });
23
+ // Graceful shutdown
24
+ process.on('SIGINT', () => {
25
+ logger.info('Received SIGINT, shutting down gracefully');
26
+ process.exit(0);
27
+ });
28
+ process.on('SIGTERM', () => {
29
+ logger.info('Received SIGTERM, shutting down gracefully');
30
+ process.exit(0);
31
+ });
32
+ // Start the server
33
+ async function startServer() {
34
+ try {
35
+ logger.info('Starting Outline MCP DXT Server...');
36
+ const server = await getMcpServer();
37
+ const transport = new StdioServerTransport();
38
+ await server.connect(transport);
39
+ logger.info('Outline MCP DXT Server started successfully');
40
+ logger.info('Server configuration:', {
41
+ apiUrl: CONFIG.OUTLINE_API_URL,
42
+ toolsLoaded: `${toolRegistry.tools.length} tools loaded: ${toolRegistry.tools.map(t => t.name).join(', ')}`,
43
+ });
44
+ }
45
+ catch (error) {
46
+ logger.error('Failed to start server:', error);
47
+ process.exit(1);
48
+ }
49
+ }
50
+ startServer();
@@ -3,7 +3,7 @@ import { loadAllTools } from './loadAllTools.js';
3
3
  // Helper to create a new MCP server instance with all tools registered
4
4
  export async function getMcpServer() {
5
5
  const server = new McpServer({
6
- name: 'outline-mcp',
6
+ name: process.env.npm_package_name || 'outline-mcp-server',
7
7
  version: process.env.npm_package_version || 'unknown',
8
8
  description: 'Outline Model Context Protocol server',
9
9
  });
@@ -0,0 +1,16 @@
1
+ /** Using console.error to guarantee stderr output in logs */
2
+ const logger = {
3
+ error: (message, ...args) => {
4
+ console.error(`[ERROR] ${message}`, ...args);
5
+ },
6
+ warn: (message, ...args) => {
7
+ console.error(`[WARN] ${message}`, ...args);
8
+ },
9
+ info: (message, ...args) => {
10
+ console.error(`[INFO] ${message}`, ...args);
11
+ },
12
+ debug: (message, ...args) => {
13
+ console.error(`[DEBUG] ${message}`, ...args);
14
+ },
15
+ };
16
+ export default logger;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "outline-mcp-server",
3
- "version": "5.2.0",
3
+ "version": "5.3.0",
4
4
  "description": "An MCP server for interacting with Outline's API",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,10 +20,12 @@
20
20
  },
21
21
  "scripts": {
22
22
  "build": "tsc && chmod +x build/index.js && chmod +x build/stdio.js",
23
+ "build:dxt": "./scripts/build-dxt.sh",
23
24
  "prepare": "npm run build",
24
25
  "watch": "bun --watch src/index.ts",
25
26
  "watch:stdio": "bun --watch src/stdio.ts",
26
27
  "dev": "concurrently -n 'build,inspector' -c 'blue.bold,green.bold' 'npm run watch' 'npm run inspector'",
28
+ "run-dxt": "dotenv bun src/dxt.ts",
27
29
  "inspector": "npx @modelcontextprotocol/inspector@latest",
28
30
  "start": "bun build/index.js",
29
31
  "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json}\"",
@@ -43,6 +45,7 @@
43
45
  "@types/node": "20.19.1",
44
46
  "bun": "^1.2.17",
45
47
  "concurrently": "^9.2.0",
48
+ "dotenv-cli": "^8.0.0",
46
49
  "prettier": "3.6.0",
47
50
  "semantic-release": "^22.0.12",
48
51
  "typescript": "5.x"