MCPcopy Create free account
hub / github.com/docsagent/docsagent / startMcpServer

Method startMcpServer

src/index.ts:255–292  ·  view source on GitHub ↗

* Starts an MCP server instance using this DocsAgent engine.

()

Source from the content-addressed store, hash-verified

253 * Starts an MCP server instance using this DocsAgent engine.
254 */
255 public async startMcpServer() {
256 await this.readyPromise;
257 const server = new McpServer({
258 name: "DocsAgent",
259 version: "1.1.0",
260 });
261
262 server.tool(
263 "search",
264 { query: z.string().describe("The search query for local documents") },
265 async ({ query }) => {
266 try {
267 const results = await this.search(query);
268 if (results.length === 0) return { content: [{ type: "text", text: "No results found." }] };
269 const formatted = results.map(r => `[Score: ${r.score.toFixed(2)}]${r.path ? ` ${r.path}` : ""}${r.page ? ` (P${r.page})` : ""}\nContext: ${r.context}`).join("\n\n");
270 return { content: [{ type: "text", text: formatted }] };
271 } catch (error: any) {
272 return { content: [{ type: "text", text: error.message }], isError: true };
273 }
274 }
275 );
276
277 server.tool(
278 "add_docs",
279 { dir: z.string().describe("The directory or file path to add") },
280 async ({ dir }) => {
281 try {
282 await this.add(dir);
283 return { content: [{ type: "text", text: `Added ${dir}` }] };
284 } catch (error: any) {
285 return { content: [{ type: "text", text: error.message }], isError: true };
286 }
287 }
288 );
289
290 const transport = new StdioServerTransport();
291 await server.connect(transport);
292 }
293}

Callers 1

mainFunction · 0.95

Calls 2

searchMethod · 0.95
addMethod · 0.95

Tested by

no test coverage detected