CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Sipflow

cmendes0101/sipflow-cursor-plugin
21 toolsHTTPregistry active
Summary

Connects your AI agent to a curated corpus of SIP and VoIP documentation covering 40+ vendor stacks (Kamailio, FreeSWITCH, Asterisk, Twilio, Cisco), 60+ RFCs, and STIR/SHAKEN specs. Exposes about 20 read-only tools for searching vendor docs, parsing SIP messages and SDP, rendering ladder diagrams, linting traces, reviewing configs, validating E.164 numbers, and checking STIR/SHAKEN identity headers. Every answer cites a source URL from the corpus. Hosted at mcp.sipflow.dev/mcp over streamable HTTP, so no local setup. Reach for this when you're debugging WebRTC negotiation, troubleshooting response codes, reviewing dialplan configs, or need authoritative references instead of LLM recall on telecom protocols.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

21 tools
search_sip_docs[cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only] Vector search over Sipflow's curated VoIP knowledge base: vendor docs (Asterisk, FreeSWITCH, Kamailio, OpenSIPS, Twilio, Cisco, etc.), SIP/SDP/WebRTC RFCs, STIR/SHAKEN material (RFC...4 params

[cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only] Vector search over Sipflow's curated VoIP knowledge base: vendor docs (Asterisk, FreeSWITCH, Kamailio, OpenSIPS, Twilio, Cisco, etc.), SIP/SDP/WebRTC RFCs, STIR/SHAKEN material (RFC...

