Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"io-github-kazkozdev-abscissa-kazkozdev": {
"args": [
"abscissa"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Abscissa is a Python stdio MCP server for Linear. It turns Linear's GraphQL API into 42 tools for an MCP client: issues, projects, cycles, dependencies, comments, labels, workflow states, teams, and users.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'abscissa' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked abscissa against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
Manage Supabase projects — databases, auth, storage, and edge functions
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors
MCP Security Weekly
Get CVE alerts and security updates for io.github.KazKozDev/abscissa and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Abscissa is a Python stdio MCP server for Linear. It turns Linear's GraphQL API into 42 tools for an MCP client: issues, projects, cycles, dependencies, comments, labels, workflow states, teams, and users.
The design priority is deliberate control over project data. Read operations
return cursor-paginated results; get_user_issues() resolves the authenticated
Linear user; archive and delete tools require an explicit confirm=true before
they make a destructive API call. The server stores no credentials and reads
LINEAR_API_KEY from its process environment.
Abscissa uses the stdio transport from the Model Context Protocol. Any client that supports stdio MCP can launch it as a local tool process.
You need Python 3.10+ and a Linear personal API key.
git clone https://github.com/KazKozDev/abscissa.git
cd abscissa
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
export LINEAR_API_KEY='lin_api_…'
.venv/bin/abscissa
You can also install Abscissa directly from PyPI:
pip install abscissa
The final command starts the MCP server on standard input and output. Register
.venv/bin/abscissa as a stdio command in your MCP client, and pass
LINEAR_API_KEY through that client's environment or secret manager.
The key remains outside the repository. The .gitignore excludes common local
environment files, including .env and .venv.
Once Abscissa is registered in your MCP client, try prompts like:
Show my open Linear issues grouped by project.
Create an issue in ENG for fixing onboarding copy.
List issues blocked by GEN-32.
| Area | Tools |
|---|---|
| Identity | get_current_user |
| Issues | create_issue, update_issue, search_issues, get_user_issues, get_issue, assign_issue, add_comment, set_issue_estimate |
| Issue lifecycle | archive_issue, delete_issue |
| Dependencies | list_issue_dependencies, add_issue_dependency, remove_issue_dependency |
| Labels and workflow | list_workflow_states, list_issue_labels, create_label, add_issue_label, remove_issue_label |
| Teams and people | list_teams, get_team, list_users |
| Projects | create_project, get_project, list_projects, list_project_issues, set_issue_project, remove_issue_from_project, update_project, update_project_details, archive_project |
| Project labels | list_project_labels, create_project_label, add_project_label, remove_project_label |
| Project updates | create_project_update, list_project_updates |
| Cycles | create_cycle, update_cycle, archive_cycle, list_cycles, list_cycle_issues |
Search and list tools accept limit and cursor. Their responses keep the same
shape:
{
"items": [],
"next_cursor": null
}
Pass a non-null next_cursor back as cursor to request the next page.
list_issue_dependencies returns separate blocks and blocked_by lists.
Each item includes its relation_id; use it to remove that dependency. Its
next_cursors object has separate cursors for each direction.
archive_issue, archive_project, and delete_issue are marked with MCP's
destructiveHint. They refuse to call Linear until the client invokes them
with confirm=true.
Deletion requires explicit confirmation: set confirm=true
This prevents an accidental tool call from deleting or archiving data. It does not replace Linear's own access controls: the API key still determines which resources the server may read or change.
.venv/bin/ruff check .
.venv/bin/python -m pytest
The current checkout produces:
All checks passed!
.....
... [View full README on GitHub](https://github.com/kazkozdev/abscissa#readme)