Skip to main content
Glama

MCP-Server-Inbox

by maoruibin
index.ts3.82 kB
#!/usr/bin/env node /** * MCP-Server-Inbox - An MCP server for creating notes in inBox. * This service connects to inBox API and allows creating notes through MCP. */ import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { InboxClient } from "./inbox.js"; /** * Parse command line arguments * Example: node index.js --inbox_user_token=your_token */ function parseArgs() { const args: Record<string, string> = {}; process.argv.slice(2).forEach((arg) => { if (arg.startsWith("--")) { const [key, value] = arg.slice(2).split("="); if (key && value) { args[key] = value; } } }); return args; } // 解析命令行参数 const args = parseArgs(); /** * Create an MCP server with capabilities for tools (to create notes in inBox). */ const server = new Server( { name: "mcp-server-inbox", version: "0.1.0", description: "MCP服务对接inBox笔记API,实现对话形式创建笔记功能" }, { capabilities: { tools: {}, }, } ); /** * Handler that lists available tools. * Exposes a single "write_note" tool that lets clients create notes in inBox. */ server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "write_note", description: "Write note to inBox", inputSchema: { type: "object", properties: { title: { type: "string", description: "Optional title of the note", }, content: { type: "string", description: "Text content of the note with markdown format", }, }, required: ["content"], }, }, ], }; }); /** * Handler for the write_note tool. * Creates a new note in inBox with the provided content. */ server.setRequestHandler(CallToolRequestSchema, async (request) => { switch (request.params.name) { case "write_note": { const content = String(request.params.arguments?.content); const title = request.params.arguments?.title ? String(request.params.arguments.title) : undefined; if (!content) { throw new Error("Content is required"); } // 获取用户Token,优先使用命令行参数,其次使用环境变量 const userToken = args.inbox_user_token || process.env.INBOX_USER_TOKEN; if (!userToken) { throw new Error("inBox token or URL not set. Please provide it via:\n" + "1. Token format: --inbox_user_token=your_token\n" + "2. URL format: --inbox_user_token=https://inbox.gudong.site/api/inbox/your_token"); } // 创建inBox客户端并写入笔记 const inbox = new InboxClient({ userToken }); const result = await inbox.writeNote({ title, content }); // 返回成功信息 let successMessage = `笔记已成功保存到inBox!`; if (title) { successMessage += `\n\n标题: ${title}`; } successMessage += `\n\n${content.substring(0, 50)}${content.length > 50 ? '...' : ''}`; return { content: [ { type: "text", text: successMessage }, ], }; } default: throw new Error("Unknown tool"); } }); /** * Start the server using stdio transport. * This allows the server to communicate via standard input/output streams. */ async function main() { const transport = new StdioServerTransport(); await server.connect(transport); } main().catch((error) => { console.error("Server error:", error); process.exit(1); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/maoruibin/mcp-server-inbox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server