项目介绍
CoinGecko MCP与C1聊天集成
<img src="https://gips1.baidu.com/it/u=838635314,941098310&fm=3081&app=3081&f=GIF?w=800&h=517"><img/>
这是一个由Thesys开发的C1项目,展示了MCP(模型上下文协议)服务器与流式聊天功能的集成。
特性
- C1聊天集成:由Thesys C1提供智能对话支持
- MCP服务器支持:连接到MCP服务器以扩展工具的AI能力
- 工具集成:自动列出并调用已连接MCP服务器上的工具
- 流式响应:实时流式传输AI响应
- 思考状态:视觉指示器显示AI正在做什么
- 文件系统操作:通过MCP内置文件系统访问(无需认证)
快速开始
预备条件
你需要:
- Thesys API:从Thesys控制台获取你的密钥
- Node.js/pnpm:用于运行开发服务器
环境变量
设置环境变量:
export THESYS_API_KEY=<your-thesys-api-key>
安装
使用pnpm安装依赖:
pnpm install
开发
运行开发服务器:
pnpm dev
在浏览器中打开http://localhost:3000查看结果。
你可以做什么 - 示例
一旦应用程序运行起来,你可以请求AI帮助完成各种文件系统任务。这里有一些例子:
📁 项目探索
“这个项目里有哪些文件?”
“展示项目的结构”
“列出src目录下的所有TypeScript文件”
“components文件夹里有什么?”
“在这个项目中查找所有的配置文件”
📄 文件分析
“读取并解释package.json文件”
“这个项目使用了哪些依赖项?”
“展示TypeScript配置”
“README文件里有什么?”
“分析主路由文件”
🔍 代码审查与理解
“解释MCP客户端的作用”
“聊天路由是如何工作的?”
“应用目录里有哪些组件?”
“展示API结构”
“使用了哪些样式文件?”
🏗️ 开发辅助
“帮我理解这个Next.js项目结构”
“这个应用需要哪些环境变量?”
“解释MCP集成实现”
“展示思考状态的实现方式”
“route.ts和mcp.ts之间的区别是什么?”
📊 项目分析
“主文件中有多少行代码?”
“这个项目依赖哪些外部包?”
“展示聊天路由中的所有导入语句”
“有哪些可用的API端点?”
“分析项目的架构”
🐛 调试帮助
“检查代码中是否有TODO注释”
“展示使用的错误处理模式”
“实现了哪些日志记录?”
“查找所有console.log语句”
“检查是否有硬编码值”
🎨 UI与样式
“使用了哪种CSS/样式方法?”
“展示Tailwind配置”
“导入了哪些UI组件?”
“布局是如何构建的?”
“配置了哪些字体和主题?”
MCP集成
本项目演示了如何将MCP服务器与C1聊天进行集成:
-
MCP客户端:MCPClient类(位于src/app/api/chat/mcp.ts)负责:
- 连接到MCP服务器
- 通过
mcp.listTools()列出可用工具
- 通过
runTools()执行工具调用
-
聊天路由:API路由(位于src/app/api/chat/route.ts)集成了MCP工具:
- 启动时连接到MCP服务器
- 将MCP工具传递给OpenAI完成请求
- 无缝处理工具调用及思考状态
-
工具执行:当AI需要使用工具时,系统:
- 接收来自AI模型的工具调用
- 通过MCP服务器执行它们
- 将结果返回给对话
- 在执行过程中显示思考状态
支持的MCP服务器
当前配置为:
- 文件系统服务器:文件系统操作(读取、写入、列出文件)- 不需要认证
- 备用服务器:如果文件系统失败,作为替代的MCP服务器
可用工具
文件系统MCP服务器提供了这些工具:
read_file - 读取特定文件的内容
list_directory - 列出文件和目录
get_file_info - 获取关于文件的元数据
search_files - 按名称或内容搜索文件
思考状态
系统包括视觉思考状态,向用户展示:
- 💭 “处理您的请求...” - 初始分析
- 💭 “使用工具:read_file” - 访问文件时
- 💭 “处理结果...” - 分析工具结果时
最佳实践提示
- 具体明确:尝试“列出src/app目录下的所有TypeScript文件”,而不是“显示文件”
- 请求分析:请求解释,如“解释这个配置的作用”
- 组合请求:“读取package.json并解释主要依赖项”
- 请求比较:“比较route.ts和mcp.ts的结构”
- 请求帮助:“帮助我理解MCP集成的工作原理”
更多信息
更多项目
<table bordercolor="#66b2b2">
<tr>
<td width="33.3%" valign="top">
<a target="_blank" href="https://github.com/CharlesCreativeContent/runware-pokemon-generator">Runware Pokemon生成器</a>
<br />
<a target="_blank" href="https://github.com/CharlesCreativeContent/runware-pokemon-generator">
<img src="https://github.com/CharlesCreativeContent/runware-pokemon-generator/raw/main/public/runware.gif?raw=true" width="100%" alt="CoinGecko-Thesys-MCP"/>
</a>
</td>
<td width="33.3%" style="align:center;" valign="top">
<a target="_blank" href="https://github.com/-CreativeContent/elastic-path-demo">Elastic Path API</a>
<br />
<a target="_blank" href="https://github.com/CharlesCreativeContent/elastic-path-demo">
<img src="https://github.com/CharlesCreativeContent/myimages/raw/main/images/elastic-path-demo.gif?raw=true" width="100%" alt="Elastic Path API"/>
</a>
</td>
<td width="33.3%" valign="top">
<a target="_blank" href="https://github.com/CharlesCreativeContent/Demo-Day">旅行Web应用程序</a>
<br />
<a target="_blank" href="https://github.com/CharlesCreativeContent/Demo-Day">
<img src="https://github.com/CharlesCreativeContent/CharlesCreativeContent/raw/main/images/gif1.gif?raw=true" width="100%" alt="Portfolio"/>
</a>
</td>
</tr>
</table>