Syncable Cli
FreeNot checkedMCP server for syncable cli which scans code repo for security risks, vulnerabilities and project overview.
About
MCP server for syncable cli which scans code repo for security risks, vulnerabilities and project overview.
README
Local Development & Testing
Prerequisites
- Rust 1.70+ (
rustup update) - Python 3.8+ (for client testing)
- uv (
brew install uvon macOS)
Building from Source
- Clone the repository:
git clone https://github.com/your-org/syncable-cli-mcp-server.git
cd syncable-cli-mcp-server
- Build the project:
# Debug build
cargo build
# Release build
cargo build --release
The binaries will be available in:
- Debug:
./target/debug/mcp-stdioand./target/debug/mcp-sse - Release:
./target/release/mcp-stdioand./target/release/mcp-sse
Testing the MCP Server
- Test Rust Components:
# Run unit tests
cargo test
# Run with logging
RUST_LOG=debug cargo test
- Manual Testing with Python Client:
First, start the MCP server in a terminal:
# For stdio mode
cargo run --bin mcp-stdio
# For SSE mode (in another terminal)
cargo run --bin mcp-sse
Then in another terminal, set up the Python environment:
# Setup Python environment
cd mcp-python-server-client
# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -r requirements.txt
# Or use sync if you have a requirements.lock
uv sync
# Test stdio mode
uv run python -m src.mcp_py_client_rust_server_stdio
# Test SSE mode
uv run python src.mcp_py_client_rust_server_sse
- Verify Available Tools:
The server should display available tools on startup. You should see:
- about_info
- analysis_scan
- security_scan
- dependency_scan
- Test Each Tool:
# Using stdio mode for example
cargo run --bin mcp-stdio
In another terminal:
import asyncio
from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client
async def test_tools():
async with stdio_client(
StdioServerParameters(command="../target/debug/mcp-stdio")
) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Test about_info
result = await session.call_tool("about_info", {})
print("About Info:", result)
# Test analysis_scan
result = await session.call_tool("analysis_scan",
{"path": ".", "display": "matrix"})
print("Analysis Scan:", result)
# Test security_scan
result = await session.call_tool("security_scan", {"path": "."})
print("Security Scan:", result)
# Test dependency_scan
result = await session.call_tool("dependency_scan", {"path": "."})
print("Dependency Scan:", result)
asyncio.run(test_tools())
- Integration Testing with LangGraph:
# Install LangGraph dependencies
uv add langgraph openai python-dotenv langchain_mcp_adapters
# Test stdio integration
uv run python -m src.langgraph_stdio_demo
# Test SSE integration
uv run python -m src.langgraph_sse_demo
Common Issues & Debugging
- Port Already in Use (SSE mode):
lsof -i :8000 # Check if port 8000 is in use
kill -9 <PID> # Kill the process if needed
- Binary Not Found (stdio mode):
- Ensure the binary path in Python client matches your build location
- Check
cargo buildsucceeded - Verify binary permissions (
chmod +xif needed)
- Enable Debug Logging:
# For Rust server
RUST_LOG=debug cargo run --bin mcp-stdio
# For Python client
uv python -c "import logging; logging.basicConfig(level=logging.DEBUG)"
Automated Release Process with release-plz
We use release-plz to automate versioning and publishing. The workflow is configured in .github/workflows/release-plz.yml.
- Setup:
# Install release-plz
cargo install release-plz
# Configure GitHub token
export GITHUB_TOKEN=your_github_token
export CARGO_REGISTRY_TOKEN=your_crates_io_token
- Check Release Status:
# Preview what would be released
release-plz check
- Release Process:
- Push your changes to the
mainbranch - The GitHub Action will automatically:
- Update versions in Cargo.toml
- Generate changelog entries
- Create a release PR or publish directly
- Push to crates.io when ready
- Manual Release (if needed):
# Create changelog and bump version
release-plz release
# Update changelog only
release-plz update-changelog
Manual Pre-release Checklist
Before publishing to crates.io:
- All tests pass:
cargo test - Code formatted:
cargo fmt --all -- --check - No clippy warnings:
cargo clippy -- -D warnings - Documentation up-to-date:
cargo doc --no-deps - Version bumped in:
- Cargo.toml
- CHANGELOG.md
- Python client examples work
- Both transport modes (stdio/SSE) tested
Publishing Process
Only after local testing succeeds:
# Login to crates.io
cargo login
# Dry run
cargo publish --dry-run
# Actual publish
cargo publish
Installing Syncable Cli
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/syncable-dev/syncable-cli-mcp-serverFAQ
Is Syncable Cli MCP free?
Yes, Syncable Cli MCP is free — one-click install via Unyly at no cost.
Does Syncable Cli need an API key?
No, Syncable Cli runs without API keys or environment variables.
Is Syncable Cli hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Syncable Cli in Claude Desktop, Claude Code or Cursor?
Open Syncable Cli on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Syncable Cli with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
