SidelineIQ MCP服务器
MCP(模型上下文协议)服务器套件 SidelineIQ --自主AI运动损伤智能平台。此存储库包含SidelineIQ伤害情报代理用作工具的所有MCP服务器。
建筑
┌─────────────────────┐ HTTP ┌──────────────────────────────┐
│ sidelineiq-agents │ ────────────> │ sidelineiq-mcp-servers │
│ (Claude Agent) │ │ │
└─────────────────────┘ │ ┌─ Farcaster Server :3101 │
│ ├─ Twitter Server :3102 │
│ └─ Web Server :3103 │
└──────────────────────────────┘
│ │
▼ ▼
External APIs Neon PostgreSQL每台服务器都是一个独立的Express应用程序,通过以下方式公开MCP工具 流式HTTP 运输 /mcp。所有服务器都是无状态的,并作为单独的Railway进程部署。
服务器和工具
Farcaster MCP服务器(端口3101)
通过Neynar API向Farcaster发布。
| 工具 | 说明 |
|---|---|
farcaster_publish_cast | 发布单个角色转换(最多320个字符) |
farcaster_publish_thread | 发布多强制转换线程(2-10个强制转换) |
farcaster_get_cast | 按哈希值检索强制转换 |
farcaster_delete_cast | 按哈希删除强制转换 |
推特MCP服务器(端口3102)
通过Twitter API v2发布到X/Twitter。
| 工具 | 说明 |
|---|---|
twitter_publish_tweet | 发布一条推文(最多280个字符) |
twitter_publish_thread | 发布多条推文(2-10条推文) |
twitter_get_tweet | 按ID检索推文 |
twitter_delete_tweet | 按ID删除推文 |
SidelineIQ Web MCP服务器(端口3103)
在Neon PostgreSQL中读取/写入伤害帖子。
| 工具 | 说明 |
|---|---|
web_create_injury_post | 创建新的受伤岗位 |
web_update_injury_post | 更新现有帖子 |
web_get_post | 按ID检索帖子 |
web_flag_for_md_review | 标记一个帖子以供MD审查 |
web_list_posts | 列出/过滤伤害帖子 |
快速开始
先决条件
- Node.js 18+
- Neon PostgreSQL数据库
- Neynar API密钥(用于Farcaster)
- Twitter API v2凭据(用于Twitter)
设置
# Clone and install
git clone
cd sidelineiq-mcp-servers
npm install
# Configure environment
cp .env.example .env
# Fill in your API keys in .env
# Run database migration
psql $DATABASE_URL -f src/shared/migrations/001_injury_posts.sql
# Start all servers (development)
npm run dev
# Or start individual servers
npm run dev:farcaster
npm run dev:twitter
npm run dev:web验证
每台服务器都公开一个健康端点:
curl http://localhost:3101/health # Farcaster
curl http://localhost:3102/health # Twitter
curl http://localhost:3103/health # Web环境变量
看 .env.示例 对于所有必需的变量:
| 变量 | 描述 |
|---|---|
PORT_FARCASTER | Farcaster服务器端口(默认:3101) |
PORT_TWITTER | Twitter服务器端口(默认值:3102) |
PORT_WEB | Web服务器端口(默认值:3103) |
NEYNAR_API_KEY | Farcaster的Neynar API密钥 |
NEYNAR_SIGNER_UUID | Neynar签名者UUID |
SIDELINEIQ_FARCASTER_FID | SidelineIQ Farcaster FID |
TWITTER_API_KEY | Twitter API密钥 |
TWITTER_API_SECRET | Twitter API秘密 |
TWITTER_ACCESS_TOKEN | Twitter访问令牌 |
TWITTER_ACCESS_TOKEN_SECRET | Twitter访问令牌密钥 |
TWITTER_BEARER_TOKEN | Twitter承载令牌 |
DATABASE_URL | Neon PostgreSQL连接字符串 |
MD_REVIEW_CONFIDENCE_THRESHOLD | MD审查的置信阈值(默认值:0.75) |
发展
# Build
npm run build
# Type check
npm run lint
# Run tests
npm test
# Watch tests
npm run test:watch铁路部署
每个服务器通过以下方式部署为单独的Railway进程 Procfile:
farcaster: node dist/servers/farcaster/server.js
twitter: node dist/servers/twitter/server.js
web: node dist/servers/web/server.js- 将仓库连接到铁路
- 在铁路仪表板中设置所有环境变量
- 铁路自动检测
Procfile并运行每个进程
每个服务器都可以独立重启。
添加新的MCP服务器
- 创建
src/servers/{name}/目录 - 添加
server.ts(Express+MCP服务器设置) - 添加
client.ts(API客户端包装器) - 添加
tools.ts(使用Zod模式的工具定义) - 将端口分配添加到
CLAUDE.md和.env.example - 注册于
src/index.ts - 将铁路流程添加到
Procfile - 在中添加测试
tests/{name}.test.ts - 更新此自述文件
工具命名约定
格式: {server}_{action}_{resource}
- 总是
snake_case - 始终以服务为前缀
- 示例:
farcaster_publish_cast,twitter_delete_tweet,web_create_injury_post
项目结构
src/
├── index.ts # Main entry (starts all servers)
├── shared/
│ ├── database.ts # Neon PostgreSQL client
│ ├── errors.ts # Error handling utilities
│ ├── logger.ts # Structured logging (stderr only)
│ ├── types.ts # Shared TypeScript interfaces
│ └── migrations/
│ └── 001_injury_posts.sql
└── servers/
├── farcaster/
│ ├── server.ts
│ ├── client.ts
│ └── tools.ts
├── twitter/
│ ├── server.ts
│ ├── client.ts
│ └── tools.ts
└── web/
├── server.ts
├── client.ts
└── tools.ts相关存储库
- 边缘化代理人 --通过HTTP将这些MCP服务器作为工具使用
- 边缘性 --前端(Next.js/Vercel),从同一Neon数据库读取
- 矫形器 --独立平台,独立代码库
