🧠 MCP推特机器人
一个示例项目,演示如何构建 模型上下文协议(MCP)服务器和客户端 使用 谷歌双子座 发布推文(以前在推特上,现在是X)并运行动态工具。
🚀 内置:
- @模型上下文协议/sdk
- @谷歌/genai
- 推特-api-v2
- Node.js、Express、dotenv
______________________________________________________________________
✨ 特性
- 使用Google Gemini理解用户提示的交互式CLI聊天。
- MCP工具通过Gemini动态列出和调用。
- 使用Twitter API发布推文。
- 通过服务器发送事件(SSE)与服务器进行实时通信。
- 易于扩展:快速添加自己的工具。
______________________________________________________________________
📂 项目结构
.
├── client
│ ├── node_modules/
│ ├── .env
│ ├── index.js
│ ├── package-lock.json
│ └── package.json
│
├── server
│ ├── node_modules/
│ ├── .env
│ ├── index.js
│ ├── mcp.tool.js
│ ├── package-lock.json
│ └── package.json
│
______________________________________________________________________
🛠 安装
- 克隆存储库:
https://github.com/Zaki-Mohd/mcp-x-poster.git
cd mcp-x-poster- 安装依赖项:
npm install- 配置环境变量:
创建一个 .env 在根文件夹中创建文件并添加:
GEMINI_API_KEY=your_google_gemini_api_key
TWITTER_API_KEY=your_twitter_api_key
TWITTER_API_SECRET=your_twitter_api_secret
TWITTER_ACCESS_TOKEN=your_twitter_access_token
TWITTER_ACCESS_TOKEN_SECRET=your_twitter_access_token_secret⚠️ 确保不要承诺 .env 版本控制。
______________________________________________________________________
🚀 运行项目
1.️⃣ 启动MCP服务器:
npx nodemon index.js2.️⃣ 启动MCP客户端(在单独的终端中):
node index.js客户端将提示您输入消息;谷歌双子座决定是直接回答还是调用类似的工具 createPost.
______________________________________________________________________
⚙️ 运作原理
- MCP服务器公开了以下工具:
- createPost:发布推文 - addTwoNumbers:用于测试的简单数学工具
- MCP客户端:
- 列出服务器中的工具 - 将聊天记录和工具列表发送到Google Gemini - 如果Gemini返回 functionCall,客户端调用服务器上的工具,并将结果包含在下一个请求中
这个循环创建了一个动态的、人工智能辅助的工作流程。
______________________________________________________________________
🧩 添加自己的工具
在……里面 index.js,添加一个新工具,如下所示:
server.tool(
"toolName",
"Tool description",
{
param1: z.string(), // validate parameters with zod
param2: z.number()
},
async (args) => {
// Your logic here
return {
content: [
{ type: "text", text: "Result text" }
]
}
}
)客户端将通过以下方式自动发现它 listTools().
______________________________________________________________________
📦 需求
- Node.js v18或更新版本
- Twitter开发人员证书(API密钥和令牌)
- Google Gemini API密钥
______________________________________________________________________
❤️ 贡献
欢迎PR和建议!
