mcpField
S
Sample MCP Server

Sample MCP Server

本地服务
github.com/shahidain数据库071 周前更新

关于 Sample MCP Server

Sample MCP Server 是面向需要处理 SQL Server 数据、Jira 和商品数据的团队的 TypeScript 服务。它结合 CRUD 与搜索工具、AI 辅助的 JQL 生成及 SSE 流式通信。

主要功能

  1. 01管理和搜索 SQL Server 记录
  2. 02搜索和管理 Jira 问题
  3. 03将自然语言转换为 JQL
  4. 04查询 DummyJSON 商品和用户
  5. 05通过 SSE 流式传输响应

适用场景

  1. 01查找或更新用户和供应商
  2. 02用自然语言查找 Jira 问题
  3. 03创建 Jira 问题和子任务
  4. 04按类别查询商品数据

MCP 相关

它向 MCP 客户端提供数据库、Jira、商品和应用状态工具,并通过 Server-Sent Events(SSE)通信。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

与 SQL 数据库集成的 MCP 服务

这是一个使用 TypeScript 和 Express.js 构建的模型上下文协议(MCP)服务,可全面集成 SQL 数据库、Jira API 以及用于数据处理和分析的智能 AI 工具。该服务使用服务器发送事件(SSE)进行实时通信,并提供持久化存储,以提升用户体验。

主要功能

🗄️ SQL 数据库集成
  • 为用户、供应商、商品、货币和角色提供完整的 CRUD 操作
  • 高级搜索和分页功能
  • 强大的 SQL Server 连接管理
  • 数据库健康监控和连接测试
🎯 Jira 集成
  • 全面集成 Jira API,并支持 JQL(Jira 查询语言)
  • 使用 AI 智能生成 JQL 查询
  • 持久化存储 JQL 示例,并基于相似度进行去重
  • 创建、搜索和管理问题
  • Sprint 和项目分析
🤖 AI 驱动的功能
  • 集成 OpenAI,实现智能工具路由和数据处理
  • 实时流式响应,提升用户体验
  • 可通过学习智能生成 JQL 查询
  • 上下文数据分析和 Markdown 格式化
📊 数据管理
  • 集成 DummyJSON API,获取产品数据
  • 集成 DummyJSON API,获取用户数据
  • 实时监控应用状态
  • 持久化存储,并自动同步文件
🔄 实时通信
  • 使用服务器发送事件(SSE)提供流式响应
  • 管理多个并发会话
  • 妥善处理错误和连接

可用工具

🗄️ SQL 数据库工具
用户管理
  • get-users - 获取用户列表,支持可选分页
  • get-user-by-id - 根据 ID 获取特定用户的详细信息
  • search-users - 按关键词搜索用户
供应商管理
  • get-vendors - 获取供应商列表,支持可选分页
  • get-vendor-by-id - 根据 ID 获取特定供应商的详细信息
  • search-vendors - 按关键词搜索供应商
商品管理
  • get-commodities - 获取商品列表,支持可选分页
  • get-commodity-by-id - 根据 ID 获取特定商品的详细信息
  • search-commodities - 按关键词搜索商品
货币管理
  • get-currencies - 获取货币列表,支持可选分页
  • get-currency-by-id - 根据 ID 获取特定货币的详细信息
  • search-currencies - 按关键词搜索货币
角色管理
  • get-roles - 获取角色列表,支持可选分页
  • get-role-by-id - 根据 ID 获取特定角色的详细信息
  • search-roles - 按关键词搜索角色
🎯 Jira 集成工具
  • get-jira-issue-by-id - 获取特定 Jira 问题的详细信息
  • search-jira-issues - 使用智能 JQL 生成搜索 Jira 问题
  • create-jira-issue - 使用指定的项目、摘要和问题类型创建 Jira 问题
  • create-jira-subtask - 在现有 Jira 问题下创建子任务
📊 产品和外部 API 工具
  • get-products - 从 DummyJSON API 获取产品列表,支持可选分页
  • get-product-by-id - 根据 ID 获取特定产品的详细信息
  • search-products - 按关键词搜索产品
  • get-products-by-category - 获取特定类别中的所有产品
  • get-categories - 获取所有产品类别的列表
🔍 应用监控
  • get-application-status - 获取不同环境中特定应用的实时状态信息

🗄️ SQL 数据库集成

此 MCP 服务集成了全面的 SQL Server 功能,可用于企业级数据管理。

