{"_id":"@cyanheads/socrata-mcp-server","_rev":"18-545d3545ceba48919b892630438b4eae","name":"@cyanheads/socrata-mcp-server","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.1":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.1","keywords":["mcp","mcp-server","model-context-protocol","ai","llm","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"casey@caseyjhand.com (https://github.com/cyanheads)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"a004d734e8b5d8c4e97ffba212dc833dcc03cd5b","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.1.tgz","fileCount":61,"integrity":"sha512-K1gk4tJepr6bvDg0/k444aL4JXCZEB/18ByAbAKPVdqpflxDfJTaJaJ5C34zOftA/8whgBe2hIrpl+UA1E4vuA==","signatures":[{"sig":"MEYCIQDercmiqb53OyFkN0oB6yfcfkLycQ8loFvnAPEOde5bOQIhALTZHBhkoAbmbiv2/bPUfdfkSge7cGA5AvBr61P7lvQU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214634},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"a004d734e8b5d8c4e97ffba212dc833dcc03cd5b","engines":{"bun":">=1.3.0","node":">=24.0.0"},"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"vitest run","tree":"tsx scripts/tree.ts","build":"tsx scripts/build.ts","clean":"tsx scripts/clean.ts","start":"node dist/index.js","bundle":"npm run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write --unsafe .","rebuild":"tsx scripts/clean.ts && tsx scripts/build.ts","devcheck":"tsx scripts/devcheck.ts","lint:mcp":"tsx scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"tsx scripts/list-skills.ts","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","lint:packaging":"tsx scripts/lint-packaging.ts","changelog:build":"tsx scripts/build-changelog.ts","changelog:check":"tsx scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-K1gk4tJepr6bvDg0/k444aL4JXCZEB/18ByAbAKPVdqpflxDfJTaJaJ5C34zOftA/8whgBe2hIrpl+UA1E4vuA==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals via the Socrata SODA 2.1 and Discovery APIs. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"tsx":"^4.19.0","ignore":"^7.0.5","vitest":"^4.1.0","depcheck":"^1.4.7","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.6.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.1_1779566577032_0.666229356466469","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.2","keywords":["mcp","mcp-server","model-context-protocol","ai","llm","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"6f6b87fec5f7bc9fe73fc9abe445bcab18437d64","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.2.tgz","fileCount":62,"integrity":"sha512-5SIZNe2IB9OvQnvgF0luMjmgKrQi5Cst2ivcHiAj5ryIBXJSc70XZHQvRvH7Szl8B8xTUk8a2PgcoSZMzTh+1Q==","signatures":[{"sig":"MEUCIQCUkv0FuNYLxweRCjmFb9OkOGj1WpBA1Tk8IwXVRPFGSQIgO9VSJ6oO5+YlgkqHtG1MYwEeJypYAc7OfXhc430btvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215498},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"6f6b87fec5f7bc9fe73fc9abe445bcab18437d64","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write --unsafe","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","lint:packaging":"bun run scripts/lint-packaging.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-5SIZNe2IB9OvQnvgF0luMjmgKrQi5Cst2ivcHiAj5ryIBXJSc70XZHQvRvH7Szl8B8xTUk8a2PgcoSZMzTh+1Q==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.0","depcheck":"^1.4.7","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.6.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.2_1779592439080_0.98496451590283","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.3","keywords":["mcp","mcp-server","model-context-protocol","ai","llm","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"c858cd4647086d2f9c7d7920fc53ed53ba24294f","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.3.tgz","fileCount":63,"integrity":"sha512-iFTBnVW021GAM3gSRWc38M0x8bQupZW7w4+JxdgDG5MYvvcwt0/njBHxLoyE08JYkRX3hQne5PZcPNhu8ATKKw==","signatures":[{"sig":"MEUCIQDi3wJ+kIp7ysJTBF3bwvxlndZzyyukfbgy53SwiqgZkgIgVDMqUNBt7a2H2DC0s+oIu2HMVQ+ryctswCUwa1B3x9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216137},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"c858cd4647086d2f9c7d7920fc53ed53ba24294f","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write --unsafe","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","lint:packaging":"bun run scripts/lint-packaging.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-iFTBnVW021GAM3gSRWc38M0x8bQupZW7w4+JxdgDG5MYvvcwt0/njBHxLoyE08JYkRX3hQne5PZcPNhu8ATKKw==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.0","depcheck":"^1.4.7","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.6.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.3_1779598851255_0.07670254675061994","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.4","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.4","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"0e38746708d9886c7a19152f7249baedb258fb86","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.4.tgz","fileCount":64,"integrity":"sha512-PBWU/HypZbHHE4ydy4au0nADeVEFfxMKuXTOr9OuI2vrQ7653XSSBQQtUgto2B/wpubxEwT9oQ8R/E2denEXLg==","signatures":[{"sig":"MEUCIQCQbS0NVQT8cZVKJDR0Mj/Pb/rjOT+aWXP93LbRQ3wMbAIgO7vzXDcexkrD+m1Tb0taJ+/WkTIc7PyljR3wxQNGHGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218137},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"0e38746708d9886c7a19152f7249baedb258fb86","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write --unsafe","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","lint:packaging":"bun run scripts/lint-packaging.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-PBWU/HypZbHHE4ydy4au0nADeVEFfxMKuXTOr9OuI2vrQ7653XSSBQQtUgto2B/wpubxEwT9oQ8R/E2denEXLg==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.7","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.4_1780033711667_0.10575564877467047","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.5","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.5","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"196a10ea5fd54b1e6e22706724f6b65e9d528301","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.5.tgz","fileCount":65,"integrity":"sha512-muTn7wwQrFPQn815ZW0XSblsWLeoUf1p4AWLK/y5LKvnds2fG2aYcFYUSRSFeJfgg0l/LVx1kN7MCjBtToPuZg==","signatures":[{"sig":"MEQCIAl7XhBR4bS+2XhyPSoI8TNZo0EUCI6c99Lr73bF2nH5AiA+MzfbVlWlnjbAfPpt5dcP7ObCoF8Qb4FisahpXpApbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220037},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"196a10ea5fd54b1e6e22706724f6b65e9d528301","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-muTn7wwQrFPQn815ZW0XSblsWLeoUf1p4AWLK/y5LKvnds2fG2aYcFYUSRSFeJfgg0l/LVx1kN7MCjBtToPuZg==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.7","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.5_1780135859209_0.955876224203104","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.6","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.6","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"70ba02d965681ee026ab90d669365e80b6222c5f","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.6.tgz","fileCount":66,"integrity":"sha512-jhjlvX/7l2MbtydDm3DgO6Tl3gxGFaYGv7KXk5RCXY438lXsKJ8Ru7GO1rKd4b/18Hv3n7fKmoCrOAD4KhlKCw==","signatures":[{"sig":"MEUCIDVkl5u7fLeuJbvxu8QsAORIRWcfH3q49nmz4T7t3gpDAiEA4lergm5fx2hPuHs5TNCdMTa97EMoY3vXp+4FDkIJMqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221920},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"70ba02d965681ee026ab90d669365e80b6222c5f","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-jhjlvX/7l2MbtydDm3DgO6Tl3gxGFaYGv7KXk5RCXY438lXsKJ8Ru7GO1rKd4b/18Hv3n7fKmoCrOAD4KhlKCw==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.21"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.6_1780412843782_0.6941327984276062","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.7","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.7","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"596f1d87c2ded366953303442d9e2a540d889b77","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.7.tgz","fileCount":67,"integrity":"sha512-Lgy+eRJjNLu4DKlhLnZAeuMeZVm/mBMwNJ/6FNzbvF7v1PMorZSCdIAT4/RGhiyMPCcLJK/IBeXa0inNyDRUdQ==","signatures":[{"sig":"MEUCIQDoFwT18qAR8f1zCR8Kxe/mukWzIVHVsutkyq7TMotsSQIgM4ZELE3Vq/VqMjZMwGncNzUh0ROwLVTecjI+eSooTFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224381},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"596f1d87c2ded366953303442d9e2a540d889b77","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-Lgy+eRJjNLu4DKlhLnZAeuMeZVm/mBMwNJ/6FNzbvF7v1PMorZSCdIAT4/RGhiyMPCcLJK/IBeXa0inNyDRUdQ==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.9.21"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.7_1780563268680_0.8689005520843787","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.8","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.8","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"1595aaaac64a937530b3523807d92e2b7dbed6e2","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.8.tgz","fileCount":68,"integrity":"sha512-UXWgm1Y4qdDsrugWSAPAhaGAubxObFP+YoLh2UMhDcC0YsXQzWdgETA/MoQOfL0m+1rJY3hu2QaOkaA5vZme7Q==","signatures":[{"sig":"MEUCIFO0PIK0kJHycyU8JLsCIV8myu60PE7bfiADSncBoWhgAiEAiEMZ8S6u92TSBbWDLfGeWMSF72ZPzY+/meirVTYFimQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230491},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"1595aaaac64a937530b3523807d92e2b7dbed6e2","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-UXWgm1Y4qdDsrugWSAPAhaGAubxObFP+YoLh2UMhDcC0YsXQzWdgETA/MoQOfL0m+1rJY3hu2QaOkaA5vZme7Q==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^25.9.3","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.8_1781253948465_0.4361765501202646","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.9","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.9","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"733c26a9d15d500ca8cdc66039b698ad66d2db01","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.9.tgz","fileCount":69,"integrity":"sha512-X5E0iYsbYr7ae3oq+0h2Pvb+RUNatdgQUEMuSOCCuhgTKUJAiEzvfa3yw1HxEd4G6N8JjLiZR+Iz0CRHFCykbA==","signatures":[{"sig":"MEQCICyu4EY3X1yKYkwi0V0tH9U5u4aYcnGgXxdXy8giwz+tAiBdyXee9lTz71VL7sJKOdINBQmvTfmLjvOUUes0f5Dv6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233202},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"733c26a9d15d500ca8cdc66039b698ad66d2db01","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-X5E0iYsbYr7ae3oq+0h2Pvb+RUNatdgQUEMuSOCCuhgTKUJAiEzvfa3yw1HxEd4G6N8JjLiZR+Iz0CRHFCykbA==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^26.0.0","@biomejs/biome":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.9_1781979452501_0.2734859281431874","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.10","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.10","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"0e87d0367607276fa1f6674159f33c7c1a0e55cf","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.10.tgz","fileCount":74,"integrity":"sha512-W4vjPRkn+smHbHA64PlRuLD4GNJAPbROPgaUYEz7+a/QFdAkTBJ+hIKJQGADp9hCB4dlxnYrfpB6lSUKwXY3PQ==","signatures":[{"sig":"MEQCIFDMydJPe0qJhJMrRyby+JyJDnp+nN8BGG1dmDOrobTuAiBawOsC0qeBO0JnUFgRGeZ9GVmk3P4kA5xd4Z5QbxeD2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":250216},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"0e87d0367607276fa1f6674159f33c7c1a0e55cf","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-W4vjPRkn+smHbHA64PlRuLD4GNJAPbROPgaUYEz7+a/QFdAkTBJ+hIKJQGADp9hCB4dlxnYrfpB6lSUKwXY3PQ==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.9.0","typescript":"^6.0.3","@types/node":"^26.1.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.10_1783192696091_0.42419610870909863","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.11","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.11","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"7dc31436bf970767b5b15478949ea6760d54d745","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.11.tgz","fileCount":79,"integrity":"sha512-Y7Xl5OuTrKDcwH9R5Z3B5E7Dt03dNHyfW4JeACqnbAtjd5zaYYcjziDb1zhRkkGhOiMtNhBlt1e8CZDYVdbl1A==","signatures":[{"sig":"MEUCIC5eIgWucRBM0fLmmuXS+mcDKcnWNtnhkS828qpKX94NAiEAhvVH/zNmxT25RQ8QRoJogrU7sjvAAA+wBTn5Hrc3tOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274280},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"7dc31436bf970767b5b15478949ea6760d54d745","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-Y7Xl5OuTrKDcwH9R5Z3B5E7Dt03dNHyfW4JeACqnbAtjd5zaYYcjziDb1zhRkkGhOiMtNhBlt1e8CZDYVdbl1A==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@cyanheads/mcp-ts-core":"^0.10.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.9.0","typescript":"^6.0.3","@types/node":"^26.1.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.11_1783218199638_0.2686547203414378","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.12","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/socrata-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.12","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"678f12c774434d7343ff74435723c21e402916c5","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.12.tgz","fileCount":80,"integrity":"sha512-+BdsD+gltwFJRjRyE/zbXwY/4D18QKbptF3+lOaQiqRrYi0coaFz5+ZqjTRfWtxKG2SW//XMxUn7vblZOh68jA==","signatures":[{"sig":"MEUCIQDnlSCnmjcmga9d5rp9sV2XbutnP/tOz+Cd0rn6ip6CVwIgVr+N5p9cfewQukx3ilodxePfOpyFRhSsVNKc+fEh9jE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276739},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"678f12c774434d7343ff74435723c21e402916c5","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-+BdsD+gltwFJRjRyE/zbXwY/4D18QKbptF3+lOaQiqRrYi0coaFz5+ZqjTRfWtxKG2SW//XMxUn7vblZOh68jA==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.4-r.1","@cyanheads/mcp-ts-core":"^0.10.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.9.0","typescript":"^6.0.3","@types/node":"^26.1.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.12_1783220265215_0.8998605502709172","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.13","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.13","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"1e8d0a7382cea9afd88ff021ab4d798c2cdfcab1","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.13.tgz","fileCount":81,"integrity":"sha512-fcEtf+zOi059MASH0xHn6SEmcwbb4W7fNNZFlA/9sKWQvxbQoxCyTJPpdKH78mcqR2eb42ZfUdFR8/L6zFU4mg==","signatures":[{"sig":"MEYCIQDFSaqMj9Bq47z7sVbK2J4sptLkvPkfIqEPR3ByojR9GgIhAIvQql42c1sG70wBUinvLfLTlMvlwoudk3wIo5sN85Dw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291832},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"1e8d0a7382cea9afd88ff021ab4d798c2cdfcab1","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-fcEtf+zOi059MASH0xHn6SEmcwbb4W7fNNZFlA/9sKWQvxbQoxCyTJPpdKH78mcqR2eb42ZfUdFR8/L6zFU4mg==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.4-r.1","@cyanheads/mcp-ts-core":"^0.10.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.9.0","typescript":"^6.0.3","@types/node":"^26.1.0","@biomejs/biome":"^2.5.2","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.13_1783721244767_0.8729183409961294","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.14","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.14","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"444ba568291e0326089e91ab329102f27a43e1fd","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.14.tgz","fileCount":82,"integrity":"sha512-hKa6//pi7JmGB7SuEQsN9BS2VAtU4B864BjjaWtQVpBG7AqRaoj1Wb+nrUQwp2HsdNC7vhoM3U1aD5rLfoVx6A==","signatures":[{"sig":"MEQCIHkzzAH74p3JThJqADA201FHnTa94EJp/LC/iXZfxsj5AiA62hQceBeAWEommUtxFKjgKPz2HrGfiu+2BYoTvB8fbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294642},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"444ba568291e0326089e91ab329102f27a43e1fd","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"bunx vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-hKa6//pi7JmGB7SuEQsN9BS2VAtU4B864BjjaWtQVpBG7AqRaoj1Wb+nrUQwp2HsdNC7vhoM3U1aD5rLfoVx6A==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.4-r.1","@cyanheads/mcp-ts-core":"^0.10.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.9","depcheck":"^1.4.7","tsc-alias":"^1.9.0","typescript":"^6.0.3","@types/node":"^26.1.0","@biomejs/biome":"^2.5.2","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.14_1783724233461_0.7646300164537607","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.15","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.15","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"f0f730b9cfab1c6d66b1629d11cc60ad3e4f99c6","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.15.tgz","fileCount":83,"integrity":"sha512-NknOkrCD9Xt6hRBCev33hInbQCxzInRnB5yICye6lvyNOvbUANhUm2Obpqs9HtE/qh1K8V/Yenlowm4g5Ez7Yg==","signatures":[{"sig":"MEUCIQC0rmYXmpjCf1WgTveaM1Cb9KZS4duL4dyP4IcTTGpIjAIgI7SsY24fV3RKuLT7pHpruAVob34JeXTxGxgQfik6rUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303653},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"f0f730b9cfab1c6d66b1629d11cc60ad3e4f99c6","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-NknOkrCD9Xt6hRBCev33hInbQCxzInRnB5yICye6lvyNOvbUANhUm2Obpqs9HtE/qh1K8V/Yenlowm4g5Ez7Yg==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.5-r.4","@cyanheads/mcp-ts-core":"^0.12.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.11","depcheck":"^1.4.7","tsc-alias":"^1.9.2","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"^2.5.9","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.15_1787434859217_0.2528868067297463","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@cyanheads/socrata-mcp-server","version":"0.1.16","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.1.16","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"3334ba6ac0eaaa1db76c32f3348cdd4beb7088cf","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.1.16.tgz","fileCount":85,"integrity":"sha512-JnM2HJ5XUrZ5SatzZ9vHK/sA9kogGz1lUfpNAQCDEBGA7KcktmOdwGcp5Mab2HwI3iwMXkV9LBJBVYGP1Zi7kQ==","signatures":[{"sig":"MEUCIQDBa4Kgp+O0iZVNL9y9tZgDbE1ufuhnOgJkJ48A1vZNdAIgTkTAcyOfMuIzMTj0RB05s6E1fq6nqjsCDY3MAVJI4tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDiBzlEwANBTmZc107BBEW8RvsuTKaTtcSEb6tXF5NrQwIhAMknaKhPZJqN/x99SVnH5XoeW3pQauQUwbMHhwojzfO1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339063},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"3334ba6ac0eaaa1db76c32f3348cdd4beb7088cf","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","audit:fix":"bun audit fix","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-JnM2HJ5XUrZ5SatzZ9vHK/sA9kogGz1lUfpNAQCDEBGA7KcktmOdwGcp5Mab2HwI3iwMXkV9LBJBVYGP1Zi7kQ==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.5-r.5","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^4.1.11","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.1","@biomejs/biome":"^2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.1.16_1789914252703_0.07751675927905644","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cyanheads/socrata-mcp-server","version":"0.2.0","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/socrata-mcp-server@0.2.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"bin":{"socrata-mcp-server":"dist/index.js"},"dist":{"shasum":"f69ee7381083db7fe1487d6bdca34a722abac1fe","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.2.0.tgz","fileCount":86,"integrity":"sha512-1/Y77rhhMGg5srgqonwNNeJFsEJ6vDDh0waqz+qq/RMh2lOEMSNSiEz+LQfUhj7reQvueumeojX0zlUZX2tHHA==","signatures":[{"sig":"MEQCIBSQmNlpE7P3b+DFOrrNosDNpeV1pJqyND/E3WOxoR/cAiAdJKGgt40cFyt464mrRHs/VY4g0GRo5vy9y3J4OV6M4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFJbiX+RwoXNhQoTuzucycEQ24Vv0qabpajySUIryZGuAiBkqOQCAlYAUHGT0VxCSpOHaM2nIlgQ3LHJFxGITZ3hvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381758},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"f69ee7381083db7fe1487d6bdca34a722abac1fe","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","audit:fix":"bun audit fix","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-1/Y77rhhMGg5srgqonwNNeJFsEJ6vDDh0waqz+qq/RMh2lOEMSNSiEz+LQfUhj7reQvueumeojX0zlUZX2tHHA==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.5-r.5","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.2","@biomejs/biome":"^2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/socrata-mcp-server_0.2.0_1790108098514_0.3012382113798131","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@cyanheads/socrata-mcp-server@0.2.1","bin":{"socrata-mcp-server":"dist/index.js"},"bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"dist":{"shasum":"72969370e911d06faae3512fe914d30a82ff65bd","tarball":"https://registry.npmjs.org/@cyanheads/socrata-mcp-server/-/socrata-mcp-server-0.2.1.tgz","fileCount":87,"integrity":"sha512-Dt9BwSFx80EplLIAnjEInkSsCiZShBbNIGCxnycG9kH9txpsoNILfGUz+E5UhxuhAWan23R4fYvt0STKwbQBnw==","signatures":[{"sig":"MEQCIFx1eiswynnqAyyocrfa0qImSI0tCVKNHTgjcy9rr9MEAiAiF4JAH94oW45hgXTd4xBuZYJK9eUsvsCmT+GH56lj9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICpBZ1FMtdnQfJk14gokOz1U083shAuuR7YpXfo6r3DZAiBFBjPut7XCUISGHTkbl2KU7tqp3M/yupbCpdFN+0dOcg=="}],"unpackedSize":389825},"main":"dist/index.js","name":"@cyanheads/socrata-mcp-server","type":"module","types":"dist/index.d.ts","author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","shasum":"72969370e911d06faae3512fe914d30a82ff65bd","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"license":"Apache-2.0","mcpName":"io.github.cyanheads/socrata-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/socrata-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/socrata-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run build","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","audit:fix":"bun audit fix","start:http":"MCP_TRANSPORT_TYPE=http bun ./dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"version":"0.2.1","_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"_integrity":"sha512-Dt9BwSFx80EplLIAnjEInkSsCiZShBbNIGCxnycG9kH9txpsoNILfGUz+E5UhxuhAWan23R4fYvt0STKwbQBnw==","repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","directories":{},"maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","@duckdb/node-api":"^1.5.5-r.5","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.2","@biomejs/biome":"^2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/socrata-mcp-server_0.2.1_1790110188855_0.04562707135687405"}}},"time":{"created":"2026-05-23T20:02:56.600Z","modified":"2026-09-22T20:49:49.096Z","0.1.1":"2026-05-23T20:02:57.177Z","0.1.2":"2026-05-24T03:13:59.273Z","0.1.3":"2026-05-24T05:00:51.428Z","0.1.4":"2026-05-29T05:48:31.817Z","0.1.5":"2026-05-30T10:10:59.356Z","0.1.6":"2026-06-02T15:07:23.927Z","0.1.7":"2026-06-04T08:54:28.846Z","0.1.8":"2026-06-12T08:45:48.679Z","0.1.9":"2026-06-20T18:17:32.640Z","0.1.10":"2026-07-04T19:18:16.229Z","0.1.11":"2026-07-05T02:23:19.779Z","0.1.12":"2026-07-05T02:57:45.346Z","0.1.13":"2026-07-10T22:07:24.945Z","0.1.14":"2026-07-10T22:57:13.610Z","0.1.15":"2026-08-22T21:40:59.364Z","0.1.16":"2026-09-20T14:24:12.792Z","0.2.0":"2026-09-22T20:14:58.667Z","0.2.1":"2026-09-22T20:49:48.962Z"},"bugs":{"url":"https://github.com/cyanheads/socrata-mcp-server/issues"},"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","homepage":"https://github.com/cyanheads/socrata-mcp-server#readme","keywords":["mcp","mcp-server","model-context-protocol","ai","bun","stdio","streamable-http","socrata","open-data","soda-api","government-data","civic-data","typescript"],"repository":{"url":"git+https://github.com/cyanheads/socrata-mcp-server.git","type":"git"},"description":"Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"readme":"<div align=\"center\">\n  <h1>@cyanheads/socrata-mcp-server</h1>\n  <p><b>Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP.</b>\n  <div>6 Tools • 2 Resources • 1 Prompt</div>\n  </p>\n</div>\n\n<div align=\"center\">\n\n[![Version](https://img.shields.io/badge/Version-0.2.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/socrata-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.0.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/%40cyanheads%2Fsocrata-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/socrata-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)\n\n</div>\n\n<div align=\"center\">\n\n[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/socrata-mcp-server/releases/latest/download/socrata-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=socrata-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvc29jcmF0YS1tY3Atc2VydmVyIl19) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22socrata-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fsocrata-mcp-server%22%5D%7D)\n\n[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)\n\n**Public Hosted Server:** [https://socrata.caseyjhand.com/mcp](https://socrata.caseyjhand.com/mcp)\n\n</div>\n\n---\n\n## Overview\n\nGovernment open-data portals — searched and queried via the Socrata SODA 2.1 API and Discovery API. Discover portals and datasets, inspect typed column schemas, and run SoQL queries or DuckDB-powered SQL over large result sets, from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.\n\n### Tools\n\n| Tool | Description |\n|:---|:---|\n| `socrata_list_portals` | List known Socrata-powered government open-data portals with domain, organization name, and approximate dataset count |\n| `socrata_find_datasets` | Search for datasets across all Socrata portals or scope to one portal via the Discovery API |\n| `socrata_get_dataset` | Fetch full metadata and typed column schema for a dataset by ID — required before writing SoQL queries |\n| `socrata_query_dataset` | Execute a SoQL query against any dataset: search, select, where, group, having, order, with DataCanvas spillover |\n| `socrata_dataframe_describe` | List registered tables in a DataCanvas session — schema, row count, column names |\n| `socrata_dataframe_query` | Run SELECT-only SQL against DataCanvas tables populated by `socrata_query_dataset` |\n\n### Resources\n\n| Resource | Description |\n|:---|:---|\n| `socrata://datasets/{domain}/{datasetId}` | Fetch full metadata and column schema for a dataset by stable URI — same payload as `socrata_get_dataset` |\n| `socrata://portals` | Paginated list of known Socrata portals with organization name and approximate dataset count |\n\nAll resource data is also reachable via tools. Use the corresponding tool for agent workflows — resources are for clients that support URI-addressable data.\n\n### Prompts\n\n| Prompt | Description |\n|:---|:---|\n| `explore_open_data` | Structured six-step civic data investigation workflow: find portal → discover datasets → inspect schema → query → aggregate → synthesize |\n\n## Capability reference\n\n### `socrata_list_portals` <sub>tool</sub>\n\n- Curated catalog of 39 well-known city, county, state, and federal portals — every member verified live in the Discovery catalog\n- Per-portal dataset counts fetched live from the Discovery API, cached ~24 hours (`0` means the portal exposes no dataset assets to the catalog; `null` means the count is temporarily unavailable)\n- Client-side substring filtering on domain or organization name; pagination up to 200 per page with offset\n- Returns domain (pass to `socrata_find_datasets`), organization name, and approximate dataset count; the count includes datasets a portal federates from another Socrata tenant (Austin, Illinois, Mesa, and San Francisco publish through a data hub; Seattle catalogs under a sibling tenant)\n- Never fails on an upstream error — a count that cannot be fetched comes back `null` and the listing still returns\n\n---\n\n### `socrata_find_datasets` <sub>tool</sub>\n\n- Full-text query across dataset names/descriptions; scope with `domain`, filter by `categories`/`tags`, restrict `only` to an asset type (datasets, maps, files, calendars, stories)\n- Sort by relevance, page views, created date, or updated date; up to 100 per page with offset pagination\n- Returns dataset IDs, names, domains, tags, update timestamps, and `column_names` — the API field names SoQL takes (`cuisine_description`, not the display label `CUISINE DESCRIPTION`), computed-region columns dropped — call `socrata_get_dataset` for typed schema before writing queries\n- Recovery hints on empty results — echoes applied filters and suggests how to broaden\n- `domain` takes a bare hostname; URL forms (`https://data.cdc.gov/`) are reduced to the host. A scoped search covers every dataset the portal publishes, including ones federated from another Socrata tenant, reported under the portal's own domain\n- Typed errors: `rate_limited` (retryable) when the Discovery API returns 429, `unknown_domain` when the Discovery catalog does not index the domain, `invalid_domain` when the domain is not a hostname\n\n---\n\n### `socrata_get_dataset` <sub>tool</sub>\n\n- Returns field names, Socrata data types, descriptions, row count (with `row_count_source` provenance), and licensing when available\n- Column `data_type` determines WHERE clause syntax: `Number` → bare literals (`year=2023`), `Text` → single-quoted strings (`year='2023'`)\n- Excludes computed region columns (`:@computed_region_*`) to reduce noise; includes per-column non-null counts when available\n- Dataset IDs are portal-scoped — pass the `domain` from the same `socrata_find_datasets` result; URL-form domains are reduced to the host\n- Typed errors: `invalid_id` (malformed four-by-four ID), `not_found` (no such dataset on the domain queried — the message names the ID and domain, and the recovery names the portal that holds the ID when the Discovery catalog knows it), `unknown_domain` (the domain is not serving the Socrata API — it does not resolve, is not a Socrata portal, or redirects elsewhere; fails on the first attempt), `invalid_domain` (not a hostname), `rate_limited` (retryable; honors the upstream `Retry-After`)\n- Always call before writing a `socrata_query_dataset` WHERE clause\n\n---\n\n### `socrata_query_dataset` <sub>tool</sub>\n\n- `search` for quick full-text lookup (`$q`), or combine `select`/`where`/`group`/`having`/`order` for full analytical control — clauses reference columns by API field name (`field_name` from `socrata_get_dataset`), never the display label; operators `=`, `!=`, `>`, `<`, `LIKE`, `IN(...)`, `BETWEEN`, `IS NULL`, `starts_with()`, `contains()`, `AND`, `OR`, `NOT`\n- Aggregation via `count(*)`, `sum()`, `avg()`, `min()`, `max()` with `group`/`having`\n- Up to 5000 rows per call with offset pagination; `total_count` returned when a plain row query is truncated (absent for grouped/aggregate queries)\n- `assembled_query` echoes the SoQL string for learning the syntax; all SODA 2.1 row values are strings except geo/location columns, which return nested objects\n- When `CANVAS_PROVIDER_TYPE=duckdb` and the page fills `limit`, up to 50,000 matching rows spill to a DataCanvas table whatever the `limit` (`canvas_id`, `table_name`, `canvas_row_count`) — list its columns with `socrata_dataframe_describe`, then run SQL with `socrata_dataframe_query`. A small `limit` (e.g. 10) stages a large match without a large inline page\n- Typed errors: `invalid_id`, `not_found` (names the ID, the domain queried, and the portal holding the ID when known), `unknown_domain`, `invalid_domain`, `soql_error` (bad SoQL, unknown column, or type mismatch — carries the upstream `socrataCode` and, when upstream names it, the offending `column`; the recovery hint matches the code: API field names for a parse error, both fixes for an unknown identifier, the quoting rule for a type mismatch), `rate_limited` (retryable; honors the upstream `Retry-After`)\n\n---\n\n### `socrata_dataframe_describe` <sub>tool</sub>\n\n- Requires `canvas_id` from a prior `socrata_query_dataset` spill — canvases cannot be enumerated, so omitting it fails with `canvas_id_required` rather than listing tables\n- Shows table name, row count, and DuckDB column types for each registered table (SODA `number` → `DOUBLE`)\n- Only meaningful when `CANVAS_PROVIDER_TYPE=duckdb` is set\n- Typed errors: `canvas_id_required`, `canvas_not_found` (expired or unknown token — re-run `socrata_query_dataset` to stage a fresh canvas)\n\n---\n\n### `socrata_dataframe_query` <sub>tool</sub>\n\n- SELECT-only SQL against a `canvas_id` table staged by `socrata_query_dataset`; DDL, DML, and file-reading functions (`read_csv`, `read_parquet`) are rejected\n- Spilled columns are typed from the SODA response headers: `number` columns (aggregate aliases included) are `DOUBLE`, so numeric comparisons work without a cast (`year > 2020`, `amount < 500`); text and timestamp columns stay `VARCHAR` — compare times with `CAST(date AS TIMESTAMP)`\n- Up to 10,000 rows per call, default 1000\n- Typed errors: `canvas_disabled` (`CANVAS_PROVIDER_TYPE` not set), `canvas_not_found`, `table_not_found`, `sql_rejected` (non-SELECT, system catalog access, or a denied function)\n- Works out of the box when `CANVAS_PROVIDER_TYPE=duckdb` is set — DuckDB ships as a regular dependency\n\n---\n\n### `socrata://datasets/{domain}/{datasetId}` <sub>resource</sub>\n\n- Returns the same payload as `socrata_get_dataset` — field names, data types, descriptions, row count, licensing\n- `domain` and `datasetId` come from `socrata_find_datasets`; `datasetId` must match the four-by-four pattern (e.g. `kzjm-xkqj`)\n- Fails validation on a malformed ID, and not-found when the dataset doesn't exist on the domain (naming the portal that holds the ID when the Discovery catalog knows it)\n\n---\n\n### `socrata://portals` <sub>resource</sub>\n\n- Curated catalog of 39 known Socrata portals, cursor-paginated (`cursor` param, default 50 per page, capped at 200)\n- Returns domain, organization name, and approximate dataset count (`0` = no dataset assets, `null` = temporarily unavailable), cached ~24 hours\n- Pass `domain` to `socrata_find_datasets` to scope a search to one portal\n\n---\n\n### `explore_open_data` <sub>prompt</sub>\n\n- Arguments: `topic` required; `portal` and `geography` optional to skip discovery or scope WHERE clauses\n- Returns one user message walking a six-step workflow: find portal → discover datasets → inspect schema → query → aggregate → synthesize\n\n## Features\n\nBuilt on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.\n\nSocrata-specific:\n\n- Full Socrata SODA 2.1 API integration — SoQL query builder with select, where, group, having, order, search, limit, offset\n- Discovery API for cross-portal dataset search and per-portal dataset counts (curated 39-portal catalog, counts cached ~24h)\n- App token support (`SOCRATA_APP_TOKEN`) for higher per-IP rate limits\n- Configurable default portal domain via `SOCRATA_DEFAULT_DOMAIN`\n- DataCanvas spillover (DuckDB, bundled) — large query results register as SQL tables for analytical queries\n\nAgent-friendly output:\n\n- Assembled SoQL string echoed in every `socrata_query_dataset` response so agents can learn and refine syntax\n- Recovery hints on empty results — echoes applied filters with specific suggestions for broadening\n- Truncation disclosure — `truncated`/`shown`/`cap` fields when rows fill the limit, with guidance to page or raise the limit, naming the staged table and both dataframe tools when the result spilled\n- Typed error reasons across every tool (`invalid_id`, `not_found`, `unknown_domain`, `invalid_domain`, `soql_error`, `rate_limited`, `canvas_id_required`, `canvas_not_found`, `table_not_found`, `sql_rejected`, `canvas_disabled`) with actionable recovery text\n\n## Getting started\n\nAdd the following to your MCP client configuration file.\n\n### Public Hosted Instance\n\nA public instance is available at `https://socrata.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:\n\n```json\n{\n  \"mcpServers\": {\n    \"socrata-mcp-server\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://socrata.caseyjhand.com/mcp\"\n    }\n  }\n}\n```\n\n### Self-Hosted / Local\n\n```json\n{\n  \"mcpServers\": {\n    \"socrata-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"@cyanheads/socrata-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\"\n      }\n    }\n  }\n}\n```\n\nOr with npx (no Bun required):\n\n```json\n{\n  \"mcpServers\": {\n    \"socrata-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cyanheads/socrata-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\"\n      }\n    }\n  }\n}\n```\n\nOr with Docker:\n\n```json\n{\n  \"mcpServers\": {\n    \"socrata-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"MCP_TRANSPORT_TYPE=stdio\",\n        \"ghcr.io/cyanheads/socrata-mcp-server:latest\"\n      ]\n    }\n  }\n}\n```\n\nFor Streamable HTTP, set the transport and start the server:\n\n```sh\nMCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http\n# Server listens at http://localhost:3010/mcp\n```\n\n### Prerequisites\n\n- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).\n- Optional: A Socrata app token — register for free at any portal (e.g. [data.seattle.gov](https://data.seattle.gov)) to get higher rate limits (10 req/s per token vs. shared throttled pool without one).\n\n### Installation\n\n1. **Clone the repository:**\n\n```sh\ngit clone https://github.com/cyanheads/socrata-mcp-server.git\n```\n\n2. **Navigate into the directory:**\n\n```sh\ncd socrata-mcp-server\n```\n\n3. **Install dependencies:**\n\n```sh\nbun install\n```\n\n4. **Configure environment:**\n\n```sh\ncp .env.example .env\n# edit .env and set SOCRATA_APP_TOKEN if you have one\n```\n\n## Configuration\n\nAll configuration is validated at startup via Zod schemas in `src/config/server-config.ts`. Key environment variables:\n\n| Variable | Description | Default |\n|:---|:---|:---|\n| `SOCRATA_APP_TOKEN` | Socrata app token (X-App-Token header). Without a token, requests share a throttled pool per source IP. | — |\n| `SOCRATA_DEFAULT_DOMAIN` | Default portal domain when `domain` is omitted from tool calls. | `data.seattle.gov` |\n| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |\n| `MCP_HTTP_PORT` | Port for HTTP server. | `3010` |\n| `MCP_SESSION_MODE` | Session handling: `stateful`, `stateless`, or `auto` (schema default `auto` resolves to stateful). This server sets it explicitly to stateless. | `stateless` |\n| `MCP_AUTH_MODE` | Auth mode: `none`, `jwt`, or `oauth`. | `none` |\n| `MCP_LOG_LEVEL` | Log level (RFC 5424): `debug`, `info`, `notice`, `warning`, `error`. | `info` |\n| `CANVAS_PROVIDER_TYPE` | Set to `duckdb` to enable DataCanvas spillover for large result sets. DuckDB ships with the server — no additional install required. | — |\n| `LOGS_DIR` | Directory for log files (Node.js only). | `<project-root>/logs` |\n| `STORAGE_PROVIDER_TYPE` | Storage backend: `in-memory`, `filesystem`, `supabase`, `cloudflare-kv/r2/d1`. | `in-memory` |\n| `OTEL_ENABLED` | Enable [OpenTelemetry instrumentation](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry). | `false` |\n\nSee [`.env.example`](./.env.example) for the full list of optional overrides.\n\n## Running the server\n\n### Local development\n\n- **Build and run:**\n\n  ```sh\n  # One-time build\n  bun run rebuild\n\n  # Run the built server\n  bun run start:stdio\n  # or\n  bun run start:http\n  ```\n\n- **Run checks and tests:**\n\n  ```sh\n  bun run devcheck   # Lint, format, typecheck, security audit\n  bun run test       # Vitest test suite\n  ```\n\n### Docker\n\n```sh\ndocker build -t socrata-mcp-server .\ndocker run --rm -e MCP_TRANSPORT_TYPE=http -p 3010:3010 socrata-mcp-server\n```\n\nThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/socrata-mcp-server`. OpenTelemetry peer dependencies are installed by default — build with `--build-arg OTEL_ENABLED=false` to omit them.\n\n## Project structure\n\n| Directory | Purpose |\n|:---|:---|\n| `src/index.ts` | `createApp()` entry point — registers tools, resources, prompts, and inits the Socrata service. |\n| `src/config` | Server-specific environment variable parsing and validation with Zod. |\n| `src/mcp-server/tools` | Tool definitions (`*.tool.ts`). Six tools covering portal listing, dataset search, schema fetch, SoQL query, and DataCanvas SQL. |\n| `src/mcp-server/resources` | Resource definitions (`*.resource.ts`). Dataset metadata and portal catalog resources. |\n| `src/mcp-server/prompts` | Prompt definitions (`*.prompt.ts`). Civic data investigation workflow prompt. |\n| `src/services/socrata` | Socrata service layer — SODA 2.1 API client, Discovery API, query builder, type normalization. |\n| `tests/` | Unit and integration tests mirroring `src/`. |\n\n## Development guide\n\nSee [`CLAUDE.md`](./CLAUDE.md) for development guidelines and architectural rules. The short version:\n\n- Handlers throw, framework catches — no `try/catch` in tool logic\n- Use `ctx.log` for request-scoped logging, `ctx.state` for tenant-scoped storage\n- Call `socrata_get_dataset` before writing WHERE clauses — `field_name` is what SoQL references and column `data_type` determines quoting\n- Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields\n\n## Contributing\n\nIssues are welcome. Run checks and tests before submitting:\n\n```sh\nbun run devcheck\nbun run test\n```\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md"}