Skip to content

Releases: achetronic/twitter-mcp

v0.2.4

Choose a tag to compare

@achetronic achetronic released this 02 Mar 00:47

Tool name prefixing

MCP tools are now automatically prefixed with a sanitized version of server.name from the config. This prevents tool name collisions when multiple MCP servers are connected to the same client.

For example, with server.name: "some-mcp", a tool registered as something is exposed to the client as some_mcp_something.

How it works

  • server.name is lowercased, non-alphanumeric characters are replaced with _, and a trailing _ is appended.
  • If server.name is not set, each project falls back to its own default (e.g. some-mcp.).

v0.2.3

Choose a tag to compare

@achetronic achetronic released this 27 Feb 12:14
b45ddee

Tiny patch. If you use tool policies but have JWT turned off, everything was getting blocked. Now it works.

🐛 Bug fixes

Tool policies with JWT disabled — Having policies configured while JWT validation was off caused every single tool
call to be denied. Fixed. Policies now run normally either way.

📝 Notes

  • mcp-go bumped to v0.44.1.

v0.2.2

Choose a tag to compare

@achetronic achetronic released this 27 Feb 03:43
b45ddee

Simplified JWT authentication. Cleaner config, less moving parts.

💥 Breaking changes

JWT config structure changed — The nested validation block is gone. Update your config:

# Before
middleware:
  jwt:
    enabled: true
    validation:
      strategy: "local"
      forwarded_header: "X-Validated-JWT"
      local:
        jwks_uri: "https://your-idp.com/.well-known/jwks.json"
        cache_interval: 5m

# After
middleware:
  jwt:
    enabled: true
    jwks_uri: "https://your-idp.com/.well-known/jwks.json"
    cache_interval: 5m

✨ What's new

Local-only JWT validation — The server always validates JWTs itself against the JWKS endpoint. The forwarded strategy has been removed.

Payload in context — The decoded JWT payload is passed through context once and reused by tool policies. No double-decoding.

📝 Notes

If you were using the forwarded strategy, disable the JWT middleware (enabled: false) and handle validation at the infrastructure level.

v0.2.1

Choose a tag to compare

@achetronic achetronic released this 25 Feb 02:22

Linter fixes, no functional changes.

🐛 Bug fixes

Unchecked error returnsScheduleStore.Update calls now properly check and propagate errors.

Unnecessary fmt.Sprintf — Removed redundant fmt.Sprintf wrappers in JWT middleware error responses.

Defer in infinite loopresp.Body.Close() was deferred inside an infinite loop and would never run. Now closed explicitly after use.

v0.2.0

Choose a tag to compare

@achetronic achetronic released this 25 Feb 01:51

New scheduling system and search improvements.

✨ New features

Tweet scheduling — Queue tweets and threads for later publishing. Stored in a local YAML file so nothing gets lost if the server restarts. The AI is always in the loop — nothing publishes automatically. New tools: schedule_tweet, schedule_update, schedule_delete, schedule_list, schedule_get_publishable, schedule_publish.

🐛 Bug fixes

search_topics returning empty — Was using max_results=5 but Twitter requires a minimum of 10. Fixed default and added a floor.

Release pipeline downloading wrong artifacts — The Docker build artifact was being included in the release download, causing it to fail. Now only twitter-mcp-* artifacts are downloaded.

🔧 Improvements

Fresher search results — Searches now only return tweets from the last 24 hours, sorted by recency. Heat scores are now much more representative of what's happening now.

📝 Notes

Updated mcp-go from v0.43.2 to v0.44.0.

v0.1.1

Choose a tag to compare

@achetronic achetronic released this 24 Feb 18:14

Fix to make it compile with newer mcp-go versions.

🐛 Bug fixes

Wasn't compiling — The mcp-go library changed how tool arguments are accessed. Now it works.

📝 Notes

Updated mcp-go from v0.43.2 to v0.44.0.

v0.1.0

Choose a tag to compare

@achetronic achetronic released this 24 Feb 16:22

First release. A Model Context Protocol server that lets AI assistants interact with Twitter/X—read timelines, post tweets, analyze trends, and more.

✨ What's new

Reading tools — Fetch your home timeline, mentions, search tweets, explore trending topics by location, view user profiles and their tweets, access bookmarks and DMs.

Writing tools — Post tweets and threads, reply to conversations, like/unlike, retweet/undo, manage bookmarks, follow/unfollow users, send direct messages.

Topic analysis — Compare multiple topics at once with a heat score (0-100) that combines tweet volume and engagement. Useful for spotting what's trending in your niche.

Two transport modes — STDIO for simple local setups, HTTP for production with full auth support.

Security (HTTP mode) — JWT validation with JWKS caching, tool-level access control using CEL expressions, policies based on JWT claims (groups, scopes), OAuth 2.0 metadata endpoints (RFC 9728), and access logging with header redaction.

📦 Platforms

Binaries available for Linux (amd64, arm64), macOS (amd64, arm64), and Windows (amd64).

Docker images at ghcr.io/achetronic/twitter-mcp:v0.1.0 for linux/amd64 and linux/arm64.