数据库设置
  1. 安装并配置 SQL Server

    • 确保 SQL Server 已安装并正在运行
    • 创建目标数据库
  2. 配置数据库连接

    在项目根目录中创建 .env 文件,并填写数据库凭据:

    # SQL Server Configuration
    MSSQL_USER=your_username
    MSSQL_PASSWORD=your_password
    MSSQL_HOST=your_server_host
    MSSQL_DATABASE=your_database_name
    
    # Alternative: Connection String
    MSSQL_CONNECTION_STRING=Server=yourserver;Database=yourdatabase;User Id=username;Password=password;Encrypt=false;TrustServerCertificate=true;
    
    # OpenAI Configuration (Required for AI features)
    OPENAI_API_KEY=your_openai_api_key
    LLM_MODEL=gpt-4
    
    # Jira Configuration (Optional)
    JIRA_URL=https://your-domain.atlassian.net
    [email protected]
    JIRA_API_TOKEN=your_jira_api_token
    
  3. 数据库架构

    服务要求 SQL 数据库中包含以下表:

    • Users - 用户管理,包含角色和身份验证详情
    • Vendors - 供应商信息
    • Commodities - 商品数据
    • Currencies - 货币信息
    • Roles - 用户角色定义
测试数据库连接

验证数据库设置:

npm run build
npm run test-connection

🎯 Jira 集成

设置 Jira 集成
  1. 创建 Jira API 令牌

  2. 配置 Jira 设置

    JIRA_URL=https://your-domain.atlassian.net
    [email protected]
    JIRA_API_TOKEN=your_jira_api_token
    
智能 JQL 功能

该服务具备高级 JQL(Jira 查询语言)功能:

  • AI 驱动的 JQL 生成:将自然语言查询转换为 JQL
  • 持续学习:存储成功的 JQL 示例,以改进后续查询
  • 智能去重:通过相似度检测防止 JQL 示例重复
  • 实时同步:JQL 示例会立即保存到 data/jql-examples.json
JQL 查询示例

系统会从使用过程中学习,并可为以下查询生成 JQL:

  • “显示当前冲刺中未解决的缺陷”
  • “获取分配给 John Doe 的所有任务”
  • “查找本周创建的高优先级问题”
  • “显示所有已关闭的冲刺以进行速度分析”

🤖 AI 集成

OpenAI 配置

该服务使用 OpenAI 进行智能数据处理和查询生成:

  1. 获取 OpenAI API 密钥

  2. 支持的模型

    • GPT-4(推荐)
    • GPT-3.5-turbo
    • 任何兼容 OpenAI 的模型
AI 功能
  • 智能工具路由:根据用户查询自动确定要使用的工具
  • 实时流式传输:实时传输响应,提升用户体验
  • 上下文感知处理:在多次交互中保持上下文
  • 数据格式化:自动将响应格式化为 Markdown 表格、图表或文本

🚀 安装与设置

前置条件
  • Node.js(v16 或更高版本)
  • npm 或 yarn
  • SQL Server(用于数据库功能)
  • OpenAI API 密钥(用于 AI 功能)
  • Jira 账户(可选,用于 Jira 集成)
安装步骤
  1. 克隆仓库

    git clone <repository-url>
    cd MCP-SERVER
    
  2. 安装依赖项

    npm install
    
  3. 环境配置

    复制示例环境文件并配置设置:

    copy .env.example .env
    

    根据具体配置编辑 .env(请参阅上文的设置部分)。

  4. 构建项目

    npm run build
    
  5. 启动服务

    npm run start
    
开发模式

如需在开发过程中启用自动重新编译和热重载:

npm run dev

🔧 VS Code 集成

可用任务

项目包含便于开发的 VS Code 任务:

  1. 按 Ctrl+Shift+P 并选择“Tasks: Run Task”
  2. 从可用任务中选择:
    • Build MCP Server:编译 TypeScript 代码
    • Start MCP Server:构建并启动服务
    • Dev MCP Server (Watch Mode):启用自动重载的开发模式
调试

在 VS Code 中调试 MCP 服务:

  1. 按 F5 或选择“Run > Start Debugging”
  2. 选择“Launch MCP Server”配置
  3. 在调试控制台中查看调试输出
与 AI 助手配合使用
  1. 使用上述任务启动 MCP 服务
  2. 将 AI 助手(例如 GitHub Copilot)连接到服务
  3. 使用自然语言请求数据并执行操作

📁 项目结构

