MCP服务器框架

一个基于TypeScript的Model Context Protocol (MCP)服务器框架,提供HTTP流支持、认证管理、Docker容器化等功能,适用于AI助手与数据源的集成开发。

  • by gmogmzGithub
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 gmogmzGithub/mcp-typescript-skeleton

使用说明

TypeScript MCP服务器骨架

建筑骨架工程 模型上下文协议(MCP)服务器 在TypeScript中。此模板提供了一个功能齐全的MCP服务器,由 FastMCP 这可以作为构建自己的MCP集成的起点。

特性

  • ✅ 支持HTTP流媒体的FastMCP服务器
  • ✅ 文档搜索和检索的示例工具
  • ✅ 内置身份验证和会话管理
  • ✅ Docker容器化用于开发和测试
  • ✅ TypeScript用于类型安全和开发人员体验
  • ✅ 使用Jest的全面测试套件
  • ✅ ESLint和Prettier用于代码质量

什么是MCP?

模型上下文协议(MCP)允许AI助手安全地连接到数据源和工具。此框架可帮助您构建可以为AI客户端提供工具和资源的MCP服务器。

快速开始

先决条件

  • Node.js 18+(见 .nvmrc 如果使用nvm)
  • Docker(可选,用于容器化)

地方发展

  1. 克隆和设置:

    git clone https://github.com/your-username/mcp-typescript-skeleton.git
    cd mcp-typescript-skeleton
    npm install
    
  2. 构建项目:

    npm run build
    
  3. 启动服务器:

    # For development with live reload
    npm run start:dev
    
    # For production mode
    npm run start
    
  4. 访问您的MCP服务器:

    • FastMCP HTTP流媒体: http://localhost:8081/mcp ⭐ (适用于MCP客户)
    • 健康检查: http://localhost:8080/health
    • 察看连接信息: http://localhost:8080/info
  5. 测试您的服务器:

    npm test
    
  6. 打开你的代码:

    npm run lint
    

Docker开发

你也可以在Docker容器中运行服务器:

  1. 构建Docker镜像:

    ./build.sh
    
  2. 运行容器:

    ./container-run.sh
    

    服务器将在与上述相同的URL上可用。

项目结构

src/
├── index.ts                    # Main server entry point
├── router.ts                   # HTTP API routes
├── controllers/                # HTTP API controllers
│   └── McpProviderController.ts
├── mcp-server/                 # FastMCP server implementation
│   └── index.ts               # MCP tools and server setup
├── utils/                      # Utility functions
│   ├── auth-context.ts        # Authentication utilities
│   └── request-timeout.ts     # Request timeout handling
└── __tests__/                 # Test files

可用工具

骨架包括以下示例MCP工具:

  • add -添加两个数字(简单示例)

自定义您的MCP服务器

  1. 更新服务器配置 在 src/mcp-server/index.ts:

    • 更改服务器名称和描述
    • 更新您的用例说明
  2. 添加您自己的工具 按照以下模式 src/mcp-server/index.ts:

    server.addTool({
        name: 'yourToolName',
        description: 'What your tool does',
        parameters: z.object({
            // Define your parameters with Zod schema
        }),
        execute: async (args, { session }) => {
            // Your tool logic here
            return 'Tool result';
        },
    });
    
  3. 更新package.json:

    • 更改名称、描述和存储库URL
    • 更新作者字段

认证

服务器包括基于会话的身份验证。API令牌可以通过 api-token header,并将按会话存储,以便在您的工具中使用。

环境变量

  • PORT -主服务器端口(默认:8080)
  • MCP_PORT -FastMCP服务器端口(默认:8081)
  • NODE_ENV -环境模式(开发/生产)

测试

该项目包括综合测试:

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

部署

建设生产项目:

npm run build
npm start

构建的文件将位于 dist/ 目录。

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 跑 npm run lint 和 npm test
  6. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

资源