truthstack-mcp 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +114 -127
  3. package/package.json +3 -2
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 TruthStack1
3
+ Copyright (c) 2025 MCP Contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,172 +1,159 @@
1
- # TruthStack MCP Server
1
+ # MCP Registry
2
2
 
3
- **The first supplement-drug interaction safety tool for AI agents.**
3
+ The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
4
4
 
5
- TruthStack provides structured, evidence-based supplement safety intelligence via the [Model Context Protocol](https://modelcontextprotocol.io). Instead of relying on LLM training data that hallucinates safety information, your agent calls TruthStack for deterministic, cited risk assessments.
5
+ 📖 **[Full documentation](./docs)**
6
6
 
7
- ## Why This Exists
7
+ ## Development Status
8
8
 
9
- LLMs confidently say "ashwagandha is generally safe with sertraline." TruthStack's API returns **MODERATE RISK** with 25 FDA adverse event reports and CYP3A4 pathway conflict data. That gap kills people.
9
+ > [!WARNING]
10
+ > The registry is under [active development](#development-status). The registry API spec is unstable and the official MCP registry database may be wiped at any time.
10
11
 
11
- ## 5 Tools
12
+ **2025-09-04 update**: We're targeting a 'preview' go-live on 8th September. This may still be unstable and not provide durability guarantees, but is a step towards being more solidified. A general availability (GA) release will follow later.
12
13
 
13
- | Tool | What It Does | When to Use |
14
- |------|-------------|-------------|
15
- | `check_interactions` | Supplements + medications → risk level, FAERS signals, CYP conflicts | User mentions supplements + meds together |
16
- | `search_compounds` | Fuzzy name search (584 aliases, handles misspellings/brands) | Need to resolve messy input ("mag gly", "KSM-66") |
17
- | `get_compound_info` | Full compound profile + all interactions | Deep dive on a specific supplement |
18
- | `explain_interaction` | Human-readable WHY — mechanism, severity, evidence summary | Need to explain risk to a user |
19
- | `get_evidence` | Raw evidence: FAERS counts, CYP data, research grades, label warnings | Need to cite sources or provide provenance |
14
+ Current key maintainers:
15
+ - **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
16
+ - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
17
+ - **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
20
18
 
21
- ## Data Sources
19
+ ## Contributing
20
+
21
+ We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
22
+
23
+ Often (but not always) ideas flow through this pipeline:
22
24
 
23
- - **FDA FAERS** 805 adverse event signals from real-world pharmacovigilance
24
- - **FDA Drug Labels** CYP450 pathways, contraindications, botanical warnings
25
- - **PubMed/ClinicalTrials.gov** 220 research findings with evidence grading
26
- - **584 compound aliases** misspellings, brand names, abbreviations, product forms
25
+ - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
+ - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
+ - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
+ - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
27
29
 
28
- ## Quick Start
30
+ ### Quick start:
29
31
 
30
- ### 1. Get API Key
32
+ #### Pre-requisites
31
33
 
32
- Contact [chris@truthstack.co](mailto:chris@truthstack.co) or visit [truthstack.co](https://truthstack.co)
34
+ - **Docker**
35
+ - **Go 1.24.x**
36
+ - **golangci-lint v2.4.0**
33
37
 
34
- ### 2. Install
38
+ #### Running the server
35
39
 
36
40
  ```bash
37
- git clone https://github.com/truthstack/truthstack-mcp.git
38
- cd truthstack-mcp
39
- npm install
41
+ # Start full development environment
42
+ make dev-compose
40
43
  ```
41
44
 
42
- ### 3. Configure Claude Desktop
43
-
44
- Edit `~/.claude/claude_desktop_config.json`:
45
-
46
- ```json
47
- {
48
- "mcpServers": {
49
- "truthstack": {
50
- "command": "node",
51
- "args": ["/path/to/truthstack-mcp/server.js"],
52
- "env": {
53
- "VAULT_API_URL": "https://api.truthstack.co",
54
- "VAULT_API_KEY": "your-api-key"
55
- }
56
- }
57
- }
58
- }
59
- ```
45
+ This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL and seed data. It can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
60
46
 
61
- Restart Claude Desktop. You'll see TruthStack tools available in the tool picker.
47
+ <details>
48
+ <summary>Alternative: Local setup without Docker</summary>
62
49
 
63
- ### 4. Test It
50
+ **Prerequisites:**
51
+ - PostgreSQL running locally
52
+ - Go 1.24.x installed
64
53
 
65
- Ask Claude: *"I take ashwagandha, fish oil, and magnesium with sertraline. Is this safe?"*
54
+ ```bash
55
+ # Build and run locally
56
+ make build
57
+ make dev-local
58
+ ```
59
+
60
+ The service runs on [`localhost:8080`](http://localhost:8080) by default. This can be configured with environment variables in `.env` - see [.env.example](./.env.example) for a reference.
66
61
 
67
- Claude will call `check_interactions` and return a structured risk assessment with FDA adverse event data.
62
+ </details>
68
63
 
69
- ## LangChain Integration
64
+ <details>
65
+ <summary>Alternative: Running a pre-built Docker image</summary>
70
66
 
71
- ```python
72
- from langchain_community.tools import MCPTool
67
+ Pre-built Docker images are automatically published to GitHub Container Registry:
68
+
69
+ ```bash
70
+ # Run latest stable release
71
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
73
72
 
74
- # If using MCP adapter
75
- truthstack = MCPTool(server_path="./server.js", env={
76
- "VAULT_API_URL": "https://api.truthstack.co",
77
- "VAULT_API_KEY": "your-key"
78
- })
73
+ # Run latest from main branch (continuous deployment)
74
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
79
75
 
80
- # Or call the REST API directly
81
- import requests
76
+ # Run specific release version
77
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
82
78
 
83
- response = requests.post(
84
- "https://api.truthstack.co/api/interactions/check",
85
- headers={"X-API-Key": "your-key"},
86
- json={
87
- "supplements": ["ashwagandha", "fish oil", "magnesium"],
88
- "medications": ["sertraline"]
89
- }
90
- )
91
- print(response.json())
79
+ # Run development build from main branch
80
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
92
81
  ```
93
82
 
94
- ## REST API Fallback
83
+ **Available tags:**
84
+ - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
85
+ - **Continuous**: `main` (latest main branch build)
86
+ - **Development**: `main-<date>-<sha>` (specific commit builds)
95
87
 
96
- Every MCP tool maps to a REST endpoint:
88
+ </details>
97
89
 
98
- | MCP Tool | REST Endpoint |
99
- |----------|---------------|
100
- | `check_interactions` | `POST /api/interactions/check` |
101
- | `search_compounds` | `GET /api/compounds/search?q={query}` |
102
- | `get_compound_info` | `GET /api/compounds/{id}` + `GET /api/compounds/{id}/interactions` |
103
- | `explain_interaction` | Composite (search + interactions + drug profile) |
104
- | `get_evidence` | Composite (search + interactions + drug profile) |
90
+ #### Publishing a server
105
91
 
106
- Base URL: `https://api.truthstack.co`
107
- Auth: `X-API-Key` header
92
+ To publish a server, we've built a simple CLI. You can use it with:
108
93
 
109
- ## Example Response
94
+ ```bash
95
+ # Build the latest CLI
96
+ make publisher
110
97
 
98
+ # Use it!
99
+ ./bin/mcp-publisher --help
111
100
  ```
112
- User: "Is ashwagandha safe with sertraline?"
113
-
114
- → check_interactions({
115
- supplements: ["ashwagandha"],
116
- medications: ["sertraline"]
117
- })
118
-
119
- {
120
- "risk_level": "MODERATE",
121
- "drug_interactions": [{
122
- "supplement": "ashwagandha",
123
- "drug": "sertraline",
124
- "severity": "MODERATE",
125
- "source": "FDA FAERS",
126
- "report_count": 25,
127
- "description": "Pharmacovigilance signal — 25 serious adverse events reported"
128
- }],
129
- "cyp_pathway_conflicts": [{
130
- "drug": "sertraline",
131
- "supplement": "ashwagandha",
132
- "shared_cyp_pathways": ["CYP3A4"]
133
- }]
134
- }
101
+
102
+ See [the publisher guide](./docs/guides/publishing/publish-server.md) for more details.
103
+
104
+ #### Other commands
105
+
106
+ ```bash
107
+ # Run lint, unit tests and integration tests
108
+ make check
135
109
  ```
136
110
 
137
- Compare to raw LLM: *"Ashwagandha is generally considered safe and may complement sertraline for anxiety."*
111
+ There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
112
+
113
+ <!--
114
+ For Claude and other AI tools: Always prefer make targets over custom commands where possible.
115
+ -->
138
116
 
139
- ## System Message Template
117
+ ## Architecture
140
118
 
141
- If you're building a health agent, add this to your system prompt:
119
+ ### Project Structure
142
120
 
143
121
  ```
144
- You have access to TruthStack supplement safety tools. ALWAYS use check_interactions
145
- before confirming any supplement is safe with a medication. Never rely on your training
146
- data for drug-supplement interaction safety — use the structured API instead.
147
-
148
- When reporting results:
149
- - State the risk level clearly (CRITICAL/HIGH/MODERATE/LOW)
150
- - Mention specific FAERS adverse event counts when available
151
- - Note CYP pathway conflicts
152
- - Always recommend consulting a healthcare provider for MODERATE+ risks
153
- - Use explain_interaction when users ask "why is this risky?"
154
- - Use get_evidence when users want to see the sources
122
+ ├── cmd/ # Application entry points
123
+ │ └── publisher/ # Server publishing tool
124
+ ├── data/ # Seed data
125
+ ├── deploy/ # Deployment configuration (Pulumi)
126
+ ├── docs/ # Documentation
127
+ ├── internal/ # Private application code
128
+ │ ├── api/ # HTTP handlers and routing
129
+ │ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
130
+ │ ├── config/ # Configuration management
131
+ │ ├── database/ # Data persistence (PostgreSQL, in-memory)
132
+ │ ├── service/ # Business logic
133
+ │ ├── telemetry/ # Metrics and monitoring
134
+ │ └── validators/ # Input validation
135
+ ├── pkg/ # Public packages
136
+ │ ├── api/ # API types and structures
137
+ │ │ └── v0/ # Version 0 API types
138
+ │ └── model/ # Data models for server.json
139
+ ├── scripts/ # Development and testing scripts
140
+ ├── tests/ # Integration tests
141
+ └── tools/ # CLI tools and utilities
142
+ └── validate-*.sh # Schema validation tools
155
143
  ```
156
144
 
157
- ## Contributing
158
-
159
- We're looking for:
160
- - **Integration partners** — building a health AI agent? Get free API access.
161
- - **Compound contributions** — know of missing supplement aliases or interactions? Open an issue.
162
- - **Framework examples** — help us add examples for CrewAI, AutoGen, LlamaIndex.
145
+ ### Authentication
163
146
 
164
- ## License
147
+ Publishing supports multiple authentication methods:
148
+ - **GitHub OAuth** - For publishing by logging into GitHub
149
+ - **GitHub OIDC** - For publishing from GitHub Actions
150
+ - **DNS verification** - For proving ownership of a domain and its subdomains
151
+ - **HTTP verification** - For proving ownership of a domain
165
152
 
166
- MIT
153
+ The registry validates namespace ownership when publishing. E.g. to publish...:
154
+ - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
155
+ - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
167
156
 
168
- ## Contact
157
+ ## More documentation
169
158
 
170
- - **API access**: [chris@truthstack.co](mailto:chris@truthstack.co)
171
- - **Website**: [truthstack.co](https://truthstack.co)
172
- - **API docs**: [api.truthstack.co](https://api.truthstack.co)
159
+ See the [documentation](./docs) for more details if your question has not been answered here!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truthstack-mcp",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "TruthStack MCP Server \u2014 Supplement-drug interaction safety intelligence for AI agents",
5
5
  "type": "module",
6
6
  "main": "server.js",
@@ -29,5 +29,6 @@
29
29
  "type": "git",
30
30
  "url": "https://github.com/TruthStack1/truthstack-mcp.git"
31
31
  },
32
- "homepage": "https://api.truthstack.co"
32
+ "homepage": "https://api.truthstack.co",
33
+ "mcpName": "io.github.TruthStack1/truthstack-mcp"
33
34
  }