🏗️ 架构概览
graph TD
    A[🎯 MCP Server] --> B[🎮 Controllers Layer]
    A --> C[🏢 Services Layer]
    A --> D[📋 Models Layer]
    A --> E[⚙️ Configuration Layer]
    
    B --> B1[👥 User Controller]
    B --> B2[🎫 Jira Controller]
    B --> B3[📦 Product Controller]
    B --> B4[🏪 Vendor Controller]
    B --> B5[📊 Commodity Controller]
    B --> B6[💰 Currency Controller]
    B --> B7[🔐 Role Controller]
    
    C --> C1[🗄️ SQL Services]
    C --> C2[🎫 Jira Service]
    C --> C3[📦 Product Service]
    C --> C4[👥 User Service]
    
    C1 --> C1A[SQL User Service]
    C1 --> C1B[SQL Vendor Service]
    C1 --> C1C[SQL Commodity Service]
    C1 --> C1D[SQL Currency Service]
    C1 --> C1E[SQL Role Service]
    
    D --> D1[🗃️ Database Models]
    D --> D2[🌐 API Models]
    D --> D3[📝 Type Definitions]
    
    E --> E1[💾 Database Config]
    E --> E2[🌐 API Config]
    E --> E3[🗄️ MSSQL Config]
    
    F[🌍 External Systems] --> F1[🗄️ SQL Server Database]
    F --> F2[🎫 Jira API]
    F --> F3[📦 DummyJSON API]
    F --> F4[🤖 OpenAI API]
    
    G[💾 Data Storage] --> G1[📄 JQL Examples JSON]
    G --> G2[📊 Application Data]
    
    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#e8f5e8
    style D fill:#fff3e0
    style E fill:#fce4ec
    style F fill:#e0f2f1
    style G fill:#f1f8e9
🔄 数据流架构
sequenceDiagram
    participant 👤 Client
    participant 🌐 SSE Transport
    participant 🤖 AI Router
    participant 🎮 Controller
    participant 🏢 Service
    participant 🗄️ Database
    participant 🧠 OpenAI
    
    👤->>🌐: 📝 Natural Language Request
    🌐->>🤖: 🔀 Route Message
    🤖->>🧠: 🔍 Analyze Intent
    🧠-->>🤖: 🎯 Tool Selection
    🤖->>🎮: ⚡ Execute Tool
    🎮->>🏢: 🛠️ Business Logic
    🏢->>🗄️: 📊 Data Query
    🗄️-->>🏢: 📈 Raw Data
    🏢-->>🎮: 🔧 Processed Data
    🎮->>🧠: 📋 Format Request
    🧠-->>🎮: 📄 Formatted Response
    🎮-->>🌐: 🌊 Stream Response
    🌐-->>👤: ⚡ Real-time Output
📂 详细文件结构
MCP-SERVER/
├── 📁 data/                          # 💾 Persistent Data Storage
│   └── 📄 ...                        # 📄 Configuration files
│
├── 📁 src/                           # 💻 Source Code
│   ├── 📄 ...                        # 📄 TypeScript files
│   │
│   ├── 📁 app-data/                  # 📊 Application Data
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 config/                    # ⚙️ Configuration Files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 controllers/               # 🎮 MCP Tool Controllers
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 db-models/                 # 🗃️ Database Models
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 llm-api/                   # 🤖 AI Integration
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 models/                    # 📋 Data Models
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 modules/                   # 🔧 Core Server Modules
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 services/                  # 🏢 Business Logic Services
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   ├── 📁 types/                     # 📝 TypeScript Definitions
│   │   ├── 📄 ...                    # 📄 TypeScript files
│   │   └── 📄 ...                    # 📄 TypeScript files
│   │
│   └── 📁 utils/                     # 🛠️ Utility Functions
│       └── 📄 ...                    # 📄 TypeScript files
│
├── 📁 scripts/                       # 🔨 Build & Deployment
│   └── 📄 ...                        # 📄 JavaScript files
│
├── 📄 ...                            # 📄 HTML files
├── 📄 ...                            # 📄 Configuration files
├── 📄 ...                            # 📄 Configuration files
├── 📄 ...                            # 📄 Configuration files
└── 📄 ...                            # 📄 Documentation files
🔀 组件交互图
graph LR
    subgraph "🌍 External APIs"
        EXT1[🗄️ SQL Server]
        EXT2[🎫 Jira API]
        EXT3[📦 DummyJSON]
        EXT4[🤖 OpenAI]
    end
    
    subgraph "🎯 MCP Server Core"
        SSE[🌐 SSE Transport]
        ROUTE[🤖 AI Router]
        CTRL[🎮 Controllers]
        SVC[🏢 Services]
    end
    
    subgraph "💾 Data Layer"
        DB[(🗄️ Database)]
        FILES[📄 JSON Files]
    end
    
    CLIENT[👤 Client] --> SSE
    SSE --> ROUTE
    ROUTE --> CTRL
    CTRL --> SVC
    
    SVC --> EXT1
    SVC --> EXT2
    SVC --> EXT3
    SVC --> EXT4
    
    SVC --> DB
    SVC --> FILES
    
    style CLIENT fill:#e3f2fd
    style SSE fill:#f1f8e9
    style ROUTE fill:#fff3e0
    style CTRL fill:#fce4ec
    style SVC fill:#e8f5e8
    style DB fill:#e0f2f1
    style FILES fill:#f3e5f5

🔍 API 参考与数据源

外部 API
响应格式

