Skip to main content
Glama
index.ts3.67 kB
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; // https://www.npmjs.com/package/@modelcontextprotocol/sdk import { z } from 'zod'; import { AppConfig } from './config/AppConfig.js'; import { ProjectRepository } from './repositories/ProjectRepository.js'; import { ProjectService } from './services/ProjectService.js'; import { WallpaperService } from './services/WallpaperService.js'; import { ProjectController } from './controllers/ProjectController.js'; import { WallpaperController } from './controllers/WallpaperController.js'; export type * from "./config/AppConfig"; export type * from "./controllers/ProjectController" export type * from "./controllers/WallpaperController.ts" export type * from "./models/Project.ts" export type * from "./repositories/ProjectRepository.ts" // 创建MCP服务器实例 const server = new McpServer({ name: AppConfig.SERVER_NAME, version: AppConfig.SERVER_VERSION, }); // 初始化依赖注入 const projectRepository = new ProjectRepository(); const projectService = new ProjectService(projectRepository); const wallpaperService = new WallpaperService(); const projectController = new ProjectController(projectService); const wallpaperController = new WallpaperController(wallpaperService); // 注册项目查询工具 server.tool( 'get_project_info', '根据项目名称查询项目基本信息,包括开始日期、简介、投资金额和当前进度', { projectName: z.string().describe('要查询的项目名称'), }, async ({ projectName }) => { return await projectController.getProjectInfo(projectName); } ); // 获取项目总数 server.tool( 'get_project_count', '获取项目总数', {}, async () => { return projectController.getProjectCount(); } ); // 获取全部项目 server.tool( 'get_project_all', '获取全部项目', {}, async () => { return projectController.getAllProjects(); } ); // 新增项目 server.tool( 'add_project', '新增项目', { project: z.object({ name: z.string().describe('项目名称'), description: z.string().describe('项目描述'), startDate: z.string().describe('开始日期'), investment: z.number().describe('投资金额'), progress: z.number().describe('当前进度'), }), }, async ({ project }) => { return await projectController.addProject(project); } ); // 随机获取壁纸工具 server.tool( 'get_random_wallpaper', '从Bing壁纸获取随机壁纸,返回壁纸的URL、标题和描述信息', { resolution: z.string().optional().describe('壁纸分辨率,可选值:1920x1080, 3840x2160, 1366x768等,默认为1920x1080'), market: z.string().optional().describe('地区市场,如zh-CN(中国), en-US(美国)等,默认为zh-CN'), }, async ({ resolution = AppConfig.DEFAULT_WALLPAPER_RESOLUTION, market = AppConfig.DEFAULT_MARKET }) => { return await wallpaperController.getRandomWallpaper(resolution, market); } ); // 启动服务器 async function main() { try { // 初始化项目数据 await projectRepository.initialize(); // 启动MCP服务器 const transport = new StdioServerTransport(); await server.connect(transport); console.error('MCP项目查询服务已启动,等待大模型调用...'); } catch (error) { console.error('启动服务器时出错:', error); process.exit(1); } } main();

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/sweetwisdom/mcp-demo'

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