initial-commit (#1)
Reviewed-on: #1 Co-authored-by: Timo Behrendt <t.behrendt@t00n.de> Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
This commit was merged in pull request #1.
This commit is contained in:
44
src/outline.ts
Normal file
44
src/outline.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||
|
||||
import config from "./config";
|
||||
import { CollectionsApi, Configuration, DocumentsApi } from "./gen/api/outline";
|
||||
import { registerCollectionTools } from "./tools/collection";
|
||||
import { registerDocumentTools } from "./tools/document";
|
||||
|
||||
import type { Logger } from "pino";
|
||||
|
||||
const createOutlineClient = (baseUrl: string, apiKey: string, logger: Logger) => {
|
||||
const config = new Configuration({
|
||||
basePath: baseUrl,
|
||||
accessToken: () => Promise.resolve(apiKey),
|
||||
middleware: [
|
||||
{
|
||||
pre: async (request) => {
|
||||
logger.debug({ request }, "Request");
|
||||
return request;
|
||||
},
|
||||
post: async (context) => {
|
||||
logger.debug({ context }, "Response");
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
return {
|
||||
documents: new DocumentsApi(config),
|
||||
collections: new CollectionsApi(config),
|
||||
};
|
||||
};
|
||||
|
||||
export const outlineMcpFactory = (logger: Logger) => {
|
||||
const server = new McpServer({
|
||||
name: "outline-mcp",
|
||||
version: "1.0.0",
|
||||
});
|
||||
|
||||
const client = createOutlineClient(config.baseUrl, config.apiKey, logger);
|
||||
registerDocumentTools(server, client.documents, logger);
|
||||
registerCollectionTools(server, client.collections, logger);
|
||||
|
||||
return server;
|
||||
};
|
||||
Reference in New Issue
Block a user