该服务支持多种响应格式:

  • Markdown 表格:表格形式的结构化数据
  • Markdown 文本:经过格式化并附带分析的文本
  • 图表:使用图表库进行数据可视化
  • JSON:原始结构化数据

🚦 服务通信

服务器发送事件(SSE)

该服务使用 SSE 进行实时通信:

  • 端点:/sse/stream
  • 消息端点:/messages
  • 会话管理:通过 ID 自动管理会话
  • 流式响应:实时数据流,带来更好的用户体验
CORS 配置

该服务已配置适当的 CORS 标头,以处理跨域请求。

💡 使用示例

基本查询
# Get all users with pagination
curl "http://localhost:3000/messages" -X POST \
  -H "Content-Type: application/json" \
  -d '{"message": "show me all users"}'

# Search for specific vendor
curl "http://localhost:3000/messages" -X POST \
  -H "Content-Type: application/json" \
  -d '{"message": "find vendor with name containing Microsoft"}'

# Get Jira issues
curl "http://localhost:3000/messages" -X POST \
  -H "Content-Type: application/json" \
  -d '{"message": "show me open bugs in current sprint"}'
自然语言查询

由 AI 驱动的服务可以理解自然语言:

  • “显示所有分配给 John 的高优先级 Bug”
  • “获取本月创建的最近 10 个供应商”
  • “查找所有 USD 货币交易”
  • “显示已关闭 Sprint 的速度图表”
  • “列出所有具有管理员角色的用户”
JQL 学习示例

该服务会从 JQL 使用情况中学习:

User Query: "show me open bugs"
Generated JQL: project = SCRUM AND issuetype = Bug AND status != "Done" ORDER BY priority DESC
Saved: ✅ (New example learned)

User Query: "get open bugs"  
Generated JQL: project = SCRUM AND issuetype = Bug AND status != "Done" ORDER BY priority DESC
Saved: ❌ (Duplicate detected - 85% similarity)

🛠️ 自定义

添加新工具
  1. 创建控制器

    // src/controllers/myController.ts
    export function registerMyTools(server: McpServer) {
      server.tool('my-tool', 'Description', schema, handler);
    }
    
  2. 在主文件中注册

    // src/index.ts
    import { registerMyTools } from './controllers/myController.js';
    registerMyTools(server);
    
扩展数据库模型
  1. 添加接口

    // src/db-models/myModel.ts
    export interface MyModel {
      Id: number;
      Name: string;
      // ... other fields
    }
    
  2. 创建服务

    // src/services/myService.ts
    export class MyService {
      async getAll(): Promise<MyModel[]> {
        // Implementation
      }
    }
    
自定义 AI 提示词

编辑 src/llm-api/prompts.ts 中的提示词:

export const MyCustomPrompt = `
Your custom system prompt here...
Format responses as markdown tables.
`;

🐛 故障排除

常见问题
  1. 数据库连接失败

    • 确认 SQL Server 正在运行
    • 检查 .env 文件中的凭据
    • 使用 npm run test-connection 进行测试
  2. OpenAI API 错误

    • 确认 API 密钥有效
    • 检查模型是否可用
    • 监控 API 使用限额
  3. Jira 身份验证失败

    • 确保 API 令牌正确
    • 验证 Jira URL 格式
    • 检查用户权限
  4. 端口已被占用

    • 在配置中更改端口
    • 终止现有进程:npx kill-port 3000
调试模式

启用详细日志记录:

DEBUG=mcp:* npm run start
日志文件

查看以下位置的日志:

  • 控制台输出中的实时日志
  • data/jql-examples.json 中的 JQL 学习进度
  • SQL Server 日志中的数据库问题

📈 性能监控

可用指标
  • 数据库连接健康状况
  • API 响应时间
  • JQL 查询成功率
  • 内存使用模式
  • 活跃会话数
健康检查
# Database health
curl "http://localhost:3000/messages" -X POST \
  -H "Content-Type: application/json" \
  -d '{"message": "check database health"}'

# Application status
curl "http://localhost:3000/messages" -X POST \
  -H "Content-Type: application/json" \
  -d '{"message": "get application status for MyApp in production"}'

🤝 贡献

  1. Fork 此仓库
  2. 创建功能分支
  3. 进行更改
  4. 视情况添加测试
  5. 提交拉取请求
开发指南
  • 遵循 TypeScript 最佳实践
  • 添加适当的错误处理
  • 添加 JSDoc 注释
  • 测试数据库操作
  • 使用 Zod 模式验证所有输入

📄 许可证

本项目采用 ISC License 授权,详情请参阅 package.json 文件。

🆘 支持

如需支持或有任何疑问:

  • 查看上方的故障排除部分
  • 查看 GitHub 上的项目议题
  • 查阅 MCP Protocol 文档
  • 如遇 AI 相关问题,请查看 OpenAI API 文档

使用 Model Context Protocol (MCP) 倾心打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。