airweave-mcp-search 0.6.48 โ 0.6.49
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 +80 -10
- package/build/index-http.d.ts +3 -0
- package/build/index-http.d.ts.map +1 -0
- package/build/index-http.js +113 -0
- package/build/index-http.js.map +1 -0
- package/build/server.d.ts +1 -0
- package/build/server.d.ts.map +1 -1
- package/build/server.js +10 -0
- package/build/server.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -14,23 +14,43 @@ An MCP (Model Context Protocol) server that provides comprehensive search capabi
|
|
|
14
14
|
- ๐งช **Comprehensive Testing**: Full test suite with LLM testing strategy
|
|
15
15
|
- ๐๏ธ **Simple Architecture**: Clean, maintainable code structure without over-engineering
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Deployment Modes
|
|
18
|
+
|
|
19
|
+
This MCP server supports two deployment modes:
|
|
20
|
+
|
|
21
|
+
### 1. Local Mode (Desktop AI Clients)
|
|
22
|
+
|
|
23
|
+
For **Claude Desktop, Cursor, and other desktop AI assistants**:
|
|
24
|
+
- Uses stdio transport (standard input/output)
|
|
25
|
+
- Runs as a subprocess on the user's machine
|
|
26
|
+
- Installed via npm package
|
|
27
|
+
|
|
28
|
+
### 2. Hosted Mode (Cloud AI Platforms)
|
|
29
|
+
|
|
30
|
+
For **OpenAI AgentBuilder and cloud-based AI platforms**:
|
|
31
|
+
- Uses HTTP/SSE transport (Server-Sent Events)
|
|
32
|
+
- Deployed to Azure Kubernetes Service
|
|
33
|
+
- Accessible via `https://mcp.airweave.ai`
|
|
34
|
+
|
|
35
|
+
See [DEPLOYMENT.md](./DEPLOYMENT.md) for detailed hosting instructions.
|
|
36
|
+
|
|
37
|
+
## Quick Start (Local Mode)
|
|
18
38
|
|
|
19
39
|
### Installation from npm
|
|
20
40
|
|
|
21
|
-
The easiest way to use this server is via npx:
|
|
41
|
+
The easiest way to use this server locally is via npx:
|
|
22
42
|
|
|
23
43
|
```bash
|
|
24
44
|
npx airweave-mcp-search
|
|
25
45
|
```
|
|
26
46
|
|
|
27
|
-
### Installation from
|
|
28
|
-
THIS IS NOT CORRECT, THE MCP IS NOT A SEPARATE REPO YET
|
|
29
|
-
|
|
30
|
-
You can also install directly from the GitHub repository:
|
|
47
|
+
### Installation from Source
|
|
31
48
|
|
|
32
49
|
```bash
|
|
33
|
-
|
|
50
|
+
cd mcp
|
|
51
|
+
npm install
|
|
52
|
+
npm run build
|
|
53
|
+
npm run start
|
|
34
54
|
```
|
|
35
55
|
|
|
36
56
|
## Configuration
|
|
@@ -251,27 +271,51 @@ npm install
|
|
|
251
271
|
npm run build
|
|
252
272
|
```
|
|
253
273
|
|
|
254
|
-
4. Run locally:
|
|
274
|
+
4. Run locally (stdio mode):
|
|
255
275
|
```bash
|
|
256
276
|
AIRWEAVE_API_KEY=your-key AIRWEAVE_COLLECTION=your-collection npm run start
|
|
257
277
|
```
|
|
258
278
|
|
|
279
|
+
5. Run locally (HTTP mode):
|
|
280
|
+
```bash
|
|
281
|
+
AIRWEAVE_API_KEY=your-key AIRWEAVE_COLLECTION=your-collection npm run start:http
|
|
282
|
+
```
|
|
283
|
+
|
|
259
284
|
### Development Workflow
|
|
260
285
|
|
|
261
286
|
```bash
|
|
262
|
-
# Build and run
|
|
287
|
+
# Build and run (stdio mode for desktop clients)
|
|
263
288
|
npm run dev
|
|
264
289
|
|
|
290
|
+
# Build and run (HTTP mode for testing cloud deployment)
|
|
291
|
+
npm run dev:http
|
|
292
|
+
|
|
265
293
|
# Build only
|
|
266
294
|
npm run build
|
|
267
295
|
|
|
268
|
-
# Run
|
|
296
|
+
# Run stdio version
|
|
269
297
|
npm run start
|
|
270
298
|
|
|
299
|
+
# Run HTTP version
|
|
300
|
+
npm run start:http
|
|
301
|
+
|
|
271
302
|
# Run tests
|
|
272
303
|
npm test
|
|
273
304
|
```
|
|
274
305
|
|
|
306
|
+
### Testing HTTP Mode Locally
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# Start HTTP server
|
|
310
|
+
AIRWEAVE_API_KEY=your-key AIRWEAVE_COLLECTION=your-collection npm run start:http
|
|
311
|
+
|
|
312
|
+
# In another terminal, test health endpoint
|
|
313
|
+
curl http://localhost:8080/health
|
|
314
|
+
|
|
315
|
+
# Test SSE endpoint
|
|
316
|
+
curl http://localhost:8080/sse
|
|
317
|
+
```
|
|
318
|
+
|
|
275
319
|
## Error Handling
|
|
276
320
|
|
|
277
321
|
The server provides detailed error messages for common issues:
|
|
@@ -319,6 +363,31 @@ For debugging, you can check the stderr output where the server logs its startup
|
|
|
319
363
|
# "Base URL: https://api.airweave.ai"
|
|
320
364
|
```
|
|
321
365
|
|
|
366
|
+
## Deployment to Production
|
|
367
|
+
|
|
368
|
+
For hosting the MCP server for cloud-based AI platforms:
|
|
369
|
+
|
|
370
|
+
1. **See [DEPLOYMENT.md](./DEPLOYMENT.md)** for comprehensive deployment guide
|
|
371
|
+
2. **Docker**: Uses provided Dockerfile for containerization
|
|
372
|
+
3. **Kubernetes**: Helm charts available in `/infra-core/helm/airweave/`
|
|
373
|
+
4. **Hosted URLs**:
|
|
374
|
+
- Development: `https://mcp.dev-airweave.com`
|
|
375
|
+
- Production: `https://mcp.airweave.ai`
|
|
376
|
+
|
|
377
|
+
Quick deployment:
|
|
378
|
+
```bash
|
|
379
|
+
# Build Docker image
|
|
380
|
+
docker build -t airweavecoreacr.azurecr.io/mcp:v1.0.0 .
|
|
381
|
+
|
|
382
|
+
# Push to Azure Container Registry
|
|
383
|
+
az acr login --name airweavecoreacr
|
|
384
|
+
docker push airweavecoreacr.azurecr.io/mcp:v1.0.0
|
|
385
|
+
|
|
386
|
+
# Deploy with Helm
|
|
387
|
+
cd /infra-core
|
|
388
|
+
./helm-upgrade.sh prd v1.0.0 airweave true
|
|
389
|
+
```
|
|
390
|
+
|
|
322
391
|
## License
|
|
323
392
|
|
|
324
393
|
MIT License - see LICENSE file for details.
|
|
@@ -327,5 +396,6 @@ MIT License - see LICENSE file for details.
|
|
|
327
396
|
|
|
328
397
|
For issues and questions:
|
|
329
398
|
- Check the [Airweave documentation](https://docs.airweave.ai)
|
|
399
|
+
- See [DEPLOYMENT.md](./DEPLOYMENT.md) for deployment issues
|
|
330
400
|
- Open an issue on GitHub
|
|
331
401
|
- Contact your Airweave administrator for API key and access issues
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-http.d.ts","sourceRoot":"","sources":["../src/index-http.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// HTTP/SSE entry point for the Airweave MCP Search Server
|
|
3
|
+
// This version is designed to be deployed as a service for cloud-based AI assistants
|
|
4
|
+
import express from "express";
|
|
5
|
+
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
6
|
+
import { createMcpServer, validateHttpEnvironment } from "./server.js";
|
|
7
|
+
// Validate environment variables and get configuration
|
|
8
|
+
// Note: API key comes from client, not server environment
|
|
9
|
+
const config = validateHttpEnvironment();
|
|
10
|
+
// Get port from environment or default to 8080
|
|
11
|
+
const PORT = process.env.PORT || 8080;
|
|
12
|
+
// Create Express app
|
|
13
|
+
const app = express();
|
|
14
|
+
// Health check endpoint
|
|
15
|
+
app.get("/health", (_req, res) => {
|
|
16
|
+
res.json({
|
|
17
|
+
status: "healthy",
|
|
18
|
+
collection: config.collection,
|
|
19
|
+
baseUrl: config.baseUrl,
|
|
20
|
+
timestamp: new Date().toISOString(),
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
// Root endpoint with server info
|
|
24
|
+
app.get("/", (_req, res) => {
|
|
25
|
+
res.json({
|
|
26
|
+
name: "Airweave MCP Search Server",
|
|
27
|
+
version: "2.1.0",
|
|
28
|
+
collection: config.collection,
|
|
29
|
+
transport: "SSE",
|
|
30
|
+
endpoints: {
|
|
31
|
+
health: "/health",
|
|
32
|
+
sse: "/sse",
|
|
33
|
+
},
|
|
34
|
+
authentication: {
|
|
35
|
+
required: true,
|
|
36
|
+
methods: [
|
|
37
|
+
"Authorization: Bearer <your-api-key> (recommended for OpenAI Agent Builder)",
|
|
38
|
+
"X-API-Key: <your-api-key>",
|
|
39
|
+
"Query parameter: ?apiKey=your-key",
|
|
40
|
+
"Query parameter: ?api_key=your-key"
|
|
41
|
+
],
|
|
42
|
+
openai_agent_builder: {
|
|
43
|
+
url: "https://mcp.dev-airweave.com/sse",
|
|
44
|
+
headers: {
|
|
45
|
+
Authorization: "Bearer <your-airweave-api-key>"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
instructions: "Provide your Airweave API key using one of the methods above when connecting to /sse"
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
// SSE endpoint for MCP protocol
|
|
53
|
+
app.get("/sse", async (req, res) => {
|
|
54
|
+
console.error(`[${new Date().toISOString()}] New SSE connection from ${req.ip}`);
|
|
55
|
+
// Extract API key from request headers or query parameters
|
|
56
|
+
const apiKey = req.headers['x-api-key'] ||
|
|
57
|
+
req.headers['authorization']?.replace('Bearer ', '') ||
|
|
58
|
+
req.query.apiKey ||
|
|
59
|
+
req.query.api_key;
|
|
60
|
+
if (!apiKey) {
|
|
61
|
+
console.error(`[${new Date().toISOString()}] Missing API key in SSE request`);
|
|
62
|
+
res.status(401).json({
|
|
63
|
+
error: "Authentication required",
|
|
64
|
+
message: "Please provide an API key via X-API-Key header, Authorization header, or apiKey query parameter"
|
|
65
|
+
});
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Create full config with client's API key
|
|
69
|
+
const fullConfig = {
|
|
70
|
+
...config,
|
|
71
|
+
apiKey
|
|
72
|
+
};
|
|
73
|
+
// Create a new MCP server instance for this connection
|
|
74
|
+
const server = createMcpServer(fullConfig);
|
|
75
|
+
// Create SSE transport
|
|
76
|
+
const transport = new SSEServerTransport("/message", res);
|
|
77
|
+
// Connect server to transport
|
|
78
|
+
await server.connect(transport);
|
|
79
|
+
console.error(`[${new Date().toISOString()}] MCP server connected via SSE`);
|
|
80
|
+
// Handle connection close
|
|
81
|
+
req.on("close", () => {
|
|
82
|
+
console.error(`[${new Date().toISOString()}] SSE connection closed`);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
// POST endpoint for client messages (required by SSE transport)
|
|
86
|
+
app.post("/message", express.json(), async (req, res) => {
|
|
87
|
+
// The SSE transport handles this internally
|
|
88
|
+
// This endpoint is registered but the actual handling is done by the transport
|
|
89
|
+
res.status(200).send();
|
|
90
|
+
});
|
|
91
|
+
// Error handling middleware
|
|
92
|
+
app.use((err, _req, res, _next) => {
|
|
93
|
+
console.error("Server error:", err);
|
|
94
|
+
res.status(500).json({ error: "Internal server error" });
|
|
95
|
+
});
|
|
96
|
+
// Start the server
|
|
97
|
+
app.listen(PORT, () => {
|
|
98
|
+
console.error(`Airweave MCP Search Server (HTTP/SSE) started`);
|
|
99
|
+
console.error(`Collection: ${config.collection}`);
|
|
100
|
+
console.error(`Base URL: ${config.baseUrl}`);
|
|
101
|
+
console.error(`Listening on port: ${PORT}`);
|
|
102
|
+
console.error(`SSE endpoint: http://localhost:${PORT}/sse`);
|
|
103
|
+
});
|
|
104
|
+
// Handle graceful shutdown
|
|
105
|
+
process.on("SIGINT", () => {
|
|
106
|
+
console.error("Shutting down Airweave MCP HTTP server...");
|
|
107
|
+
process.exit(0);
|
|
108
|
+
});
|
|
109
|
+
process.on("SIGTERM", () => {
|
|
110
|
+
console.error("Shutting down Airweave MCP HTTP server...");
|
|
111
|
+
process.exit(0);
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=index-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-http.js","sourceRoot":"","sources":["../src/index-http.ts"],"names":[],"mappings":"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"}
|
package/build/server.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import { AirweaveConfig } from "./api/types.js";
|
|
3
3
|
export declare function createMcpServer(config: AirweaveConfig): McpServer;
|
|
4
4
|
export declare function validateEnvironment(): AirweaveConfig;
|
|
5
|
+
export declare function validateHttpEnvironment(): Omit<AirweaveConfig, 'apiKey'>;
|
|
5
6
|
//# sourceMappingURL=server.d.ts.map
|
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,aAoCrD;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAgBpD"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,aAoCrD;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAgBpD;AAGD,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAUxE"}
|
package/build/server.js
CHANGED
|
@@ -39,4 +39,14 @@ export function validateEnvironment() {
|
|
|
39
39
|
}
|
|
40
40
|
return { apiKey, collection, baseUrl };
|
|
41
41
|
}
|
|
42
|
+
// Validate environment for HTTP/SSE server (API key comes from client, not environment)
|
|
43
|
+
export function validateHttpEnvironment() {
|
|
44
|
+
const collection = process.env.AIRWEAVE_COLLECTION;
|
|
45
|
+
const baseUrl = process.env.AIRWEAVE_BASE_URL || DEFAULT_BASE_URL;
|
|
46
|
+
if (!collection) {
|
|
47
|
+
console.error(ERROR_MESSAGES.MISSING_COLLECTION);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
return { collection, baseUrl };
|
|
51
|
+
}
|
|
42
52
|
//# sourceMappingURL=server.js.map
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,MAAsB;IAClD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO,EAAE,kDAAkD;QACpE,YAAY,EAAE;YACV,KAAK,EAAE,EAAE;SACZ;KACJ,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC;IAE/C,6BAA6B;IAC7B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAElD,eAAe;IACf,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhG,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACP,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,OAAO,CACrB,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,OAAO,CACrB,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,gBAAgB,CAAC;IAElE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,MAAsB;IAClD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO,EAAE,kDAAkD;QACpE,YAAY,EAAE;YACV,KAAK,EAAE,EAAE;SACZ;KACJ,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC;IAE/C,6BAA6B;IAC7B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAElD,eAAe;IACf,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhG,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACP,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,OAAO,CACrB,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,OAAO,CACrB,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,gBAAgB,CAAC;IAElE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,uBAAuB;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,gBAAgB,CAAC;IAElE,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "airweave-mcp-search",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.49",
|
|
4
4
|
"description": "MCP server for searching Airweave collections",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc && chmod 755 build/index.js",
|
|
12
12
|
"start": "node build/index.js",
|
|
13
|
+
"start:http": "node build/index-http.js",
|
|
13
14
|
"dev": "npm run build && npm run start",
|
|
15
|
+
"dev:http": "npm run build && npm run start:http",
|
|
14
16
|
"test": "vitest run",
|
|
15
17
|
"test:watch": "vitest",
|
|
16
18
|
"test:coverage": "vitest run --coverage",
|
|
@@ -46,9 +48,11 @@
|
|
|
46
48
|
"dependencies": {
|
|
47
49
|
"@airweave/sdk": "^0.5.4",
|
|
48
50
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
51
|
+
"express": "^4.18.2",
|
|
49
52
|
"zod": "^3.23.8"
|
|
50
53
|
},
|
|
51
54
|
"devDependencies": {
|
|
55
|
+
"@types/express": "^4.17.21",
|
|
52
56
|
"@types/node": "^22.10.7",
|
|
53
57
|
"@vitest/coverage-v8": "^2.0.0",
|
|
54
58
|
"typescript": "^5.7.3",
|