Parameters* required
limitinteger
Maximum number of snippets to return (1-15).default: 5
querystring
Natural-language question or keywords. Be specific - include vendor name, header, error code, module, or RFC if known. Multi-sentence queries are fine.
vendorstring
Restrict results to a single vendor/stack (e.g. "asterisk", "kamailio"). Omit to search all vendors.one of asterisk · freeswitch · kamailio · opensips · freepbx · yate
sourceTypevalue
Restrict by document type. Available: rfc | pbx (Asterisk/FreeSWITCH/Kamailio/OpenSIPS) | sbc (SBCs) | cpaas (Twilio/Telnyx/...) | uc-cloud (Teams/Zoom/...) | endpoint (phones/softphones) | stir-shaken | transport (RTP/SRTP/DTLS/ICE/STUN/TURN RFCs) | regulatory | observability.
lookup_response_code[cost: free (pure CPU, no network) | read-only] Instant static lookup of a SIP response code (100-699). Returns name, RFC anchor, category, description, common operator-flavored causes, and known vendor-specific reason-phrase variants (e.g. OpenSIPS emits 484 'Invalid FROM' on...1 params

[cost: free (pure CPU, no network) | read-only] Instant static lookup of a SIP response code (100-699). Returns name, RFC anchor, category, description, common operator-flavored causes, and known vendor-specific reason-phrase variants (e.g. OpenSIPS emits 484 'Invalid FROM' on...

Parameters* required
codeinteger
SIP response code (e.g. 488 for Not Acceptable Here).
lookup_sip_header[cost: free (pure CPU, no network) | read-only] Instant lookup of a SIP header by canonical or compact form (e.g. "Via" / "v", "Diversion", "P-Asserted-Identity", "Identity", "Session-Expires"). Returns canonical form, compact alias, RFC anchor, where it appears (request / res...1 params

[cost: free (pure CPU, no network) | read-only] Instant lookup of a SIP header by canonical or compact form (e.g. "Via" / "v", "Diversion", "P-Asserted-Identity", "Identity", "Session-Expires"). Returns canonical form, compact alias, RFC anchor, where it appears (request / res...

Parameters* required
namestring
Header name (canonical, e.g. "Via", or compact, e.g. "v"). Case-insensitive.
detect_sip_stack[cost: free (pure CPU, no network) | read-only] Identify the SIP product behind a piece of input. Works on both: - a SIP trace (User-Agent / Server headers from PCAP/sngrep/syslog), and - a vendor config blob (kamailio.cfg, sip.conf, pjsip.conf, FreeSWITCH XML, opensips.cfg) d...3 params

[cost: free (pure CPU, no network) | read-only] Identify the SIP product behind a piece of input. Works on both: - a SIP trace (User-Agent / Server headers from PCAP/sngrep/syslog), and - a vendor config blob (kamailio.cfg, sip.conf, pjsip.conf, FreeSWITCH XML, opensips.cfg) d...

Parameters* required
kindstring
What the input is. "trace" looks at SIP headers only, "config" runs vendor-config heuristics, "auto" tries trace first then falls back to config detection.one of auto · trace · configdefault: auto
textstring
Raw SIP trace text OR a vendor config blob.
filenameHintstring
Optional filename (e.g. "kamailio.cfg", "pjsip.conf"). Strongly improves config-mode detection when supplied.
detect_sip_vendor_from_config[cost: free (pure CPU, no network) | read-only] Heuristic-only sibling of `detect_sip_stack`, scoped to vendor configs. Returns the matched vendor slug, a confidence level, and the structural signals that fired (loadmodule syntax, route blocks, profile elements, etc.). Use thi...2 params

[cost: free (pure CPU, no network) | read-only] Heuristic-only sibling of `detect_sip_stack`, scoped to vendor configs. Returns the matched vendor slug, a confidence level, and the structural signals that fired (loadmodule syntax, route blocks, profile elements, etc.). Use thi...

Parameters* required
textstring
Config blob (UTF-8 plaintext).
filenameHintstring
Optional filename ("kamailio.cfg", "pjsip.conf", "sofia/external.xml") to bias detection.
minimize_sip_trace[cost: free (pure CPU, no network) | read-only, no persistence] Reduce a raw SIP trace to a compact form suitable for sending to an LLM. Preserves SDP bodies and routing/auth/dialog headers; prunes well-known noise (User-Agent, Server, Allow, Accept-*, Date, P-* informational,...2 params

[cost: free (pure CPU, no network) | read-only, no persistence] Reduce a raw SIP trace to a compact form suitable for sending to an LLM. Preserves SDP bodies and routing/auth/dialog headers; prunes well-known noise (User-Agent, Server, Allow, Accept-*, Date, P-* informational,...

Parameters* required
textstring
Raw SIP trace text. Multiple messages may be concatenated.
maxBytesinteger
Truncate the minimized output if it exceeds this many bytes (default 200000, matches Sipflow's analyze pipeline).default: 200000
render_sip_ladder[cost: free (pure CPU, no network) | read-only] Parse a raw SIP trace (PCAP-decoded text, sngrep export, syslog, or pasted INVITE/200 dialog) and emit a Mermaid `sequenceDiagram` block visualizing the call flow. Most chat hosts (Claude, ChatGPT, Cursor, GitHub) render Mermaid...10 params

[cost: free (pure CPU, no network) | read-only] Parse a raw SIP trace (PCAP-decoded text, sngrep export, syslog, or pasted INVITE/200 dialog) and emit a Mermaid `sequenceDiagram` block visualizing the call flow. Most chat hosts (Claude, ChatGPT, Cursor, GitHub) render Mermaid...

Parameters* required
textstring
Raw SIP trace text. Multiple messages may be concatenated.
callIdstring
Render only this Call-ID. Required when the trace contains multiple calls; otherwise the only call is used.
aliasesobject
Friendly lane labels. Match order: exact "ip:port" → bare "ip" → top-Via host (with or without port) → Contact host (with or without port). Most-specific match wins; otherwise the lane is labeled with its raw "ip:port" (never "unknown"). Example: `{"192.0.2.10:5060":"Alice","203.0.113.50":"Carrier"}`.
compactboolean
Drop OPTIONS keepalives and retransmissions. Hidden counts are summarized in a `Note over` line.default: false
maxMessagesinteger
Hard cap on rendered arrows. Extra messages produce a truncation note. Hard ceiling is 200.default: 60
includeTimingboolean
Append `+Nms` (delta from previous arrow) to each arrow label.default: false
groupRetransmitsboolean
Collapse adjacent identical retransmissions on the same direction into a single arrow + `Note over: xN over Tms`. Independent of `compact` (which drops them entirely).default: true
splitOnNewBranchboolean
Emit a `--- failover to <ip:port> ---` separator before any request sent to a previously-unseen destination. Useful when the trace fails over between gateway IPs.default: false
highlightFailuresboolean
Bold the first non-1xx final response per request leg (CSeq) so the failure jumps out in the ladder.default: true
correlationHeadersarray
Header names to use for cross-leg call correlation (value-equality). When provided, calls sharing the same value for any listed header are merged into one ladder. Example: `["X-ACME-Session-ID","X-ACME-Call-ID"]`.
sip_ladder_example[cost: free (pure CPU, no network) | read-only] Return a hand-curated SIP scenario as a Mermaid `sequenceDiagram` plus a bullet list of step-by-step explanations with RFC references. Use this when the user asks 'show me what X looks like' and you don't have a real trace handy....4 params

[cost: free (pure CPU, no network) | read-only] Return a hand-curated SIP scenario as a Mermaid `sequenceDiagram` plus a bullet list of step-by-step explanations with RFC references. Use this when the user asks 'show me what X looks like' and you don't have a real trace handy....

Parameters* required
verboseboolean
Also include the scenario's long Markdown explanation. Useful when the LLM is going to teach the user; off by default to keep responses small.default: false
scenariostring
Which scenario to render. Valid ids: basic-call, auth-challenge, cancel-before-answer, early-media, hold-resume, refer-blind, proxy-with-record-route, shaken-attested-invite, bye-glare, redirect-302.one of basic-call · auth-challenge · cancel-before-answer · early-media · hold-resume · refer-blind
actorNamesobject
Override the default actor display names (Alice/Bob/Proxy). Maps to the first/second/third lane in left-to-right order.
includeExplanationboolean
Append a bulleted **Notes** section with RFC references for each step.default: true
lint_sip_request[cost: free (pure CPU, no network) | read-only, no persistence] Run RFC 3261 / RFC 3325 / RFC 8224 / RFC 8225 / CTIA BCID compliance checks on a single raw SIP request (typically an INVITE) and return a list of findings. Catches the failure modes that silently break carrier in...1 params

[cost: free (pure CPU, no network) | read-only, no persistence] Run RFC 3261 / RFC 3325 / RFC 8224 / RFC 8225 / CTIA BCID compliance checks on a single raw SIP request (typically an INVITE) and return a list of findings. Catches the failure modes that silently break carrier in...

Parameters* required
textstring
Raw SIP request text. Should start with the request line (e.g. `INVITE sip:...@... SIP/2.0`). Headers must be CRLF or LF separated.
parse_sip_message[cost: free (pure CPU, no network) | read-only, no persistence] Parse a single raw SIP message (request OR response) and return a structured view: start line (method/status), every header in order with line numbers, body, duplicate-header counts, and a list of structural flags...1 params

[cost: free (pure CPU, no network) | read-only, no persistence] Parse a single raw SIP message (request OR response) and return a structured view: start line (method/status), every header in order with line numbers, body, duplicate-header counts, and a list of structural flags...

Parameters* required
textstring
Raw SIP message text. Should start with a request line (`INVITE sip:...@... SIP/2.0`) or status line (`SIP/2.0 200 OK`). Headers must be CRLF or LF separated.
diff_sip_messages[cost: free (pure CPU, no network) | read-only, no persistence] Take two SIP messages (typically the same request observed at two adjacent hops - e.g. the INVITE leaving FreeSWITCH and the INVITE arriving at Kamailio) and surface a structured per-header diff: `added`, `removed...4 params

[cost: free (pure CPU, no network) | read-only, no persistence] Take two SIP messages (typically the same request observed at two adjacent hops - e.g. the INVITE leaving FreeSWITCH and the INVITE arriving at Kamailio) and surface a structured per-header diff: `added`, `removed...

Parameters* required
afterstring
SIP message as observed at the *downstream* hop (e.g. what Kamailio believes it received).
beforestring
SIP message as observed at the *upstream* hop (e.g. what FreeSWITCH believes it sent).
labelAfterstring
Display label for the downstream side. Default "after".default: after
labelBeforestring
Display label for the upstream side. Default "before".default: before
review_sip_config[cost: free (pure CPU, no network) | read-only] Use this when the user asks 'review my config' or attaches a kamailio.cfg, sip.conf, pjsip.conf, FreeSWITCH XML profile, opensips.cfg, or a SIP-shaped source file from a repo. This tool: 1. Detects the vendor from filename + stru...3 params

[cost: free (pure CPU, no network) | read-only] Use this when the user asks 'review my config' or attaches a kamailio.cfg, sip.conf, pjsip.conf, FreeSWITCH XML profile, opensips.cfg, or a SIP-shaped source file from a repo. This tool: 1. Detects the vendor from filename + stru...

Parameters* required
textstring
The full config blob (or a representative excerpt). UTF-8 plaintext.
vendorHintstring
Skip auto-detection and force a specific vendor. Use when the heuristics return low confidence or the wrong vendor.one of asterisk · freeswitch · kamailio · opensips · freepbx · yate
filenameHintstring
Optional filename or path (e.g. "kamailio.cfg", "etc/asterisk/pjsip.conf", "sofia/external.xml"). Strongly improves vendor detection.
webrtc_sip_checklist[cost: free (pure CPU, no network) | read-only] Return a curated checklist of WebRTC ↔ SIP requirements (WSS transport, ICE gathering, DTLS-SRTP fingerprint, rtcp-mux + BUNDLE, media relay / rtpengine, STUN/TURN, secure-context Origin allowlist, Opus codec, session-timer behav...3 params

[cost: free (pure CPU, no network) | read-only] Return a curated checklist of WebRTC ↔ SIP requirements (WSS transport, ICE gathering, DTLS-SRTP fingerprint, rtcp-mux + BUNDLE, media relay / rtpengine, STUN/TURN, secure-context Origin allowlist, Opus codec, session-timer behav...

Parameters* required
vendorstring
Vendor slug. Omit and supply `configText` to auto-detect.one of asterisk · freeswitch · kamailio · opensips · freepbx · yate
configTextstring
Optional config blob. When supplied, items with matching signals are marked as present; vendor is auto-detected if not supplied.
filenameHintstring
Optional filename ("kamailio.cfg", etc.) to bias auto-detection.
parse_sdp[cost: free (pure CPU, no network) | read-only] Parse a Session Description Protocol body and return a structured view: origin, session, timing, per-media codecs (rtpmap + fmtp), direction, DTLS setup + fingerprint, ICE credentials + candidates, rtcp-mux, BUNDLE groups, and cr...1 params

[cost: free (pure CPU, no network) | read-only] Parse a Session Description Protocol body and return a structured view: origin, session, timing, per-media codecs (rtpmap + fmtp), direction, DTLS setup + fingerprint, ICE credentials + candidates, rtcp-mux, BUNDLE groups, and cr...

Parameters* required
sdpstring
SDP body - the section after the empty line in an INVITE/200/UPDATE.
compare_sdp_offer_answer[cost: free (pure CPU, no network) | read-only] Diff a SIP/SDP offer and answer and surface the issues that actually break calls in practice: codec intersection per m-line, direction compatibility (sendrecv ↔ recvonly), DTLS setup-role conflicts (active+active / passive+passiv...2 params

[cost: free (pure CPU, no network) | read-only] Diff a SIP/SDP offer and answer and surface the issues that actually break calls in practice: codec intersection per m-line, direction compatibility (sendrecv ↔ recvonly), DTLS setup-role conflicts (active+active / passive+passiv...

Parameters* required
offerstring
SDP offer body.
answerstring
SDP answer body.
validate_stir_shaken_identity[cost: external_io (HTTPS fetch of the x5u cert) | read-only] Verify a SIP `Identity:` JWS (RFC 8224 / SHAKEN). Fetches the x5u certificate, parses it, verifies the ES256 signature against the cert's public key, and optionally validates the RCD icon hash (RFC 9795). The icon-h...8 params

[cost: external_io (HTTPS fetch of the x5u cert) | read-only] Verify a SIP `Identity:` JWS (RFC 8224 / SHAKEN). Fetches the x5u certificate, parses it, verifies the ES256 signature against the cert's public key, and optionally validates the RCD icon hash (RFC 9795). The icon-h...

Parameters* required
rcdiobject
Full `payload.rcdi` claim. The validator looks up `/icn` first (RFC 9795 §6.1 spec form), then falls back to the legacy `icn` key (still seen in the wild). A legacy hit produces a `rcdi-pointer-form` warning unless `strictRfc9795: true` (then it fails).
iconUrlstring
RCD icon URL - `payload.rcd.icn`. Omit if no Rich Call Data icon.
infoUrlstring
Cert URL from the SIP Identity header `info=` param (or the JWT `x5u`). If omitted, signature verification is skipped.
headerB64string
Base64url-encoded JWS protected header (the first dot-separated segment).
payloadB64string
Base64url-encoded JWS payload (the second segment).
signatureB64string
Base64url-encoded ES256 signature (the third segment, raw R||S, 64 bytes).
strictRfc9795boolean
When true, reject the legacy `rcdi['icn']` key as a hard failure rather than warning. Default false.
expectedIconHashstring
Pre-extracted icon hash, e.g. `sha256-XYZ` (RFC 9795 §6.1 form `<algorithm>-<base64>`). Pass this OR `rcdi`.
stir_attestation_explainer[cost: free (pure CPU, no network) | read-only] Static explainer for STIR/SHAKEN: maps attestation levels (A / B / C per RFC 8588) to plain-English requirements + common scenarios, and SIP codes commonly emitted by signing/verification (428 / 436 / 437 / 438 / 608) to their RF...2 params

[cost: free (pure CPU, no network) | read-only] Static explainer for STIR/SHAKEN: maps attestation levels (A / B / C per RFC 8588) to plain-English requirements + common scenarios, and SIP codes commonly emitted by signing/verification (428 / 436 / 437 / 438 / 608) to their RF...

Parameters* required
codeinteger
SIP response code commonly seen in STIR/SHAKEN flows (428, 436, 437, 438, 608).
attestationstring
Attestation level: "A" Full / "B" Partial / "C" Gateway.one of A · B · C
validate_e164_number[cost: free (pure CPU, no network) | read-only] Parse a phone number, normalize to E.164, and classify it. International coverage is via libphonenumber-js (every country, line type when known). NANP numbers (CC=1) are additionally split into NPA (area code) / NXX (central offi...1 params

[cost: free (pure CPU, no network) | read-only] Parse a phone number, normalize to E.164, and classify it. International coverage is via libphonenumber-js (every country, line type when known). NANP numbers (CC=1) are additionally split into NPA (area code) / NXX (central offi...

Parameters* required
numberstring
Phone number in any common form. E.164 (+CCNNN…) is preferred; 10-digit US numbers are accepted as a convenience.
troubleshoot_response_code[cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only | rate-limited per IP] Like `lookup_response_code` but augmented: returns the static RFC entry PLUS the top vendor-specific RAG hits for the exact code (and any free-text context the...3 params

[cost: rag (one embed + one vector search) | read-only, network: outbound to embed model only | rate-limited per IP] Like `lookup_response_code` but augmented: returns the static RFC entry PLUS the top vendor-specific RAG hits for the exact code (and any free-text context the...

Parameters* required
codeinteger
SIP response code (e.g. 488, 503, 438).
contextstring
Optional free-text context: a snippet of the trace, the Reason header, the Warning header, or a one-line description of what the user was trying to do.
vendorHintstring
Vendor slug to filter the RAG search (e.g. "kamailio", "freeswitch", "twilio"). Strongly recommended.one of asterisk · freeswitch · kamailio · opensips · freepbx · yate
dns_diagnose_sip_target[cost: external_io (DNS via Cloudflare + Google; TLS handshake to public sips/_sips._tcp targets when applicable) | read-only | rate-limited per IP: 10/min, 200/day] Walk DNS the same way a SIP UA does (RFC 3263 §4.1): NAPTR → SRV → A/AAAA. Given a SIP URI ("sip:example.com"),...2 params

[cost: external_io (DNS via Cloudflare + Google; TLS handshake to public sips/_sips._tcp targets when applicable) | read-only | rate-limited per IP: 10/min, 200/day] Walk DNS the same way a SIP UA does (RFC 3263 §4.1): NAPTR → SRV → A/AAAA. Given a SIP URI ("sip:example.com"),...

Parameters* required
targetstring
SIP URI ("sip:example.com"), "example.com:5060", or bare hostname ("example.com"). Userinfo is stripped before lookup.
transportstring
Transport hint. "any" surfaces all NAPTR services; specific transports filter the SRV walk to that service.one of any · udp · tcp · tls · ws · wssdefault: any
fetch_sipflow_share[cost: external_io (Mongo + S3 fetch on the Sipflow backend) | read-only, no persistence | rate limit: shared with the public share endpoint] Given a Sipflow share URL (https://sipflow.dev/share/<token>, or any sipflow.dev subdomain that serves /share/<token>), load the shared...1 params

[cost: external_io (Mongo + S3 fetch on the Sipflow backend) | read-only, no persistence | rate limit: shared with the public share endpoint] Given a Sipflow share URL (https://sipflow.dev/share/<token>, or any sipflow.dev subdomain that serves /share/<token>), load the shared...

Parameters* required
urlstring
Full Sipflow share URL. Example: "https://sipflow.dev/share/eyJqb2JJZCI6Ii4uLiJ9.abc123". The path must be /share/<token>; /api/share/... endpoints are not accepted.

Sipflow MCP

SIP/VoIP/telecom grounding for AI agents. Vendor docs across ~40 stacks, 60+ RFCs, STIR/SHAKEN, trace and config analysis - every answer cites a verbatim source_url.

smithery badge

Sipflow is a hosted, read-only Model Context Protocol server. It gives your editor or agent ~20 tools that ground SIP/VoIP answers in a curated corpus instead of training-data recall.

  • Live endpoint: https://mcp.sipflow.dev/mcp (Streamable HTTP)
  • Web app: https://www.sipflow.dev
  • Install page (one-click + all clients): https://www.sipflow.dev/tools/mcp

Install

Cursor (one-click)

Install Sipflow in Cursor

Or from the Cursor Marketplace. This repo also ships as a Cursor plugin with a bundled Skill and Rule (see What's in this repo below).

Cursor (manual) - ~/.cursor/mcp.json

{
  "mcpServers": {
    "sipflow": { "url": "https://mcp.sipflow.dev/mcp" }
  }
}

VS Code - .vscode/mcp.json or user settings.json

{
  "servers": {
    "sipflow": {
      "type": "http",
      "url": "https://mcp.sipflow.dev/mcp"
    }
  }
}

Requires VS Code 1.99+ with the GitHub Copilot extension.

Claude Desktop - claude_desktop_config.json

Claude Desktop is stdio-only, so use the mcp-remote shim:

{
  "mcpServers": {
    "sipflow": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.sipflow.dev/mcp"]
    }
  }
}

Claude Code (CLI)

claude mcp add --transport http sipflow https://mcp.sipflow.dev/mcp

Codex CLI - ~/.codex/config.toml

[mcp_servers.sipflow]
url = "https://mcp.sipflow.dev/mcp"

Cline - Settings -> MCP Servers -> Edit JSON

{
  "mcpServers": {
    "sipflow": { "url": "https://mcp.sipflow.dev/mcp" }
  }
}

Continue - ~/.continue/config.yaml

mcpServers:
  - name: sipflow
    transport:
      type: streamable-http
      url: https://mcp.sipflow.dev/mcp

Windsurf - ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "sipflow": {
      "serverUrl": "https://mcp.sipflow.dev/mcp"
    }
  }
}

Goose - ~/.config/goose/config.yaml

extensions:
  sipflow:
    type: http
    uri: https://mcp.sipflow.dev/mcp
    enabled: true

Generic / curl smoke-test

curl -sS -X POST https://mcp.sipflow.dev/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What's in this repo

File / FolderMarketplacePurpose
server.jsonOfficial MCP RegistryCanonical server descriptor. PulseMCP auto-ingests from here.
smithery.yamlSmitheryRemote HTTP listing.
.cursor-plugin/plugin.jsonCursor MarketplacePlugin manifest.
mcp.jsonCursor plugin auto-discoveryPoints the plugin at the remote endpoint.
skills/sip-debugger/Cursor plugin"When to use Sipflow" playbook surfaced as /sip-debugger.
rules/sip-grounding.mdcCursor pluginAuto-attaches when editing .pcap, kamailio/opensips/freeswitch/asterisk configs, dialplans, .sdp.
assets/logo.svgAllLogo.

The Cursor-specific files (.cursor-plugin/, mcp.json, skills/, rules/) are silently ignored by non-Cursor marketplaces - they only parse their own manifest.

Tool catalog

All tools are read-only. The only outbound IO is dns_diagnose_sip_target (DNS + TLS handshake) and validate_stir_shaken_identity (cert fetch).

Discovery / grounding - search_sip_docs, lookup_response_code, lookup_sip_header

Detection - detect_sip_stack, detect_sip_vendor_from_config

Traces - minimize_sip_trace, render_sip_ladder, sip_ladder_example, lint_sip_request, parse_sip_message, diff_sip_messages

Config review - review_sip_config, webrtc_sip_checklist

SDP - parse_sdp, compare_sdp_offer_answer

STIR/SHAKEN - validate_stir_shaken_identity, stir_attestation_explainer

Telecom - validate_e164_number, troubleshoot_response_code

Network - dns_diagnose_sip_target (rate-limited)

Share hydration - fetch_sipflow_share for sipflow.dev/share/<token> URLs

Resource - sipflow://docs/{vendor}/{id} for a single corpus chunk

Corpus coverage

  • ~40 vendor stacks: Kamailio, OpenSIPS, FreeSWITCH, Asterisk (PJSIP + chan_sip), SIP.js, JsSIP, FreePBX, 3CX, OpenSER, Twilio, Cisco, ...
  • 60+ RFCs: SIP, SDP, RTP, WebRTC core
  • STIR/SHAKEN: RFC 8224/8225/8226/8588/9027/9795
  • Branded calling: ATIS-1000074, ATIS-1000094, ATIS-1000084, CTIA BCID

Local development (Cursor plugin)

Test the plugin locally by symlinking this repo into Cursor's local plugin folder:

ln -s "$PWD" ~/.cursor/plugins/local/sipflow

Run Developer: Reload Window in Cursor. You should see:

  • sipflow server in Settings -> Features -> Model Context Protocol
  • sip-debugger skill under Settings -> Rules (Agent Decides)
  • sip-grounding rule under Settings -> Rules

Submitting updates

When the MCP server changes, bump version in three places to keep registries in sync:

  • server.json -> Official MCP Registry
  • .cursor-plugin/plugin.json -> Cursor Marketplace
  • The hosted server's serverInfo.version

Then re-run mcp-publisher publish for the Official Registry. Cursor, Smithery, and Glama auto-track the default branch.

License

MIT - see LICENSE.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Registryactive
TransportHTTP
UpdatedMay 14, 2026
View on GitHub