Skip to main content
Glama
stdio.ts2.81 kB
#!/usr/bin/env node /** * SiYuan MCP Server - Stdio Transport * * 通过标准输入输出通信的 MCP 服务器 * * Usage: * node stdio.js --token <API_TOKEN> [--baseUrl <BASE_URL>] * * Example: * node stdio.js --token YOUR_API_TOKEN --baseUrl http://127.0.0.1:6806 */ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { SiyuanMCPServer } from '../core/server.js'; import type { ServerConfig } from '../core/types.js'; /** * 解析命令行参数 */ function parseArgs(): Partial<ServerConfig> { const args = process.argv.slice(2); const config: Partial<ServerConfig> = {}; for (let i = 0; i < args.length; i++) { switch (args[i]) { case '--token': if (i + 1 < args.length) { config.token = args[++i]; } break; case '--baseUrl': if (i + 1 < args.length) { config.baseUrl = args[++i]; } break; case '--help': case '-h': printHelp(); process.exit(0); } } return config; } /** * 打印帮助信息 */ function printHelp(): void { console.error(` SiYuan MCP Server (Stdio Transport) Usage: node stdio.js --token <API_TOKEN> [OPTIONS] Required: --token <string> SiYuan API token Options: --baseUrl <string> SiYuan base URL (default: http://127.0.0.1:6806) --help, -h Show this help message Example: node stdio.js --token YOUR_API_TOKEN node stdio.js --token YOUR_API_TOKEN --baseUrl http://192.168.1.100:6806 `); } /** * 主函数 */ async function main() { const config = parseArgs(); // 验证必需参数 if (!config.token) { console.error('Error: --token is required\n'); printHelp(); process.exit(1); } // 设置默认值 const serverConfig: ServerConfig = { token: config.token, baseUrl: config.baseUrl || 'http://127.0.0.1:6806', name: 'siyuan-mcp-server-stdio', version: '0.1.0', }; // 创建服务器 const server = new SiyuanMCPServer(serverConfig); const logger = server.getLogger(); // 创建 Stdio 传输层 const transport = new StdioServerTransport(); // 连接服务器 await server.getMCPServer().connect(transport); logger.info('SiYuan MCP Server started (Stdio transport)'); logger.info(`Base URL: ${serverConfig.baseUrl}`); logger.info(`Token: ${serverConfig.token.substring(0, 8)}...`); logger.info(`Registered ${server.getRegistry().getAll().length} tools`); } // 错误处理 process.on('unhandledRejection', (error) => { console.error('Unhandled rejection:', error); process.exit(1); }); process.on('SIGINT', () => { console.error('\nShutting down...'); process.exit(0); }); // 启动服务器 main().catch((error) => { console.error('Fatal error:', error); process.exit(1); });

Latest Blog Posts

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/porkll/siyuan-mcp'

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