使用说明
X API FastMCP服务器
运行本地MCP服务器,将X API OpenAPI规范公开为使用的工具 FastMCP。流媒体和webhook端点被排除在外。
先决条件
- Python 3.9+
- X开发者平台应用程序(获取代币)
- 可选:如果您想运行Grok测试客户端,请使用xAI API密钥
设置(本地)
- 创建虚拟环境并安装依赖项:
python -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
- 创建您的本地
.env:cp env.example .env- 必填值(不要跳过):
X_OAUTH_CONSUMER_KEYX_OAUTH_CONSUMER_SECRETX_BEARER_TOKEN(此设置需要;即使使用OAuth1,也要保持设置)
- OAuth1回调(默认值很好):
X_OAUTH_CALLBACK_HOST(默认值127.0.0.1)X_OAUTH_CALLBACK_PORT(默认值8976)X_OAUTH_CALLBACK_PATH(默认值/oauth/callback)X_OAUTH_CALLBACK_TIMEOUT(默认值300)
- 服务器设置(可选):
X_API_BASE_URL(默认值https://api.x.com)X_API_TIMEOUT(默认值30)MCP_HOST(默认值127.0.0.1)MCP_PORT(默认值8000)X_API_DEBUG(默认值1)
- 工具筛选(可选,逗号分隔):
X_API_TOOL_ALLOWLIST
- 可选Grok测试客户端:
XAI_API_KEYXAI_MODEL(默认值grok-4-1-fast)MCP_SERVER_URL(默认值http://127.0.0.1:8000/mcp)
- 可选的OAuth2令牌生成:
CLIENT_IDCLIENT_SECRETX_OAUTH_ACCESS_TOKEN
- `X_OAUTH_ACCESS_TOKEN_SECRET` (optional)
- 可选的OAuth1调试输出:
X_OAUTH_PRINT_TOKENSX_OAUTH_PRINT_AUTH_HEADER
- 在您的X Developer应用程序中注册回调URL:
http://<X_OAUTH_CALLBACK_HOST>:<X_OAUTH_CALLBACK_PORT><X_OAUTH_CALLBACK_PATH>
示例(默认值):
http://127.0.0.1:8976/oauth/callback
- 启动服务器:
python server.py
MCP端点为 http://127.0.0.1:8000/mcp 默认情况下。
- 连接MCP客户端:
- 本地客户端:指向
http://127.0.0.1:8000/mcp. - 远程客户端:通过隧道连接本地服务器(例如ngrok)并使用公共URL。
白名单工具
使用 X_API_TOOL_ALLOWLIST 加载一组小而明确的工具:
X_API_TOOL_ALLOWLIST=getUsersByUsername,createPosts,searchPostsRecent
启动时加载OpenAPI规范时应用白名单,因此重新启动 更改后的服务器。在构建您的工具之前,请参阅下面的完整工具列表 对抗主义者。
OAuth1流(启动行为)
启动时,服务器打开浏览器以获取OAuth1同意,并等待
回拨。令牌仅在服务器的生命周期内保存在内存中
过程。集 X_OAUTH_PRINT_TOKENS=1 打印令牌,或
X_OAUTH_PRINT_AUTH_HEADER=1 打印请求标头。
可用的工具调用(已准备就绪)
以下是您可以通过以下方式将工具调用列入白名单的完整列表
X_API_TOOL_ALLOWLIST。将其中任何一个复制到您的 .env 对抗主义者。
addListsMemberaddUserPublicKeyappendMediaUploadblockUsersDmscreateCommunityNotescreateComplianceJobscreateDirectMessagesByConversationIdcreateDirectMessagesByParticipantIdcreateDirectMessagesConversationcreateListscreateMediaMetadatacreateMediaSubtitlescreatePostscreateUsersBookmarkdeleteActivitySubscriptiondeleteAllConnectionsdeleteCommunityNotesdeleteConnectionsByEndpointdeleteConnectionsByUuidsdeleteDirectMessagesEventsdeleteListsdeleteMediaSubtitlesdeletePostsdeleteUsersBookmarkevaluateCommunityNotesfinalizeMediaUploadfollowListfollowUsergetAccountActivitySubscriptionCountgetActivitySubscriptionsgetChatConversationgetChatConversationsgetCommunitiesByIdgetComplianceJobsgetComplianceJobsByIdgetConnectionHistorygetDirectMessagesEventsgetDirectMessagesEventsByConversationIdgetDirectMessagesEventsByIdgetDirectMessagesEventsByParticipantIdgetInsights28HrgetInsightsHistoricalgetListsByIdgetListsFollowersgetListsMembersgetListsPostsgetMarketplaceHandleAvailabilitygetMediaAnalyticsgetMediaByMediaKeygetMediaByMediaKeysgetMediaUploadStatusgetNewsgetOpenApiSpecgetPostsAnalyticsgetPostsByIdgetPostsByIdsgetPostsCountsAllgetPostsCountsRecentgetPostsLikingUsersgetPostsQuotedPostsgetPostsRepostedBygetPostsRepostsgetSpacesBuyersgetSpacesByCreatorIdsgetSpacesByIdgetSpacesByIdsgetSpacesPostsgetTrendsByWoeidgetTrendsPersonalizedTrendsgetUsagegetUserPublicKeysgetUsersAffiliatesgetUsersBlockinggetUsersBookmarkFoldersgetUsersBookmarksgetUsersBookmarksByFolderIdgetUsersByIdgetUsersByIdsgetUsersByUsernamegetUsersByUsernamesgetUsersFollowedListsgetUsersFollowersgetUsersFollowinggetUsersLikedPostsgetUsersListMembershipsgetUsersMegetUsersMentionsgetUsersMutinggetUsersOwnedListsgetUsersPinnedListsgetUsersPostsgetUsersRepostsOfMegetUsersTimelinehidePostsReplyinitializeMediaUploadlikePostmediaUploadmuteUserpinListremoveListsMemberByUserIdrepostPostsearchCommunitiessearchCommunityNotesWrittensearchEligiblePostssearchNewssearchPostsAllsearchPostsRecentsearchSpacessearchUserssendChatMessageunblockUsersDmsunfollowListunfollowUserunlikePostunmuteUserunpinListunrepostPostupdateActivitySubscriptionupdateLists
生成OAuth2用户令牌(可选)
- 添加
CLIENT_ID和CLIENT_SECRET到你的.env. - 更新
redirect_uri在generate_authtoken.py以匹配您的应用程序设置。 - 跑
python generate_authtoken.py并按照提示进行操作。 - 将打印的访问令牌复制到
.env作为X_OAUTH_ACCESS_TOKEN. 如果您的流返回一个秘密,请将其存储为X_OAUTH_ACCESS_TOKEN_SECRET.
运行Grok MCP测试客户端(可选)
- 集
XAI_API_KEY在.env. - 确保您的MCP服务器正在本地运行(或设置
MCP_SERVER_URL). - 如果Grok未在您的计算机上运行,请使用ngrok暴露您的本地MCP
服务器和设置
MCP_SERVER_URL指向以结尾的公共HTTPS URL/mcp. 示例流程:ngrok http 8000然后MCP_SERVER_URL=https://<id>.ngrok-free.dev/mcp. - 跑
python test_grok_mcp.py.
备注
- 端点具有
/stream或/webhooks在路径中被排除。 - 操作已标记
Stream或Webhooks,或标有x-twitter-streaming: true,被排除在外。 - OpenAPI规范从以下位置获取
https://api.twitter.com/2/openapi.json在 启动。
