MCP Server

MCP Server

MCP 服务器 (MCP fúwùqì)

plusplusoneplusplus

开发者工具
访问服务器

README

MCP 服务器

MCP 服务器为 AI 驱动的命令执行和工具管理提供了一个灵活的框架。

配置

MCP 服务器使用灵活的配置系统,支持默认设置和用户特定设置。配置文件以 YAML 格式存储。

配置文件

服务器使用两个主要的配置文件:

  1. prompts.yaml - 定义可用的提示及其模板
  2. tools.yaml - 定义可用的工具及其配置

用户特定配置

为了维护不会在 git 中跟踪的私有配置:

  1. server 文件夹中创建一个 .private 目录:

    mkdir server/.private
    
  2. 将您的配置文件复制到 .private 目录:

    cp server/prompts.yaml server/.private/
    cp server/tools.yaml server/.private/
    
  3. 根据需要在 .private 中自定义文件

系统将:

  • 首先在 .private 目录中查找配置文件
  • 如果私有版本不存在,则回退到默认配置文件
  • .private 目录会被 git 自动忽略

外部私有工具目录

您还可以为私有工具和配置定义一个与项目目录分离的目录:

  1. 设置 PRIVATE_TOOL_ROOT 环境变量以指向您的私有工具目录:

    # Linux/Mac
    export PRIVATE_TOOL_ROOT=/path/to/your/private/tools
    
    # Windows (PowerShell)
    $env:PRIVATE_TOOL_ROOT = "D:\path\to\your\private\tools"
    
    # Windows (CMD)
    set PRIVATE_TOOL_ROOT=D:\path\to\your\private\tools
    
  2. 在此目录中创建并自定义您的配置文件:

    /path/to/your/private/tools/
    ├── tools.yaml
    ├── prompts.yaml
    ├── myscript.ps1
    └── other-scripts/
    
  3. 服务器将按以下优先级顺序查找配置文件:

    1. PRIVATE_TOOL_ROOT 目录(如果已设置)
    2. server 文件夹中的 .private 目录
    3. server 文件夹中的默认文件

这种方法允许您:

  • 将私有工具和配置与项目完全分离
  • 在多个项目之间共享相同的私有工具
  • 通过更改环境变量轻松切换不同的私有工具集

示例配置结构

# prompts.yaml
prompts:
  my_prompt:
    name: "My Custom Prompt"
    description: "A custom prompt for specific tasks"
    arguments:
      - name: "param1"
        description: "First parameter"
        required: true
    template: "Custom prompt template with {param1}"
    enabled: true

# tools.yaml
tools:
  # Regular tool definition
  my_tool:
    name: "My Custom Tool"
    description: "A custom tool for specific tasks"
    inputSchema:
      type: "object"
      properties:
        param1:
          type: "string"
          description: "First parameter"
      required: ["param1"]
    enabled: true

  # Script-based tool definition
  build_project:
    name: "Build Project"
    description: "Build the project"
    type: "script"
    script: "build.cmd"  # Script file in .private directory
    inputSchema:
      type: "object"
      properties: {}  # No arguments needed
      required: []
    enabled: true

  # Script with arguments
  deploy:
    enabled: true
    name: deploy
    description: Deploy the application
    type: script
    script: test_deploy.ps1
    inputSchema:
      type: object
      properties:
        environment:
          type: string
          description: Deployment environment
          enum: ["dev", "staging", "prod"]
        version:
          type: string
          description: Version to deploy
        force:
          type: boolean
          description: Force deployment even if version exists
          default: false
      required:
        - environment
        - version 
        
  # Async Command Execution
  execute_command_async:
    enabled: true
    name: execute_command_async
    description: Start a command execution asynchronously and return a token for tracking
    inputSchema:
      type: object
      properties:
        command:
          type: string
          description: The command to execute
        timeout:
          type: number
          description: Optional timeout in seconds
      required:
        - command

  query_command_status:
    enabled: true
    name: query_command_status
    description: Query the status of an asynchronous command execution or wait for it to complete
    inputSchema:
      type: object
      properties:
        token:
          type: string
          description: The token returned by execute_command_async
        wait:
          type: boolean
          description: Whether to wait for the command to complete
          default: false
        timeout:
          type: number
          description: Optional timeout in seconds for waiting
      required:
        - token

基于脚本的工具

系统支持基于脚本的工具,这些工具可以在 YAML 配置中完全定义。这些工具:

  1. 在 tools.yaml 中使用 type: "script" 定义
  2. 引用应放置在 .private 目录中的脚本文件
  3. 可以接受在 inputSchema 中定义的命令行参数
  4. 支持 Windows (.cmd, .ps1) 和 Unix (.sh) 脚本

脚本文件应:

  • 放置在 .private 目录中
  • 接受 --arg_name value 格式的参数
  • 返回将被捕获和显示的适当输出

示例脚本 (build.cmd):

@echo off
echo Building unit tests...
dotnet build tests/UnitTests
if %ERRORLEVEL% EQU 0 (
    echo Build successful
) else (
    echo Build failed
    exit 1
)

运行测试

使用 Bash 脚本 (Linux/Mac)

# Run all tests
./sentinel/run_tests.sh

使用 PowerShell 脚本 (Windows)

# Run all tests
.\sentinel\run_tests.ps1

将 MCP 服务器配置为 cursor/vscode 的一部分

{
    "mcpServers": {
      "mymcp": {
        "command": "mcp\\venv\\scripts\\python",
        "args": ["mcp\\server\\main.py"],
        "env": {
          "GIT_ROOT": "${workspaceFolder}",
          "PRIVATE_TOOL_ROOT": "${workspaceFolder}/.private"
        }
      },
      // this is deprecated.
      // "fastmcp" : {
      //   "command": "mcp\\venv\\scripts\\python",
      //   "args": ["-m", "uv", "run", "--with", "mcp", "mcp", "run", "mcp\\server\\fast-main.py"]
      // }
    }
  }

演示:基本命令执行

MCP Server Configuration

演示:异步命令执行

MCP Server async command execution

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript