linear-mcp-wrapper
Provides tools for interacting with Linear's API, enabling AI agents to manage issues and comments (e.g., get_issue, list_comments, save_comment, save_issue, delete_comment) through the Linear platform.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linear-mcp-wrapperget issue ENG-42 and its comments"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
linear-mcp-wrapper
Linear の MCP サーバーへの接続を肩代わりする薄いサーバー。
呼ぶ側(tsuzuri の runner)はこのサービスの URL だけを知っていればよく、Linear の資格情報を一切持たない、という形にするための repo。
before: runner ──MCP──> mcp.linear.app (runner が client_secret を持つ)
after: runner ──MCP──> このサービス ──MCP──> mcp.linear.appいまの状態: 置いただけ
まだサーバーとして動かない。 tsuzuri から認証まわりのコードを退避させただけで、
プロキシ本体(src/main.py)はまだ無い。tsuzuri 側もまだ何も消していないので、
そちらは今までどおり直接 Linear を見ている。
ファイル | 出どころ |
| tsuzuri の |
| tsuzuri の |
| tsuzuri の |
| tsuzuri の |
src/auth.py の docstring で、もう合っていない記述
そのままコピーした副作用。中身の理屈は全部生きているが、参照先の名前だけが古い。
「入口は intake.py、出口は writeback.py」— どちらも tsuzuri 側に残っている
「MCP サーバーへの接続ヘッダに使う(mcp_tools.build)。唯一の呼び出し元。」— ここを呼ぶのは、これから書くプロキシ本体になる
Related MCP server: Uno MCP Stdio
これから書くもの
プロキシ本体(
src/main.py)。 ここが本番。素通しの HTTP プロキシでは済まない:POST のレスポンスが JSON のことも SSE のこともある (クライアントは
Accept: application/json, text/event-streamで来る)別に GET で長寿命の SSE を張る(サーバー→クライアント方向。切れたら再接続してくる)
mcp-session-idとmcp-protocol-versionを両方向で素通しする必要がある。 初回レスポンスで発行されたセッション ID を、クライアントは以降の全リクエストに付けてくるセッション終了は DELETE
バッファしないこと。
await response.json()で受けると SSE がそこで固まる。httpx.AsyncClient.stream()+ Starlette のStreamingResponseで流す
呼ぶ側の認証。 クライアントから来る
Authorizationは Cloud Run の OIDC ID token にして、ここで上流用のトークン(auth.py)に差し替える。 Cloud Run は--no-allow-unauthenticatedで立てるツールの絞り込み(あとで)。
tools/listのレスポンスから許可リストにない ツールを落とす。いまは tsuzuri 側のINTAKE_TOOL_FILTER/WRITEBACK_TOOL_FILTERがやっているので、動いてから移す
3 をやるときに知っておくこと
上流のツールを全部そのまま渡すと、呼ぶ側のモデル呼び出しごと落ちる。
Linear の MCP は 53 本公開していて、Vertex の function declaration が受け付けない
スキーマが混ざっていると 400 INVALID_ARGUMENT になる(tsuzuri で実測)。
いま tsuzuri が使っているのは実質この 4 本だけ:
入口:
get_issue,list_comments出口:
save_comment,save_issue
入口と出口でリストを分けていること自体が権限の境界になっている(一本にまとめると、
依頼を読むだけのエージェントが delete_comment を持つ)。ここに移すときも分けたまま
持ってくること。エンドポイントを分けるのが素直。
開発
uv syncローカルでは LINEAR_API_KEY(個人 API キー)を入れれば OAuth を通らずに済む。
Cloud Run では LINEAR_CLIENT_ID + LINEAR_CLIENT_SECRET(Secret Manager)を使う。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Linear project management and issue tracking
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Linear MCP — wraps the Linear GraphQL API (OAuth)
Authenticated MCP server for ClearPolicy policy and compliance workflows.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA MCP Proxy (Local <-> SSE) with token based authentication.1MIT
- AlicenseNot gradedqualityDmaintenanceLocal stdio proxy for Uno MCP Gateway that enables MCP clients without OAuth support to securely connect to authenticated remote servers.20 PyPI1MIT
- AlicenseNot gradedqualityAmaintenanceBridge that lets stdio-only MCP clients connect to remote MCP servers with OAuth and other auth support, enabling local clients to use remote, authorized MCP servers.60 npm54MIT
- AlicenseNot gradedqualityBmaintenanceEnables multiple MCP clients to securely access various third-party MCP backends through a single HTTP gateway, with modern MCP handshake compatibility and session lifecycle management.9 npmMIT