@doccler/mcp-server 1.0.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 +200 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +504 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/README.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Doccler MCP Server
|
|
2
|
+
|
|
3
|
+
🚀 **Connect your IDE to Doccler** - Use AI-powered documentation directly from your development environment.
|
|
4
|
+
|
|
5
|
+
## What is MCP?
|
|
6
|
+
|
|
7
|
+
The Model Context Protocol (MCP) is an open standard that allows AI assistants (like Claude, Cursor, VS Code with AI extensions) to connect to external tools and data sources. Doccler's MCP server enables you to:
|
|
8
|
+
|
|
9
|
+
1. **Query your documentation** as a single source of truth
|
|
10
|
+
2. **Create documentation** directly from your IDE
|
|
11
|
+
3. **Search documentation** with semantic search
|
|
12
|
+
4. **Generate documentation** from code using AI
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
### Prerequisites
|
|
17
|
+
|
|
18
|
+
- Node.js 18 or higher
|
|
19
|
+
- npm or yarn
|
|
20
|
+
- A Doccler account with API access
|
|
21
|
+
|
|
22
|
+
### Install Dependencies
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cd mcp-server
|
|
26
|
+
npm install
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Build the Server
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Configuration
|
|
36
|
+
|
|
37
|
+
### 1. Get Your Doccler API Key
|
|
38
|
+
|
|
39
|
+
1. Log in to [Doccler](https://doccler.com)
|
|
40
|
+
2. Go to **Settings** → **API Keys**
|
|
41
|
+
3. Generate a new API key
|
|
42
|
+
|
|
43
|
+
### 2. Configure Your IDE
|
|
44
|
+
|
|
45
|
+
#### For Antigravity (VS Code based)
|
|
46
|
+
|
|
47
|
+
Add to your `~/.antigravity/settings.json`:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcp": {
|
|
52
|
+
"servers": {
|
|
53
|
+
"doccler": {
|
|
54
|
+
"command": "node",
|
|
55
|
+
"args": ["/path/to/docs-platform/mcp-server/dist/index.js"],
|
|
56
|
+
"env": {
|
|
57
|
+
"DOCCLER_API_KEY": "your-api-key-here",
|
|
58
|
+
"DOCCLER_API_URL": "https://doccler.com/api"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### For Cursor
|
|
67
|
+
|
|
68
|
+
Add to your `~/.cursor/mcp.json`:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"mcpServers": {
|
|
73
|
+
"doccler": {
|
|
74
|
+
"command": "node",
|
|
75
|
+
"args": ["/path/to/docs-platform/mcp-server/dist/index.js"],
|
|
76
|
+
"env": {
|
|
77
|
+
"DOCCLER_API_KEY": "your-api-key-here",
|
|
78
|
+
"DOCCLER_API_URL": "https://doccler.com/api"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### For Claude Desktop
|
|
86
|
+
|
|
87
|
+
Add to your `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"mcpServers": {
|
|
92
|
+
"doccler": {
|
|
93
|
+
"command": "node",
|
|
94
|
+
"args": ["/path/to/docs-platform/mcp-server/dist/index.js"],
|
|
95
|
+
"env": {
|
|
96
|
+
"DOCCLER_API_KEY": "your-api-key-here",
|
|
97
|
+
"DOCCLER_API_URL": "https://doccler.com/api"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### For TRAE
|
|
105
|
+
|
|
106
|
+
Add to your TRAE MCP configuration:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"servers": {
|
|
111
|
+
"doccler": {
|
|
112
|
+
"command": "node",
|
|
113
|
+
"args": ["/path/to/docs-platform/mcp-server/dist/index.js"],
|
|
114
|
+
"env": {
|
|
115
|
+
"DOCCLER_API_KEY": "your-api-key-here",
|
|
116
|
+
"DOCCLER_API_URL": "https://doccler.com/api"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Available Tools
|
|
124
|
+
|
|
125
|
+
### 🔧 hello_doccler
|
|
126
|
+
|
|
127
|
+
Verify your connection to Doccler.
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
Use: "Hello Doccler" or "Test Doccler connection"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 🔍 search_docs
|
|
134
|
+
|
|
135
|
+
Search your documentation.
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Use: "Search my documentation for authentication"
|
|
139
|
+
"Find docs about JWT tokens"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 📝 create_doc
|
|
143
|
+
|
|
144
|
+
Create new documentation.
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Use: "Create documentation titled 'API Guide' with content..."
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 🤖 generate_doc
|
|
151
|
+
|
|
152
|
+
Generate documentation from code using AI.
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
Use: "Generate documentation for this code: [paste your code]"
|
|
156
|
+
"Analyze and document this function"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Development
|
|
160
|
+
|
|
161
|
+
### Run in Development Mode
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm run dev
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Test with MCP Inspector
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npm run inspect
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
This opens an interactive inspector to test your tools and resources.
|
|
174
|
+
|
|
175
|
+
## Environment Variables
|
|
176
|
+
|
|
177
|
+
| Variable | Description | Default |
|
|
178
|
+
|----------|-------------|---------|
|
|
179
|
+
| `DOCCLER_API_KEY` | Your Doccler API key | (required) |
|
|
180
|
+
| `DOCCLER_API_URL` | Doccler API base URL | `https://doccler.com/api` |
|
|
181
|
+
|
|
182
|
+
## Troubleshooting
|
|
183
|
+
|
|
184
|
+
### "API Key not configured"
|
|
185
|
+
|
|
186
|
+
Make sure `DOCCLER_API_KEY` is set in your IDE's MCP configuration.
|
|
187
|
+
|
|
188
|
+
### "Connection failed"
|
|
189
|
+
|
|
190
|
+
1. Check that the server is built: `npm run build`
|
|
191
|
+
2. Verify the path to `dist/index.js` is correct
|
|
192
|
+
3. Ensure Node.js 18+ is installed
|
|
193
|
+
|
|
194
|
+
### Server logs
|
|
195
|
+
|
|
196
|
+
Look for logs in your IDE's output panel, usually under "MCP" or "Extensions".
|
|
197
|
+
|
|
198
|
+
## License
|
|
199
|
+
|
|
200
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Doccler MCP Server
|
|
4
|
+
*
|
|
5
|
+
* This server allows IDEs (VS Code, Cursor, TRAE, etc.) to connect to Doccler
|
|
6
|
+
* and interact with documentation in two main ways:
|
|
7
|
+
*
|
|
8
|
+
* 1. Query documentation as a single source of truth for development
|
|
9
|
+
* 2. Create, search, and generate documentation via AI
|
|
10
|
+
*
|
|
11
|
+
* Transport: stdio (standard for IDE integrations)
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Doccler MCP Server
|
|
4
|
+
*
|
|
5
|
+
* This server allows IDEs (VS Code, Cursor, TRAE, etc.) to connect to Doccler
|
|
6
|
+
* and interact with documentation in two main ways:
|
|
7
|
+
*
|
|
8
|
+
* 1. Query documentation as a single source of truth for development
|
|
9
|
+
* 2. Create, search, and generate documentation via AI
|
|
10
|
+
*
|
|
11
|
+
* Transport: stdio (standard for IDE integrations)
|
|
12
|
+
*/
|
|
13
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
14
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
// Server info
|
|
17
|
+
const SERVER_NAME = 'doccler-mcp-server';
|
|
18
|
+
const SERVER_VERSION = '1.0.0';
|
|
19
|
+
// API Configuration - will be overridden by environment variables
|
|
20
|
+
const DOCCLER_API_BASE = process.env.DOCCLER_API_URL || 'https://doccler.com/api';
|
|
21
|
+
const DOCCLER_API_KEY = process.env.DOCCLER_API_KEY || '';
|
|
22
|
+
/**
|
|
23
|
+
* Helper to make authenticated API requests to Doccler
|
|
24
|
+
*/
|
|
25
|
+
async function docclerRequest(endpoint, options = {}) {
|
|
26
|
+
const url = `${DOCCLER_API_BASE}${endpoint}`;
|
|
27
|
+
return fetch(url, {
|
|
28
|
+
...options,
|
|
29
|
+
headers: {
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
'Authorization': `Bearer ${DOCCLER_API_KEY}`,
|
|
32
|
+
...options.headers,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Extract base URL for public links (remove /api)
|
|
37
|
+
const DOCCLER_BASE_URL = DOCCLER_API_BASE.replace(/\/api$/, '');
|
|
38
|
+
/**
|
|
39
|
+
* Build a public document URL
|
|
40
|
+
* Format: https://doccler.com/docs/{username}/{slug}
|
|
41
|
+
* Since we don't know the username, we use the dashboard URL
|
|
42
|
+
*/
|
|
43
|
+
function getDocumentUrl(slug) {
|
|
44
|
+
return `${DOCCLER_BASE_URL}/pt/editor/${slug}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build a public docs URL (for published docs)
|
|
48
|
+
*/
|
|
49
|
+
function getPublicDocUrl(slug, username) {
|
|
50
|
+
if (username) {
|
|
51
|
+
return `${DOCCLER_BASE_URL}/pt/docs/${username}/${slug}`;
|
|
52
|
+
}
|
|
53
|
+
return `${DOCCLER_BASE_URL}/pt/editor/${slug}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Standard error response builder
|
|
57
|
+
*/
|
|
58
|
+
function errorResponse(message, details) {
|
|
59
|
+
const text = details
|
|
60
|
+
? `❌ ${message}\n\n📋 Detalhes: ${details}`
|
|
61
|
+
: `❌ ${message}`;
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: 'text', text }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Standard success response builder
|
|
68
|
+
*/
|
|
69
|
+
function successResponse(message) {
|
|
70
|
+
return {
|
|
71
|
+
content: [{ type: 'text', text: message }],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Initialize and run the MCP server
|
|
76
|
+
*/
|
|
77
|
+
async function main() {
|
|
78
|
+
// Create MCP Server instance
|
|
79
|
+
const server = new McpServer({
|
|
80
|
+
name: SERVER_NAME,
|
|
81
|
+
version: SERVER_VERSION,
|
|
82
|
+
});
|
|
83
|
+
// ============================================
|
|
84
|
+
// TOOL: hello_doccler
|
|
85
|
+
// A simple hello world tool to verify the connection
|
|
86
|
+
// ============================================
|
|
87
|
+
server.tool('hello_doccler', 'Say hello to Doccler and verify the connection is working', {
|
|
88
|
+
name: z.string().optional().describe('Optional name to personalize the greeting'),
|
|
89
|
+
}, async (args) => {
|
|
90
|
+
const name = args.name || 'Developer';
|
|
91
|
+
const timestamp = new Date().toISOString();
|
|
92
|
+
const greeting = [
|
|
93
|
+
`👋 Hello, ${name}!`,
|
|
94
|
+
'',
|
|
95
|
+
'🚀 Welcome to Doccler MCP Server!',
|
|
96
|
+
'',
|
|
97
|
+
'I am your documentation assistant. I can help you:',
|
|
98
|
+
'• Search your documentation',
|
|
99
|
+
'• Create new documentation',
|
|
100
|
+
'• Generate documentation with AI',
|
|
101
|
+
'',
|
|
102
|
+
`📡 Server: ${SERVER_NAME} v${SERVER_VERSION}`,
|
|
103
|
+
`🕐 Time: ${timestamp}`,
|
|
104
|
+
`🔗 API: ${DOCCLER_API_BASE}`,
|
|
105
|
+
'',
|
|
106
|
+
DOCCLER_API_KEY ? '✅ API Key configured' : '⚠️ No API Key configured - set DOCCLER_API_KEY environment variable',
|
|
107
|
+
].join('\n');
|
|
108
|
+
return {
|
|
109
|
+
content: [
|
|
110
|
+
{
|
|
111
|
+
type: 'text',
|
|
112
|
+
text: greeting,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
// ============================================
|
|
118
|
+
// TOOL: search_docs
|
|
119
|
+
// Search documentation by query
|
|
120
|
+
// ============================================
|
|
121
|
+
server.tool('search_docs', 'Search your Doccler documentation by keyword or semantic query', {
|
|
122
|
+
query: z.string().describe('Search query to find relevant documentation'),
|
|
123
|
+
limit: z.number().optional().default(5).describe('Maximum number of results to return'),
|
|
124
|
+
}, async (args) => {
|
|
125
|
+
if (!DOCCLER_API_KEY) {
|
|
126
|
+
return {
|
|
127
|
+
content: [
|
|
128
|
+
{
|
|
129
|
+
type: 'text',
|
|
130
|
+
text: '❌ Error: DOCCLER_API_KEY not configured. Please set the environment variable.',
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const response = await docclerRequest(`/documents/search?q=${encodeURIComponent(args.query)}&limit=${args.limit}`);
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
throw new Error(`API Error: ${response.status} ${response.statusText}`);
|
|
139
|
+
}
|
|
140
|
+
const data = await response.json();
|
|
141
|
+
if (!data.documents || data.documents.length === 0) {
|
|
142
|
+
return {
|
|
143
|
+
content: [
|
|
144
|
+
{
|
|
145
|
+
type: 'text',
|
|
146
|
+
text: `🔍 No documentation found for: "${args.query}"`,
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const results = data.documents.map((doc, i) => `${i + 1}. **${doc.title}**\n Slug: ${doc.slug}\n Preview: ${doc.content?.slice(0, 150)}...`).join('\n\n');
|
|
152
|
+
return {
|
|
153
|
+
content: [
|
|
154
|
+
{
|
|
155
|
+
type: 'text',
|
|
156
|
+
text: `🔍 Found ${data.documents.length} results for "${args.query}":\n\n${results}`,
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
return {
|
|
163
|
+
content: [
|
|
164
|
+
{
|
|
165
|
+
type: 'text',
|
|
166
|
+
text: `❌ Error searching documentation: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// ============================================
|
|
173
|
+
// TOOL: create_doc
|
|
174
|
+
// Create or update documentation
|
|
175
|
+
// ============================================
|
|
176
|
+
server.tool('create_doc', 'Create new documentation in Doccler. Use list_spaces first to see available spaces.', {
|
|
177
|
+
title: z.string().describe('Title of the documentation'),
|
|
178
|
+
content: z.string().describe('Content in Markdown format'),
|
|
179
|
+
space: z.string().optional().describe('Space/category to organize the doc (e.g., "API", "Guides", "Setup"). Leave empty for uncategorized.'),
|
|
180
|
+
published: z.boolean().optional().default(false).describe('Whether to publish immediately'),
|
|
181
|
+
}, async (args) => {
|
|
182
|
+
if (!DOCCLER_API_KEY) {
|
|
183
|
+
return errorResponse('DOCCLER_API_KEY não configurada', 'Configure a variável de ambiente DOCCLER_API_KEY na sua IDE.');
|
|
184
|
+
}
|
|
185
|
+
try {
|
|
186
|
+
// First, get existing spaces for context
|
|
187
|
+
let availableSpaces = [];
|
|
188
|
+
try {
|
|
189
|
+
const spacesResponse = await docclerRequest('/documents');
|
|
190
|
+
if (spacesResponse.ok) {
|
|
191
|
+
const spacesData = await spacesResponse.json();
|
|
192
|
+
const spaces = new Set();
|
|
193
|
+
spacesData.documents?.forEach(doc => {
|
|
194
|
+
const docAny = doc;
|
|
195
|
+
if (docAny.space) {
|
|
196
|
+
spaces.add(docAny.space);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
availableSpaces = Array.from(spaces).slice(0, 5);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Ignore errors fetching spaces
|
|
204
|
+
}
|
|
205
|
+
const response = await docclerRequest('/documents', {
|
|
206
|
+
method: 'POST',
|
|
207
|
+
body: JSON.stringify({
|
|
208
|
+
title: args.title,
|
|
209
|
+
markdown: args.content,
|
|
210
|
+
content: args.content,
|
|
211
|
+
space: args.space || null,
|
|
212
|
+
published: args.published,
|
|
213
|
+
}),
|
|
214
|
+
});
|
|
215
|
+
if (!response.ok) {
|
|
216
|
+
const errorData = await response.json().catch(() => ({}));
|
|
217
|
+
throw new Error(errorData.error || `API Error: ${response.status}`);
|
|
218
|
+
}
|
|
219
|
+
const data = await response.json();
|
|
220
|
+
const editorUrl = getDocumentUrl(data.slug);
|
|
221
|
+
const responseLines = [
|
|
222
|
+
`✅ Documentação criada com sucesso!`,
|
|
223
|
+
'',
|
|
224
|
+
`📄 Título: ${args.title}`,
|
|
225
|
+
`🔗 Slug: ${data.slug}`,
|
|
226
|
+
args.space ? `📁 Espaço: ${args.space}` : '',
|
|
227
|
+
`📊 Status: ${args.published ? '🟢 Publicado' : '🟡 Rascunho'}`,
|
|
228
|
+
'',
|
|
229
|
+
`📝 Editar: ${editorUrl}`,
|
|
230
|
+
args.published ? `🌐 Ver publicado: ${DOCCLER_BASE_URL}/pt/docs/[username]/${data.slug}` : '',
|
|
231
|
+
];
|
|
232
|
+
// Add space suggestions if doc was created without a space
|
|
233
|
+
if (!args.space && availableSpaces.length > 0) {
|
|
234
|
+
responseLines.push('');
|
|
235
|
+
responseLines.push('💡 Dica: Você pode organizar este documento em um espaço.');
|
|
236
|
+
responseLines.push(`📂 Espaços disponíveis: ${availableSpaces.join(', ')}`);
|
|
237
|
+
}
|
|
238
|
+
return successResponse(responseLines.filter(Boolean).join('\n'));
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
return errorResponse('Erro ao criar documentação', error instanceof Error ? error.message : 'Erro desconhecido');
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
// ============================================
|
|
245
|
+
// TOOL: generate_doc
|
|
246
|
+
// Generate documentation from code using AI
|
|
247
|
+
// ============================================
|
|
248
|
+
server.tool('generate_doc', 'Analyze code and generate documentation using AI', {
|
|
249
|
+
code: z.string().describe('The code to analyze and document'),
|
|
250
|
+
language: z.string().optional().describe('Programming language of the code'),
|
|
251
|
+
style: z.enum(['technical', 'tutorial', 'reference']).optional().default('technical').describe('Documentation style'),
|
|
252
|
+
}, async (args) => {
|
|
253
|
+
if (!DOCCLER_API_KEY) {
|
|
254
|
+
return errorResponse('DOCCLER_API_KEY não configurada', 'Configure a variável de ambiente na sua IDE.');
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
const response = await docclerRequest('/ai/generate-doc', {
|
|
258
|
+
method: 'POST',
|
|
259
|
+
body: JSON.stringify({
|
|
260
|
+
code: args.code,
|
|
261
|
+
language: args.language,
|
|
262
|
+
style: args.style,
|
|
263
|
+
}),
|
|
264
|
+
});
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
const errorData = await response.json().catch(() => ({}));
|
|
267
|
+
throw new Error(errorData.error || `API Error: ${response.status}`);
|
|
268
|
+
}
|
|
269
|
+
const data = await response.json();
|
|
270
|
+
const documentation = data.documentation || data.content || '';
|
|
271
|
+
return successResponse([
|
|
272
|
+
`📝 Documentação Gerada (estilo ${args.style}):`,
|
|
273
|
+
'',
|
|
274
|
+
documentation,
|
|
275
|
+
'',
|
|
276
|
+
'---',
|
|
277
|
+
'💡 Dica: Use a ferramenta create_doc para salvar esta documentação no Doccler.',
|
|
278
|
+
].join('\n'));
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
return errorResponse('Erro ao gerar documentação', error instanceof Error ? error.message : 'Erro desconhecido');
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
// ============================================
|
|
285
|
+
// TOOL: publish_doc
|
|
286
|
+
// Publish or unpublish a document
|
|
287
|
+
// ============================================
|
|
288
|
+
server.tool('publish_doc', 'Publish or unpublish a Doccler document', {
|
|
289
|
+
slug: z.string().describe('The slug (URL identifier) of the document'),
|
|
290
|
+
publish: z.boolean().describe('true to publish, false to unpublish'),
|
|
291
|
+
}, async (args) => {
|
|
292
|
+
if (!DOCCLER_API_KEY) {
|
|
293
|
+
return errorResponse('DOCCLER_API_KEY não configurada', 'Configure a variável de ambiente na sua IDE.');
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
// First, get the document to find its ID
|
|
297
|
+
const searchResponse = await docclerRequest(`/documents/search?q=${encodeURIComponent(args.slug)}&limit=1`);
|
|
298
|
+
if (!searchResponse.ok) {
|
|
299
|
+
throw new Error('Documento não encontrado');
|
|
300
|
+
}
|
|
301
|
+
const searchData = await searchResponse.json();
|
|
302
|
+
const doc = searchData.documents?.find(d => d.slug === args.slug);
|
|
303
|
+
if (!doc) {
|
|
304
|
+
return errorResponse('Documento não encontrado', `Nenhum documento com slug "${args.slug}" foi encontrado.`);
|
|
305
|
+
}
|
|
306
|
+
// Update the document's published status
|
|
307
|
+
const updateResponse = await docclerRequest(`/documents/${doc.id}`, {
|
|
308
|
+
method: 'PUT',
|
|
309
|
+
body: JSON.stringify({ published: args.publish }),
|
|
310
|
+
});
|
|
311
|
+
if (!updateResponse.ok) {
|
|
312
|
+
const errorData = await updateResponse.json().catch(() => ({}));
|
|
313
|
+
throw new Error(errorData.error || 'Erro ao atualizar documento');
|
|
314
|
+
}
|
|
315
|
+
const status = args.publish ? '🟢 Publicado' : '🟡 Rascunho';
|
|
316
|
+
const action = args.publish ? 'publicado' : 'despublicado';
|
|
317
|
+
return successResponse([
|
|
318
|
+
`✅ Documento ${action} com sucesso!`,
|
|
319
|
+
'',
|
|
320
|
+
`📄 Título: ${doc.title}`,
|
|
321
|
+
`🔗 Slug: ${doc.slug}`,
|
|
322
|
+
`📊 Novo status: ${status}`,
|
|
323
|
+
'',
|
|
324
|
+
`📝 Editar: ${getDocumentUrl(doc.slug)}`,
|
|
325
|
+
].join('\n'));
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
return errorResponse('Erro ao alterar status do documento', error instanceof Error ? error.message : 'Erro desconhecido');
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
// ============================================
|
|
332
|
+
// TOOL: list_spaces
|
|
333
|
+
// List all spaces (document categories)
|
|
334
|
+
// ============================================
|
|
335
|
+
server.tool('list_spaces', 'List all available spaces (document categories) in Doccler', {}, async () => {
|
|
336
|
+
if (!DOCCLER_API_KEY) {
|
|
337
|
+
return errorResponse('DOCCLER_API_KEY não configurada', 'Configure a variável de ambiente na sua IDE.');
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const response = await docclerRequest('/documents');
|
|
341
|
+
if (!response.ok) {
|
|
342
|
+
throw new Error(`API Error: ${response.status}`);
|
|
343
|
+
}
|
|
344
|
+
const data = await response.json();
|
|
345
|
+
// Extract unique spaces from documents
|
|
346
|
+
const spaces = new Set();
|
|
347
|
+
data.documents?.forEach(doc => {
|
|
348
|
+
const docAny = doc;
|
|
349
|
+
if (docAny.space) {
|
|
350
|
+
spaces.add(docAny.space);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
if (spaces.size === 0) {
|
|
354
|
+
return successResponse([
|
|
355
|
+
'📁 Nenhum espaço encontrado.',
|
|
356
|
+
'',
|
|
357
|
+
'Os espaços são criados automaticamente quando você atribui um documento a um espaço.',
|
|
358
|
+
'Use a ferramenta create_doc com o parâmetro space para criar um novo espaço.',
|
|
359
|
+
].join('\n'));
|
|
360
|
+
}
|
|
361
|
+
const spaceList = Array.from(spaces)
|
|
362
|
+
.map(s => `📂 ${s}`)
|
|
363
|
+
.join('\n');
|
|
364
|
+
return successResponse([
|
|
365
|
+
`📁 Espaços Disponíveis (${spaces.size}):`,
|
|
366
|
+
'',
|
|
367
|
+
spaceList,
|
|
368
|
+
].join('\n'));
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
return errorResponse('Erro ao listar espaços', error instanceof Error ? error.message : 'Erro desconhecido');
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
// ============================================
|
|
375
|
+
// TOOL: get_doc
|
|
376
|
+
// Get a specific document by slug
|
|
377
|
+
// ============================================
|
|
378
|
+
server.tool('get_doc', 'Get the content of a specific Doccler document', {
|
|
379
|
+
slug: z.string().describe('The slug (URL identifier) of the document'),
|
|
380
|
+
}, async (args) => {
|
|
381
|
+
if (!DOCCLER_API_KEY) {
|
|
382
|
+
return errorResponse('DOCCLER_API_KEY não configurada', 'Configure a variável de ambiente na sua IDE.');
|
|
383
|
+
}
|
|
384
|
+
try {
|
|
385
|
+
const response = await docclerRequest(`/documents/search?q=${encodeURIComponent(args.slug)}&limit=10`);
|
|
386
|
+
if (!response.ok) {
|
|
387
|
+
throw new Error(`API Error: ${response.status}`);
|
|
388
|
+
}
|
|
389
|
+
const data = await response.json();
|
|
390
|
+
const doc = data.documents?.find(d => d.slug === args.slug);
|
|
391
|
+
if (!doc) {
|
|
392
|
+
return errorResponse('Documento não encontrado', `Nenhum documento com slug "${args.slug}" foi encontrado.`);
|
|
393
|
+
}
|
|
394
|
+
const docAny = doc;
|
|
395
|
+
const content = doc.markdown || doc.content || '(Documento sem conteúdo)';
|
|
396
|
+
return successResponse([
|
|
397
|
+
`📄 ${doc.title}`,
|
|
398
|
+
'',
|
|
399
|
+
`🔗 Slug: ${doc.slug}`,
|
|
400
|
+
`📊 Status: ${doc.published ? '🟢 Publicado' : '🟡 Rascunho'}`,
|
|
401
|
+
docAny.space ? `📁 Espaço: ${docAny.space}` : '',
|
|
402
|
+
`📝 Última atualização: ${new Date(doc.updated_at).toLocaleString('pt-BR')}`,
|
|
403
|
+
'',
|
|
404
|
+
'---',
|
|
405
|
+
'',
|
|
406
|
+
content,
|
|
407
|
+
'',
|
|
408
|
+
'---',
|
|
409
|
+
`📝 Editar: ${getDocumentUrl(doc.slug)}`,
|
|
410
|
+
].filter(Boolean).join('\n'));
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
return errorResponse('Erro ao buscar documento', error instanceof Error ? error.message : 'Erro desconhecido');
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
// ============================================
|
|
417
|
+
// RESOURCE: docs://list
|
|
418
|
+
// List all available documentation
|
|
419
|
+
// ============================================
|
|
420
|
+
server.resource('docs://list', 'List all your Doccler documentation', async (uri) => {
|
|
421
|
+
if (!DOCCLER_API_KEY) {
|
|
422
|
+
return {
|
|
423
|
+
contents: [
|
|
424
|
+
{
|
|
425
|
+
uri: uri.href,
|
|
426
|
+
mimeType: 'text/plain',
|
|
427
|
+
text: 'Error: DOCCLER_API_KEY not configured',
|
|
428
|
+
},
|
|
429
|
+
],
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
const response = await docclerRequest('/documents');
|
|
434
|
+
if (!response.ok) {
|
|
435
|
+
throw new Error(`API Error: ${response.status}`);
|
|
436
|
+
}
|
|
437
|
+
const data = await response.json();
|
|
438
|
+
const docList = data.documents?.map((doc) => `- ${doc.title} (${doc.slug}) - ${doc.published ? 'Published' : 'Draft'}`).join('\n') || 'No documents found';
|
|
439
|
+
return {
|
|
440
|
+
contents: [
|
|
441
|
+
{
|
|
442
|
+
uri: uri.href,
|
|
443
|
+
mimeType: 'text/plain',
|
|
444
|
+
text: `📚 Your Doccler Documentation:\n\n${docList}`,
|
|
445
|
+
},
|
|
446
|
+
],
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
catch (error) {
|
|
450
|
+
return {
|
|
451
|
+
contents: [
|
|
452
|
+
{
|
|
453
|
+
uri: uri.href,
|
|
454
|
+
mimeType: 'text/plain',
|
|
455
|
+
text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
456
|
+
},
|
|
457
|
+
],
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
// ============================================
|
|
462
|
+
// PROMPT: document_code
|
|
463
|
+
// Pre-built prompt for documenting code
|
|
464
|
+
// ============================================
|
|
465
|
+
server.prompt('document_code', 'Generate comprehensive documentation for code', {
|
|
466
|
+
code: z.string().describe('The code to document'),
|
|
467
|
+
language: z.string().optional().describe('Programming language'),
|
|
468
|
+
}, async (args) => {
|
|
469
|
+
return {
|
|
470
|
+
messages: [
|
|
471
|
+
{
|
|
472
|
+
role: 'user',
|
|
473
|
+
content: {
|
|
474
|
+
type: 'text',
|
|
475
|
+
text: [
|
|
476
|
+
'Please analyze and document the following code:',
|
|
477
|
+
'',
|
|
478
|
+
`\`\`\`${args.language || ''}`,
|
|
479
|
+
args.code,
|
|
480
|
+
'```',
|
|
481
|
+
'',
|
|
482
|
+
'Generate comprehensive documentation that includes:',
|
|
483
|
+
'1. Overview of what the code does',
|
|
484
|
+
'2. Function/method descriptions with parameters and return values',
|
|
485
|
+
'3. Usage examples',
|
|
486
|
+
'4. Any important notes or warnings',
|
|
487
|
+
].join('\n'),
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
],
|
|
491
|
+
};
|
|
492
|
+
});
|
|
493
|
+
// Connect transport and start server
|
|
494
|
+
const transport = new StdioServerTransport();
|
|
495
|
+
console.error(`[${SERVER_NAME}] Starting server v${SERVER_VERSION}...`);
|
|
496
|
+
await server.connect(transport);
|
|
497
|
+
console.error(`[${SERVER_NAME}] Server connected and ready!`);
|
|
498
|
+
}
|
|
499
|
+
// Run the server
|
|
500
|
+
main().catch((error) => {
|
|
501
|
+
console.error('Fatal error:', error);
|
|
502
|
+
process.exit(1);
|
|
503
|
+
});
|
|
504
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@doccler/mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Doccler MCP Server - Connect your IDE to your documentation platform",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"doccler-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsx src/index.ts",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mcp",
|
|
23
|
+
"model-context-protocol",
|
|
24
|
+
"doccler",
|
|
25
|
+
"documentation",
|
|
26
|
+
"ai",
|
|
27
|
+
"ide",
|
|
28
|
+
"cursor",
|
|
29
|
+
"vscode",
|
|
30
|
+
"claude"
|
|
31
|
+
],
|
|
32
|
+
"author": "Doccler <hello@doccler.com>",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/doccler/mcp-server"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://doccler.com",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/doccler/mcp-server/issues"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
44
|
+
"zod": "^3.25.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^20.0.0",
|
|
48
|
+
"tsx": "^4.19.0",
|
|
49
|
+
"typescript": "^5.0.0"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18.0.0"
|
|
53
|
+
},
|
|
54
|
+
"publishConfig": {
|
|
55
|
+
"access": "public"
|
|
56
|
+
}
|
|
57
|
+
}
|