mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-15 02:20:38 +09:00
30 lines
994 B
TypeScript
30 lines
994 B
TypeScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
import { PaperclipApiClient } from "./client.js";
|
|
import { readConfigFromEnv, type PaperclipMcpConfig } from "./config.js";
|
|
import { createToolDefinitions } from "./tools.js";
|
|
|
|
export function createPaperclipMcpServer(config: PaperclipMcpConfig = readConfigFromEnv()) {
|
|
const server = new McpServer({
|
|
name: "paperclip",
|
|
version: "0.1.0",
|
|
});
|
|
|
|
const client = new PaperclipApiClient(config);
|
|
const tools = createToolDefinitions(client);
|
|
for (const tool of tools) {
|
|
server.tool(tool.name, tool.description, tool.schema.shape, tool.execute);
|
|
}
|
|
|
|
return {
|
|
server,
|
|
tools,
|
|
client,
|
|
};
|
|
}
|
|
|
|
export async function runServer(config: PaperclipMcpConfig = readConfigFromEnv()) {
|
|
const { server } = createPaperclipMcpServer(config);
|
|
const transport = new StdioServerTransport();
|
|
await server.connect(transport);
|
|
}
|