AI社交媒体助手

一个集成Twitter和Google Gemini AI的客户端-服务器应用,用于创建交互式AI驱动的社交媒体助手。

  • by atishayjain005
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 atishayjain005/mcp-server

使用说明

MCP(模型上下文协议)

一个客户端-服务器应用程序,与推特和谷歌的Gemini AI集成,创建了一个交互式的人工智能社交媒体助手。

使用的技术

后端(服务器)

  • Node.js与Express.js
  • TypeScript
  • Twitter API v2
  • 模型上下文协议(MCP)SDK
  • Zod用于模式验证

前端(客户端)

  • Node.js
  • 谷歌Gemini人工智能API
  • 模型上下文协议(MCP)SDK
  • 环境变量的dotenv

先决条件

  • Node.js(v14或更高版本)
  • 具有API证书的Twitter开发人员帐户
  • 使用Gemini API访问的谷歌云项目

设置

  1. 克隆存储库

  2. 安装依赖项:

    # Install server dependencies
    cd server
    npm install
    
    # Install client dependencies
    cd ../client
    npm install
    
  3. 创建 .env 包含以下变量的客户端和服务器目录中的文件:

    服务器 .env:

    TWITTER_API_KEY=your_twitter_api_key
    TWITTER_API_SECRET=your_twitter_api_secret
    TWITTER_ACCESS_TOKEN=your_twitter_access_token
    TWITTER_ACCESS_SECRET=your_twitter_access_secret
    

    客户端 .env:

    GEMINI_API_KEY=your_gemini_api_key
    

运行应用程序

  1. 启动服务器:

    cd server
    npm start
    
  2. 启动客户端:

    cd client
    node index.js
    

服务器将在上运行http://localhost:3000默认情况下。

特性

  • 与Twitter API集成,用于发布推文
  • 使用谷歌Gemini的人工智能响应
  • 标准化人工智能交互的模型上下文协议
  • 自动推特长度验证和截断
  • 错误处理和速率限制保护
  • 用于AI交互的交互式聊天界面

项目结构

MCP/
├── client/
│   ├── index.js           # Main client application
│   └── gemini-test.js     # Gemini API testing
├── server/
│   ├── index.js           # Express server setup
│   └── mcp.tool.js        # MCP tool implementations
└── README.md

核心组件

服务器(server/)

  • index.js:设置Express服务器和MCP服务器,定义可用工具
  • mcp.tool.js:实现具有速率限制和错误处理功能的Twitter集成

客户(client/)

  • index.js:具有聊天界面和AI集成的主客户端应用程序
  • gemini-test.js:Gemini API集成的测试文件

详细功能

Twitter集成

  • 自动推特长度验证(280个字符限制)
  • 指数回退的速率限制处理
  • 删除Markdown格式
  • API故障的错误处理

人工智能集成

  • 交互式聊天界面
  • 上下文感知响应
  • 基于用户输入的自动工具选择
  • 错误处理和重试机制

安全功能

  • 基于环境变量的配置
  • API密钥管理
  • 速率限制保护
  • 使用Zod进行输入验证

错误处理

该应用程序包括以下全面的错误处理:

  • API费率限制
  • 推文长度无效
  • 网络连接问题
  • 身份验证失败
  • AI响应生成错误

贡献

  1. 分叉存储库
  2. 创建功能分支
  3. 提交您的更改
  4. 推到分支
  5. 创建新的Pull请求