Mastra
Tweet araması, profiller, trendler ve incelenen X yazıları için TwexAPI MCP aracılığıyla TypeScript Mastra aracıları oluşturun.
TwexAPI’nin MCP sunucusu aracılığıyla bir Mastra Twitter API aracısı oluşturun. Tweet’leri arayın, profilleri inceleyin, eğilimleri okuyun ve yazma işlemlerini inceleyin. Tweet kimliklerini, imleçleri ve rota adlarını yalnızca sohbet özetleri yerine JSON olarak yazıldığı gibi koruyun.
Mastra’yı neden TwexAPI ile kullanmalısınız?
Mastra bir TypeScript aracı çerçevesidir. TwexAPI, “explore” ve twexapi_request yoluyla uç nokta keşfi ve kimliği doğrulanmış çağrılar sağlar.
| Temsilci görevi | TwexAPI rotası | Bir sonraki adım için saklayın |
|---|---|---|
| Tweet’lerde ara | POST /twitter/advanced_search/page |
Sorgu, tweet kimlikleri, yazarlar, “created_at”, imleç |
| Bir profili inceleme | GET /twitter/{screen_name}/about |
Kullanıcı kimliği, kullanıcı adı, biyografi, takipçi sayısı |
| Trendleri okuyun | GET /twitter/global-trending/tweets |
Ülke, konu, tweet satırları |
| Gönder veya yanıtla | POST /twitter/tweets/create |
Tweet kimliği, rota, insan onayı, çerez onayı |
Zaten Vercel AI SDK modellerini kullanan TypeScript uygulamaları için Mastra’yı kullanın. Model gerektirmeyen zamanlanmış işler için TypeScript SDK veya CLI kullanın.
Önkoşullar
- Node.js 20 veya üzeri
- Bir TwexAPI API anahtarı
- Mastra destekli bir model sağlayıcı anahtarı Public docs focus on API-key reads.
Genel X okumalarının X Developer kimlik bilgilerine ihtiyacı yoktur. TwexAPI ile kimlik doğrulaması yapın.
Kurulum
npm install @mastra/core @mastra/mcp @ai-sdk/openai dotenv
TWEXAPI_API_KEY=YOUR_API_KEY
OPENAI_API_KEY=sk-...
TwexAPI MCP’ye bağlanın
import "dotenv/config";
import { MCPClient } from "@mastra/mcp";
export const twexapiMcp = new MCPClient({
servers: {
twexapi: {
url: new URL("https://api.twexapi.io/mcp"),
requestInit: {
headers: {
"x-api-key": process.env.TWEXAPI_API_KEY!,
},
},
},
},
});
Sunucu keşif için explore ve kimliği doğrulanmış çağrılar için twexapi_request sunar. Kimliği doğrulanmamış MCP istekleri 401 döndürür.
Tam örnek
import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
import { writeFile } from "node:fs/promises";
import { twexapiMcp } from "./mcp";
type TweetRow = {
tweet_id: string;
text: string;
author_username?: string;
created_at?: string;
};
type TweetSearchHandoff = {
query: string;
route_used: string;
tweets: TweetRow[];
has_more: boolean;
next_cursor: string | null;
stop_reason: "complete" | "requested_limit" | "cursor_stalled" | "page_cap";
};
const tools = await twexapiMcp.listTools();
export const twexapiAgent = new Agent({
name: "twexapi-agent",
instructions: `
Use TwexAPI MCP for Twitter API requests.
Call explore before twexapi_request.
Preserve exact IDs and cursors. Never invent missing tweet fields.
Ask for confirmation before read_only: false actions.
Return only valid JSON matching the handoff contract.
`,
model: openai("gpt-4o-mini"),
tools,
});
const result = await twexapiAgent.generate(
`Search 25 recent tweets about Mastra MCP.
Return JSON with query, route_used, tweets[{tweet_id,text,author_username,created_at}],
has_more, next_cursor, and stop_reason.`
);
const handoff = JSON.parse(result.text) as TweetSearchHandoff;
await writeFile(
"twexapi-mastra-handoff.json",
JSON.stringify(handoff, null, 2),
"utf8"
);
Başka bir iş akışı tüketmeden önce JSON’u doğrulayın. Konuşma geçmişi bir iş veritabanı değildir.
MCP yanıt sözleşmesini koruyun
explore çıktısındaki yalnızca belgelenmiş query ve body alanlarını twexapi_request’e iletin.
Aşağıdaki koşullardan biri doğru olduğunda sayfalandırmayı durdurun:
- Agent istenen toplamı toplar.
has_moreveyahas_next_pagefalse olur.next_cursoreksik veya tekrarlanır.- Yapılandırılmış sayfa sınırına ulaşılır.
Tweet ve kullanıcıları tweet_id veya user_id ile tekilleştirin.
Devam ettirilebilir agent devrini sürdürün
Tweet sayfaları
tweet_id, text, author_username, created_at, has_more, next_cursor ve orijinal sorguyu saklayın.
Profil satırları
user_id, username, name, description, takipçi sayıları ve arama girdisini saklayın.
Trend satırları
Ülke, konu, tweet kimlikleri ve etkileşim metriklerini saklayın.
Yazma işlemleri
Rotayı, önizleme metnini ve insan onayını saklayın. Çerezleri devir dosyasının dışında tutun. Bkz..
Tam kontrol listesi için bkz. Agent MCP Handoff.
Hata işleme oluşturun
| Durum | Anlam | Agent kararı |
|---|---|---|
400 |
Geçersiz rota veya parametreler | Yeniden denemeden önce isteği düzeltin |
401 |
Eksik veya geçersiz API anahtarı | Durdurun ve kimlik bilgisini değiştirin |
403 |
Erişim reddedildi veya kredi | Yazmaları duraklatın; Get Balance kontrol edin |
429 |
Hız sınırına ulaşıldı | Geri çekilin, ardından aynı imleçle devam edin |
5xx |
Geçici sunucu hatası | Güvenli okumalara sınırlı geri çekilme uygulayın |
Okuma kontrolü yapmadan zaman aşımından sonra bir yazmayı asla yeniden denemeyin. Bkz. Error Handling ve Rate Limits.
X işlemlerinden önce onay isteyin
Call explore with include_writes true only when the user asked to post, like, follow, or DM.
Stop before any read_only: false call.
Show method, path, tweet text or target username, and media URLs.
Do not send cookie values in the model output.
Onaydan sonra CLI --dry-run ile önizleyin, ardından REST veya TypeScript SDK üzerinden yürütün.
Birden fazla MCP sunucusuna bağlanın
export const mcp = new MCPClient({
servers: {
twexapi: {
url: new URL("https://api.twexapi.io/mcp"),
requestInit: {
headers: { "x-api-key": process.env.TWEXAPI_API_KEY! },
},
},
twexapiDocs: {
url: new URL("https://docs.twexapi.io/mcp"),
},
},
});
TwexAPI sunucu adını sabit tutun. Temsilciye yalnızca mevcut iş için gerekli araçları verin.
Paket versiyonları
| Paket | Desteklenen aralık |
|---|---|
| Node.js | >=20 |
@mastra/core |
>=0.10 |
@mastra/mcp |
>=0.10 |