Search / io.github.cyanheads/canada-parliament-mcp-server
canada-parliament-mcp-server
R0· no sign-inTrack Canadian federal bills, MPs, House votes, and Hansard speeches.
v0.2.1 · active · repository · descriptor JSON · versions
Search / io.github.cyanheads/canada-parliament-mcp-server
R0· no sign-inTrack Canadian federal bills, MPs, House votes, and Hansard speeches.
v0.2.1 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"canada-parliament-mcp-server": {
"type": "http",
"url": "https://canada-parliament.caseyjhand.com/mcp"
}
}
}claude mcp add --transport http canada-parliament-mcp-server https://canada-parliament.caseyjhand.com/mcp[mcp_servers.canada-parliament-mcp-server]
url = "https://canada-parliament.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"canada-parliament-mcp-server": {
"type": "remote",
"url": "https://canada-parliament.caseyjhand.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"canada-parliament-mcp-server": {
"type": "http",
"url": "https://canada-parliament.caseyjhand.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=canada-parliament-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY2FuYWRhLXBhcmxpYW1lbnQuY2FzZXlqaGFuZC5jb20vbWNwIn0%3D"
}{
"servers": {
"canada-parliament-mcp-server": {
"type": "http",
"url": "https://canada-parliament.caseyjhand.com/mcp"
}
}
}{
"mcpServers": {
"canada-parliament-mcp-server": {
"httpUrl": "https://canada-parliament.caseyjhand.com/mcp"
}
}
}extensions:
"canada-parliament-mcp-server":
enabled: true
name: "canada-parliament-mcp-server"
type: streamable_http
uri: "https://canada-parliament.caseyjhand.com/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations8 of 8 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: canparl_search_bills (destructiveHint); canparl_get_member (destructiveHint); canparl_get_vote (destructiveHint); …tools.token_costabout 5,427 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes8 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulnsno known advisory in 130 resolved packagesdeps.mcp_sdk_version@modelcontextprotocol/core 2.4.0, no known advisorydeps.resolvable@cyanheads/[email protected], @cyanheads/[email protected] resolved: 130 packagescanparl_list_referencechangeddescription, input schema, output schemaList canonical session coverage and bill, division, and caucus vocabulary. Use source-specific terms when constructing filters. Omitted session means the verified current session for vocabulary. For topic sessions omit session; the entire global index is returned.
List canonical session coverage and bill, division, and caucus vocabulary. Use source-specific terms when constructing filters. Omitted session means the verified current session for vocabulary. For topic sessions omit session; the entire global index is returned. Topic parties covers the current session only: its entries come from the current House roster, so a past division's caucuses come from canparl_get_vote byParty.
canparl_search_speecheschangedinput schema, output schemacanparl_get_votechangedinput schema, output schemacanparl_search_voteschangedinput schema, output schemacanparl_get_memberchangeddescription, input schema, output schemaRead one House MP by a returned OpenParliament slug or official current personId. Pass exactly one identifier from canparl_search_members detailLookup. Official profiles survive unavailable OpenParliament enrichment. Recent ballots come newest first from the official House member-votes feed when the member has one official personId, filterable by votesSession (default: the member's latest session) and votesBillCode; otherwise from OpenParliament. Sponsored bills and recent ballots are independently pageable; set their limits to zero for profile-only lookup.
Read one House MP by a returned OpenParliament slug or official personId, current or former (36th Parliament onward). Pass exactly one identifier from canparl_search_members detailLookup. Official profiles survive unavailable OpenParliament enrichment. Recent ballots come newest first from the official House member-votes feed when the member has one official personId, filterable by votesSession (default: the member's latest session) and votesBillCode; otherwise from OpenParliament. Sponsored bills and recent ballots are independently pageable; set their limits to zero for profile-only lookup.
canparl_search_memberschangeddescription, input schema, output schemaFind current House MPs by name, riding, province, or caucus. Set includeFormer for OpenParliament's historical name index; historical rows may contain only a name and slug. Follow nextOffset with identical filters and use detailLookup with canparl_get_member.
Find House MPs by name, riding, province, or caucus in the complete current official roster, or set parliament to search everyone who sat in that Parliament (36th onward) with official personIds and membership dates. Set includeFormer for OpenParliament's historical name index; its rows may contain only a name and slug. Follow nextOffset with identical filters and use detailLookup with canparl_get_member.
canparl_get_billchangedinput schema, output schemacanparl_search_billschangedinput schema, output schemaFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +reachable +uptime-100% +updated-7d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@cyanheads/[email protected] npm64 dependencies, resolved · MCP SDK @modelcontextprotocol/core 2.4.0 · advisories checked 2026-11-07
No known advisory affects this dependency graph.
@cyanheads/[email protected] npm64 dependencies, resolved · MCP SDK @modelcontextprotocol/core 2.4.0 · advisories checked 2026-11-07
No known advisory affects this dependency graph.
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://canada-parliament.caseyjhand.com/mcp streamable-http | none | yes | 100% | 345 ms | 2026-07-28 | 2026-11-07 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@cyanheads/canada-parliament-mcp-server | npm | 0.2.1 | npx | |
@cyanheads/canada-parliament-mcp-server | npm | 0.2.1 | npx |
canparl_get_billread-only | Read one House or Senate bill's official dossier. Large dossiers return an outline; re-call with one section and follow pagination.nextOffset for collections. Stages preserve nested records whole. Obtain billCode and session from canparl_search_bills; omitted session means the verified current official session. |
canparl_get_memberread-only | Read one House MP by a returned OpenParliament slug or official personId, current or former (36th Parliament onward). Pass exactly one identifier from canparl_search_members detailLookup. Official profiles survive unavailable OpenParliament enrichment. Recent ballots come newest first from the official House member-votes feed when the member has one official personId, filterable by votesSession (default: the member's latest session) and votesBillCode; otherwise from OpenParliament. Sponsored bills and recent ballots are independently pageable; set their limits to zero for profile-only lookup. |
canparl_get_voteread-only | Read a recorded House division, its full official tally, party totals, and a page of individual ballots. Ballot, personId, party, and province filters affect the ballot page only; nonvoters are absent. Omitted session means the verified current official session. Follow nextOffset with identical filters. |
canparl_list_referenceread-only | List canonical session coverage and bill, division, and caucus vocabulary. Use source-specific terms when constructing filters. Omitted session means the verified current session for vocabulary. For topic sessions omit session; the entire global index is returned. Topic parties covers the current session only: its entries come from the current House roster, so a past division's caucuses come from canparl_get_vote byParty. |
canparl_search_billsread-only | Find House and Senate bills in one session by title, number, type, chamber, status, or indexed MP sponsor. Sponsor results are the OpenParliament-indexed subset; fetch a bill for its sponsor, stages, divisions, and statute citation. Omitted session means the verified current official session. Follow nextOffset with identical filters. |
canparl_search_membersread-only | Find House MPs by name, riding, province, or caucus in the complete current official roster, or set parliament to search everyone who sat in that Parliament (36th onward) with official personIds and membership dates. Set includeFormer for OpenParliament's historical name index; its rows may contain only a name and slug. Follow nextOffset with identical filters and use detailLookup with canparl_get_member. |
canparl_search_speechesread-only | Find indexed House Hansard speeches by speaker, bill debated or mentioned, or date. contains scans at most 100 candidate speeches per call; follow nextOffset without changing filters until exhausted before drawing a negative conclusion. |
canparl_search_votesread-only | Find recorded House divisions in one session by bill, result, document type, date, or subject. Return newest first and pass session plus number to canparl_get_vote. Omitted session resolves from the current official bill feed. Follow nextOffset with identical filters. |
Schemas: list_tools.
And 153 more from this publisher.
{
"name": "io.github.cyanheads/canada-parliament-mcp-server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://canada-parliament.caseyjhand.com/mcp",
"type": "streamable-http"
}
],
"version": "0.2.1",
"packages": [
{
"version": "0.2.1",
"transport": {
"type": "stdio"
},
"identifier": "@cyanheads/canada-parliament-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "CANPARL_USER_AGENT",
"format": "string",
"description": "Optional HTTP identification; blank uses the server default. CR/LF forbidden."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
}
]
},
{
"version": "0.2.1",
"transport": {
"url": "http://localhost:3010/mcp",
"type": "streamable-http"
},
"identifier": "@cyanheads/canada-parliament-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "CANPARL_USER_AGENT",
"format": "string",
"description": "Optional HTTP identification; blank uses the server default. CR/LF forbidden."
},
{
"name": "MCP_TRANSPORT_TYPE",
"value": "http",
"format": "string",
"description": "Selects the HTTP transport."
},
{
"name": "MCP_HTTP_HOST",
"format": "string",
"default": "127.0.0.1",
"description": "The hostname for the HTTP server."
},
{
"name": "MCP_HTTP_PORT",
"format": "string",
"default": "3010",
"description": "The port to run the HTTP server on."
},
{
"name": "MCP_HTTP_ENDPOINT_PATH",
"format": "string",
"default": "/mcp",
"description": "The endpoint path for the MCP server."
},
{
"name": "MCP_AUTH_MODE",
"format": "string",
"default": "none",
"description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
}
]
}
],
"repository": {
"url": "https://github.com/cyanheads/canada-parliament-mcp-server",
"source": "github"
},
"description": "Track Canadian federal bills, MPs, House votes, and Hansard speeches."
}