返回 MCP 目录
public公开dns本地运行

Second Opinion (Code Assistant)

一个结合多AI源的代码问题解决服务器

article

README

🚀 第二意见 MCP 服务器

这是一个融合了多种 AI 技术的 MCP 服务器,专为解答编程问题而生。它整合了谷歌 Gemini AI 的洞察、Stack Overflow 的最佳实践答案以及 Perplexity AI 的分析结果,为用户提供更全面、更准确的问题解决方案。

🚀 快速开始

安装配置

1. 创建配置文件

在项目根目录下新建 config.ts 文件,内容如下:

export const CONFIG = {
  AI_API_KEY: 'your_api_key_here', // 替换为你的 API 密钥
  STACK_OVERFLOW_API_KEY: 'your_stack_overflow_key_here' // 替换为你的 Stack Overflow API 密钥
};

2. 安装依赖项

使用 npm 或 yarn 安装所需包:

npm install @types/node @types/express express axios

3. 启动服务器

执行以下命令启动 MCP 服务器:

node index.ts

使用说明

功能概述

该服务器提供以下核心功能:

  1. 多源解答:整合 Gemini AI、Stack Overflow 和 Perplexity AI 的结果,生成更全面的解决方案。
  2. 语言检测:自动识别文件语言并提供相应支持(如 JavaScript、Python 等)。
  3. 代码处理:提取和格式化代码片段,便于展示和分析。

请求示例

示例输入
{
  "query": "如何在 Node.js 中实现异步通信",
  "file_path": "src/server.ts"
}
示例输出
## 解决方案概述

针对问题 "如何在 Node.js 中实现异步通信",以下是分步骤的解决方案:

### 步骤 1: 使用内置模块 `async` 或 `await`
Node.js 提供了强大的 async/await 特性来处理异步操作。你可以直接使用这些特性来实现异步通信。

#### 示例代码
```javascript
const fs = require('fs');

// 异步读取文件内容
async function readFileAsync(filePath) {
  try {
    const data = await fs.promises.readFile(filePath, 'utf8');
    console.log(data);
  } catch (error) {
    console.error('读取文件失败:', error);
  }
}

readFileAsync('src/server.ts');

步骤 2: 利用第三方库进行高级异步处理

如果需要更复杂的异步操作,可以考虑使用 rxjsbluebird 等第三方库。

示例代码

const { Observable } = require('rxjs');

// 使用 RxJS 实现异步通信
Observable.fromEventPattern(document, 'click')
  .subscribe(() => {
    console.log('页面被点击了');
  });

最佳实践

  1. 错误处理:始终在 async 函数内部使用 try-catch 块。
  2. 日志记录:建议集成专业的日志系统(如 Winston)以更好地追踪异步操作。
  3. 性能优化:避免不必要的嵌套,保持代码简洁。

## ✨ 主要特性
- 提供详细的问题解决方案,结合多源上下文信息
- 自动检测文件语言(通过文件扩展名)
- 代码片段提取与格式化
- 自动生成 Markdown 格式的解决方案报告
- Git 感知的文件上下文收集

## 📦 安装指南
### 创建配置文件
在项目根目录下新建 `config.ts` 文件,内容如下:
```typescript
export const CONFIG = {
  AI_API_KEY: 'your_api_key_here', // 替换为你的 API 密钥
  STACK_OVERFLOW_API_KEY: 'your_stack_overflow_key_here' // 替换为你的 Stack Overflow API 密钥
};

安装依赖项

使用 npm 或 yarn 安装所需包:

npm install @types/node @types/express express axios

启动服务器

执行以下命令启动 MCP 服务器:

node index.ts

💻 使用示例

基础用法

示例输入

{
  "query": "如何在 Node.js 中实现异步通信",
  "file_path": "src/server.ts"
}

示例输出

## 解决方案概述

针对问题 "如何在 Node.js 中实现异步通信",以下是分步骤的解决方案:

### 步骤 1: 使用内置模块 `async` 或 `await`
Node.js 提供了强大的 async/await 特性来处理异步操作。你可以直接使用这些特性来实现异步通信。

#### 示例代码
```javascript
const fs = require('fs');

// 异步读取文件内容
async function readFileAsync(filePath) {
  try {
    const data = await fs.promises.readFile(filePath, 'utf8');
    console.log(data);
  } catch (error) {
    console.error('读取文件失败:', error);
  }
}

readFileAsync('src/server.ts');

步骤 2: 利用第三方库进行高级异步处理

如果需要更复杂的异步操作,可以考虑使用 rxjsbluebird 等第三方库。

示例代码

const { Observable } = require('rxjs');

// 使用 RxJS 实现异步通信
Observable.fromEventPattern(document, 'click')
  .subscribe(() => {
    console.log('页面被点击了');
  });

最佳实践

  1. 错误处理:始终在 async 函数内部使用 try-catch 块。
  2. 日志记录:建议集成专业的日志系统(如 Winston)以更好地追踪异步操作。
  3. 性能优化:避免不必要的嵌套,保持代码简洁。

## 📚 详细文档
### 项目结构

src/ ├── config.ts # 配置文件和 API 设置 ├── fileUtils.ts # 文件操作和语言检测逻辑 ├── index.ts # 应用入口点 ├── perplexity.ts # Perplexity AI 的集成实现 ├── server.ts # MCP 服务器主逻辑 ├── stackOverflow.ts # Stack Overflow API 的调用接口 └── types.ts # TypeScript 类型定义文件


### 已知问题
请参考 [errors.md](./errors.md) 查看当前已知的问题和解决方案。

> ⚠️ **重要提示**
> 
> 使用该服务器前,请确保已经正确配置了所有必要的 API 密钥,并且网络环境允许访问相关 AI 服务。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端