使用说明
带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查询生成
- 上下文数据分析和标记格式
📊 数据管理
- 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集成。
数据库设置
-
安装和配置SQL Server
- 确保SQL Server已安装并正在运行
- 创建目标数据库
-
配置数据库连接
创建一个
.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 JIRA_USERNAME=your_email@example.com JIRA_API_TOKEN=your_jira_api_token -
数据库模式
服务器需要SQL数据库中的以下表:
Users-具有角色和身份验证详细信息的用户管理Vendors-供应商/供货商信息Commodities-产品商品数据Currencies-货币信息Roles-用户角色定义
测试数据库连接
验证您的数据库设置:
npm run build
npm run test-connection
🎯 Jira集成
设置Jira集成
-
创建Jira API代币
- 首选https://id.atlassian.com/manage-profile/security/api-tokens
- 创建新的API令牌
- 将其添加到您的
.env文件
-
配置Jira设置
JIRA_URL=https://your-domain.atlassian.net JIRA_USERNAME=your_email@example.com JIRA_API_TOKEN=your_jira_api_token
智能JQL功能
该服务器包括高级JQL(Jira查询语言)功能:
- 人工智能驱动的JQL生成:将自然语言查询转换为JQL
- 持续学习:存储成功的JQL示例,以改进未来的查询
- 智能重复数据删除:使用相似性检测防止重复的JQL示例
- 实时同步:JQL示例将立即保存到
data/jql-examples.json
JQL查询示例
系统从使用中学习,并可以为以下查询生成JQL:
- “显示当前sprint中打开的bug”
- “将所有任务分配给John Doe”
- “查找本周创建的具有高优先级的问题”
- “显示所有闭合冲刺以进行速度分析”
🤖 人工智能集成
OpenAI配置
服务器使用OpenAI进行智能数据处理和查询生成:
-
获取OpenAI API密钥
- 访问https://platform.openai.com/api-keys
- 创建新的密钥
- 将其添加到您的
.env文件
-
支持的型号
- GPT-4(推荐)
- GPT-3.5涡轮增压
- 任何与OpenAI兼容的模型
AI功能
- 智能刀具路径:根据用户查询自动确定使用哪个工具
- 实时流媒体:实时响应流,提供更好的用户体验
- 上下文感知处理:在多个交互中保持上下文
- 数据格式:自动将响应格式化为标记表、图表或文本
🚀 安装和设置
先决条件
- Node.js(v16或更高版本)
- npm或纱线
- SQL Server(用于数据库功能)
- OpenAI API密钥(用于AI功能)
- Jira帐户(可选,用于Jira集成)
安装步骤
-
克隆存储库
git clone <repository-url> cd MCP-SERVER -
再进行
npm install -
环境配置
复制示例环境文件并配置您的设置:
copy .env.example .env编辑
.env使用您的特定配置(请参阅上面的设置部分)。 -
构建项目
npm run build -
启动服务器
npm run start
开发模式
对于具有自动重新编译和热重新加载功能的开发:
npm run dev
🔧 VS代码集成
可用任务
该项目包括易于开发的VS Code任务:
- 按
Ctrl+Shift+P然后选择“任务:运行任务” - 从可用任务中选择:
- 构建MCP服务器:编译TypeScript代码
- 启动MCP服务器:构建并启动服务器
- 开发MCP服务器(监视模式):自动重新加载的开发模式
调试
在VS代码中调试MCP服务器:
- 按
F5或选择“运行>开始调试” - 选择“启动MCP服务器”配置
- 在调试控制台中查看调试输出
使用AI助手
- 使用上述任务启动MCP服务器
- 将您的AI助手(如GitHub Copilot)连接到服务器
- 使用自然语言请求数据并执行操作
📁 项目结构
🏗️ 架构概述
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
- 虚拟JSON产品: https://dummyjson.com/products
- 虚拟JSON用户: https://dummyjson.com/users
- Jira REST API:Atlassian云/服务器REST API v2/v3
- OpenAI API:用于智能处理的GPT模型
响应格式
服务器支持多种响应格式:
- Markdown表格:表格式的结构化数据
- Markdown文本:带分析的格式化文本
- 图表:使用图表库进行数据可视化
- 对象符号:原始结构化数据
🚦 服务器通信
服务器发送事件(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的所有高优先级错误”
- “获取本月创建的最后10个供应商”
- “查找所有美元货币交易”
- “显示封闭冲刺的冲刺速度图”
- “列出所有具有管理员角色的用户”
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)
🛠️ 定制
添加新工具
-
创建控制器
// src/controllers/myController.ts export function registerMyTools(server: McpServer) { server.tool('my-tool', 'Description', schema, handler); } -
在主页注册
// src/index.ts import { registerMyTools } from './controllers/myController.js'; registerMyTools(server);
扩展数据库模型
-
添加接口
// src/db-models/myModel.ts export interface MyModel { Id: number; Name: string; // ... other fields } -
创建服务
// 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.
`;
🐛 故障排除
常见问题
-
数据库连接失败
- 验证SQL Server是否正在运行
- 检查凭据
.env文件 - 测试用
npm run test-connection
-
OpenAI API错误
- 验证API密钥是否有效
- 检查型号可用性
- 监控API使用限制
-
Jira身份验证失败
- 确保API令牌正确无误
- 验证JIRA URL格式
- 检查用户权限
-
端口已在使用中
- 更改配置中的端口
- 终止现有进程:
npx kill-port 3000
调试模式
启用详细日志记录:
DEBUG=mcp:* npm run start
日志文件
检查登录:
- 实时日志的控制台输出
data/jql-examples.jsonJQL学习进度- 数据库问题的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"}'
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
开发指南
- 遵循TypeScript的最佳实践
- 添加适当的错误处理
- 包括JSDoc注释
- 测试数据库操作
- 使用Zod模式验证所有输入
📄 许可证
此项目在ISC许可证下获得许可-有关详细信息,请参阅package.json文件。
🆘 支持
有关支持和问题:
- 检查上面的故障排除部分
- 在GitHub上查看项目问题
- 查阅MCP协议文档
- 查看OpenAI API文档以了解AI相关问题
内置于❤️ 使用模型上下文协议(MCP)