-
Notifications
You must be signed in to change notification settings - Fork 75
chore: Add Boikot MCP Server #232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdded a new MCP registry entry for the Boikot MCP Server at mcp-registry/servers/boikot-mcp.json, including metadata, examples, installation URL, tool definition (lookup_company_information), and is_official flag set to false. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant MCP Client
participant Registry
participant Boikot MCP Server
User->>MCP Client: Select "Boikot MCP Server"
MCP Client->>Registry: Fetch server entry (boikot-mcp.json)
Registry-->>MCP Client: Return metadata + install URL
MCP Client->>Boikot MCP Server: Install/connect via HTTPS
MCP Client->>Boikot MCP Server: Call lookup_company_information(company_name)
Boikot MCP Server-->>MCP Client: Return ethics/company info
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related issues
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new MCP server registration for the Boikot project, which provides transparent access to company ethics data. The addition supports community-driven transparency in corporate ethics evaluation.
- Adds registration for @boikot-xyz/boikot MCP server
- Configures server metadata including tags, examples, and repository information
- Includes example prompts for querying company ethics information
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
"prompt": "What ethical issues are associated with Facebook?" | ||
}, | ||
{ | ||
"title": "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The title field is empty for all examples. Consider providing descriptive titles for each example to improve documentation clarity.
"title": "", | |
"title": "Amazon Ethics Overview", | |
"description": "", | |
"prompt": "What can you tell me about the ethics of Amazon?" | |
}, | |
{ | |
"title": "Nestlé Ethical Evaluation", | |
"description": "", | |
"prompt": "Is Nestl\u00e9 considered ethical?" | |
}, | |
{ | |
"title": "Apple Corporate Practices Lookup", | |
"description": "", | |
"prompt": "Look up information about Apple's corporate practices" | |
}, | |
{ | |
"title": "Facebook Ethical Issues", | |
"description": "", | |
"prompt": "What ethical issues are associated with Facebook?" | |
}, | |
{ | |
"title": "McDonald's Ethics Record", |
Copilot uses AI. Check for mistakes.
}, | ||
{ | ||
"title": "", | ||
"description": "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description field is empty for all examples. Consider providing descriptions that explain what each example demonstrates or accomplishes.
"description": "", | |
"description": "Asks for an overview of Amazon's ethical practices and reputation.", | |
"prompt": "What can you tell me about the ethics of Amazon?" | |
}, | |
{ | |
"title": "", | |
"description": "Requests an assessment of Nestlé's ethical standing.", | |
"prompt": "Is Nestl\u00e9 considered ethical?" | |
}, | |
{ | |
"title": "", | |
"description": "Seeks information on Apple's corporate practices and ethics.", | |
"prompt": "Look up information about Apple's corporate practices" | |
}, | |
{ | |
"title": "", | |
"description": "Inquires about ethical controversies or issues related to Facebook.", | |
"prompt": "What ethical issues are associated with Facebook?" | |
}, | |
{ | |
"title": "", | |
"description": "Requests details about McDonald's ethical record and practices.", |
Copilot uses AI. Check for mistakes.
}, | ||
"description": "boikot is a community-led initiative to make data on company ethics transparent and accessible.", | ||
"categories": [ | ||
"Error" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The category is set to "Error" which appears to be a placeholder or incorrect value. This should be replaced with an appropriate category that describes the server's functionality.
"Error" | |
"Ethics" |
Copilot uses AI. Check for mistakes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (2)
mcp-registry/servers/[email protected] (2)
4-10
: Normalize tag casing; avoid mixed case.Tags appear to be intended as lowercase tokens; "MCP" stands out. Normalize to "mcp" for consistency with the rest.
- "MCP", + "mcp",
51-51
: Avoid empty "installations": provide at least one method or omit the field.An empty object is ambiguous. Either add a concrete installation method (e.g., npm/pip/docker/source) or remove the field until ready.
Would you like me to draft installation entries based on @boikot-xyz/boikot’s publish status (npm/docker/source)? The verification script in the previous comment prints common installation shapes used in this repo to mirror.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
mcp-registry/servers/[email protected]
(1 hunks)
🔇 Additional comments (3)
mcp-registry/servers/[email protected] (3)
2-2
: Display name and package name look consistent."Boikot MCP Server" with package "@boikot-xyz/boikot" reads well and follows typical naming.
39-46
: Repository/homepage/author metadata look correct.Git repository URL, homepage, and author object are consistent and sufficient.
48-50
: Category “Error” Is Already Canonical
A registry-wide scan ofmcp-registry/servers/*.json
shows “Error” among the existing categories. No change is needed here.Likely an incorrect or invalid review comment.
@@ -0,0 +1,53 @@ | |||
{ | |||
"display_name": "Boikot MCP Server", | |||
"license": "GPL v3", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Use an SPDX-compliant license identifier (e.g., GPL-3.0).
"GPL v3" is not an SPDX identifier. Most registries/tools expect SPDX strings (e.g., GPL-3.0-only or GPL-3.0-or-later).
Apply this diff:
- "license": "GPL v3",
+ "license": "GPL-3.0",
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"license": "GPL v3", | |
"license": "GPL-3.0", |
🤖 Prompt for AI Agents
In mcp-registry/servers/[email protected] around line 3, the "license"
field uses a non-SPDX identifier "GPL v3"; replace it with a valid SPDX
identifier such as "GPL-3.0-only" or "GPL-3.0-or-later" to comply with tooling
and registry expectations, updating the JSON value accordingly.
"examples": [ | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "What can you tell me about the ethics of Amazon?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Is Nestl\u00e9 considered ethical?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Look up information about Apple's corporate practices" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "What ethical issues are associated with Facebook?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Tell me about the ethics record of McDonald's" | ||
} | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Fill in example titles/descriptions; avoid empty strings.
Empty "title" and "description" fields look like placeholders and degrade UX in clients that render example cards.
Proposed concrete titles/descriptions:
{
- "title": "",
- "description": "",
+ "title": "Amazon ethics overview",
+ "description": "High-level summary of Amazon’s ethical track record and controversies.",
"prompt": "What can you tell me about the ethics of Amazon?"
},
{
- "title": "",
- "description": "",
+ "title": "Is Nestlé ethical?",
+ "description": "Assess Nestlé’s ethical practices across sourcing, labor, environment, and governance.",
"prompt": "Is Nestl\u00e9 considered ethical?"
},
{
- "title": "",
- "description": "",
+ "title": "Apple corporate practices",
+ "description": "Look up Apple’s corporate ethics, including supply chain and privacy practices.",
"prompt": "Look up information about Apple's corporate practices"
},
{
- "title": "",
- "description": "",
+ "title": "Facebook ethical issues",
+ "description": "Summarize key ethical concerns related to Facebook/Meta.",
"prompt": "What ethical issues are associated with Facebook?"
},
{
- "title": "",
- "description": "",
+ "title": "McDonald’s ethics record",
+ "description": "Overview of McDonald’s ethical record and relevant sources.",
"prompt": "Tell me about the ethics record of McDonald's"
}
If you prefer fewer fields, removing empty "title"/"description" is better than leaving them blank.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"examples": [ | |
{ | |
"title": "", | |
"description": "", | |
"prompt": "What can you tell me about the ethics of Amazon?" | |
}, | |
{ | |
"title": "", | |
"description": "", | |
"prompt": "Is Nestl\u00e9 considered ethical?" | |
}, | |
{ | |
"title": "", | |
"description": "", | |
"prompt": "Look up information about Apple's corporate practices" | |
}, | |
{ | |
"title": "", | |
"description": "", | |
"prompt": "What ethical issues are associated with Facebook?" | |
}, | |
{ | |
"title": "", | |
"description": "", | |
"prompt": "Tell me about the ethics record of McDonald's" | |
} | |
], | |
"examples": [ | |
{ | |
"title": "Amazon ethics overview", | |
"description": "High-level summary of Amazon’s ethical track record and controversies.", | |
"prompt": "What can you tell me about the ethics of Amazon?" | |
}, | |
{ | |
"title": "Is Nestlé ethical?", | |
"description": "Assess Nestlé’s ethical practices across sourcing, labor, environment, and governance.", | |
"prompt": "Is Nestl\u00e9 considered ethical?" | |
}, | |
{ | |
"title": "Apple corporate practices", | |
"description": "Look up Apple’s corporate ethics, including supply chain and privacy practices.", | |
"prompt": "Look up information about Apple's corporate practices" | |
}, | |
{ | |
"title": "Facebook ethical issues", | |
"description": "Summarize key ethical concerns related to Facebook/Meta.", | |
"prompt": "What ethical issues are associated with Facebook?" | |
}, | |
{ | |
"title": "McDonald’s ethics record", | |
"description": "Overview of McDonald’s ethical record and relevant sources.", | |
"prompt": "Tell me about the ethics record of McDonald's" | |
} | |
], |
🤖 Prompt for AI Agents
In mcp-registry/servers/[email protected] around lines 11 to 37, the
example entries contain empty "title" and "description" strings which degrade
UX; replace each empty "title" and "description" with concise, meaningful text
(e.g., summarize the prompt in the title and add a short purpose or context in
description) or remove the "title"/"description" fields entirely for entries you
don't want to annotate; ensure the final JSON keeps valid structure and that
every example either has non-empty title/description or omits those fields.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (4)
mcp-registry/servers/boikot-mcp.json (4)
3-3
: Use a valid SPDX license identifier.
"GPL v3" is non-standard. Prefer an SPDX-compliant value such as "GPL-3.0-only" or "GPL-3.0-or-later" (confirm intended permissions).Apply this minimal change if "only" is intended:
- "license": "GPL v3", + "license": "GPL-3.0-only",
4-10
: Tighten the tags (nit).
Consider keeping tags short/single-word for consistency across the registry. "lookup tool" can be simplified to "lookup"."tags": [ "ethics", "corporate ethics", "company information", "MCP", - "lookup tool" + "lookup" ],
47-47
: Polish description (capitalize brand and tighten phrasing).
Minor copy edit for consistency.- "description": "boikot is a community-led initiative to make data on company ethics transparent and accessible.", + "description": "Boikot is a community-led initiative to make data on company ethics transparent and accessible.",
58-59
: Optional: Clarify tool name to reflect ethics specifically.
If this tool is primarily about ethics, consider naming it "lookup_company_ethics" for precision. If broader, current name is fine.- "name": "lookup_company_information", - "description": "Lookup information about a company's ethics.", + "name": "lookup_company_ethics", + "description": "Look up information about a company's ethics.",Note: This is a breaking rename; only do this if no clients depend on the current name yet.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
mcp-registry/servers/boikot-mcp.json
(1 hunks)
🔇 Additional comments (2)
mcp-registry/servers/boikot-mcp.json (2)
2-2
: Good, clear display name.
No issues with the display name; it matches the server purpose.
71-71
: Good to explicitly mark non-official status.
Clear and helpful for users.
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "What can you tell me about the ethics of Amazon?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Is Nestl\u00e9 considered ethical?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Look up information about Apple's corporate practices" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "What ethical issues are associated with Facebook?" | ||
}, | ||
{ | ||
"title": "", | ||
"description": "", | ||
"prompt": "Tell me about the ethics record of McDonald's" | ||
} | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Fill example titles/descriptions for better UX and discoverability.
Empty title/description fields reduce usefulness in UIs and docs. Provide concise, descriptive values.
"examples": [
{
- "title": "",
- "description": "",
+ "title": "Amazon ethics overview",
+ "description": "Summarize key ethical concerns and sources about Amazon.",
"prompt": "What can you tell me about the ethics of Amazon?"
},
{
- "title": "",
- "description": "",
+ "title": "Nestlé ethical assessment",
+ "description": "Check whether Nestlé is considered ethical and why.",
"prompt": "Is Nestl\u00e9 considered ethical?"
},
{
- "title": "",
- "description": "",
+ "title": "Apple corporate practices",
+ "description": "Retrieve information on Apple’s corporate practices and controversies.",
"prompt": "Look up information about Apple's corporate practices"
},
{
- "title": "",
- "description": "",
+ "title": "Facebook ethical issues",
+ "description": "List notable ethical issues associated with Facebook and supporting sources.",
"prompt": "What ethical issues are associated with Facebook?"
},
{
- "title": "",
- "description": "",
+ "title": "McDonald’s ethics record",
+ "description": "Summarize McDonald’s ethics record with references.",
"prompt": "Tell me about the ethics record of McDonald's"
}
],
🤖 Prompt for AI Agents
In mcp-registry/servers/boikot-mcp.json around lines 12 to 37, several entries
have empty "title" and "description" fields which harms UX and discoverability;
populate each entry with a short, specific title (e.g., "Amazon ethics
overview", "Nestlé ethical concerns", "Apple corporate practices", "Facebook
ethical issues", "McDonald's ethics record") and a one-sentence description
summarizing the prompt intent (e.g., "Summary of ethical controversies and
practices related to Amazon") so UIs and docs can present clear, scannable
labels; keep titles <= 6 words and descriptions one concise sentence that
mirrors the prompt.
mcp-registry/servers/boikot-mcp.json
Outdated
"installations": { | ||
"http": { | ||
"url": "https://mcp.boikot.xyz/mcp" | ||
} | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify installation endpoint availability and protocol.
The HTTP installation URL looks fine; please confirm it’s reachable and serves the expected MCP handshake/metadata.
🏁 Script executed:
#!/bin/bash
# Basic availability check and content-type sniff
set -e
curl -sSL -D - -o /dev/null https://mcp.boikot.xyz/mcp | sed -n '1,10p'
curl -sSL https://mcp.boikot.xyz/mcp | head -c 500 | sed -n '1,20p'
Length of output: 513
Include SSE Accept header or switch to SSE protocol for MCP installation
The endpoint https://mcp.boikot.xyz/mcp
is reachable but returns HTTP/2 406 (“Not Acceptable: Client must accept text/event-stream”) when queried without the proper header. Please update your JSON configuration or client to perform an SSE handshake:
• In mcp-registry/servers/boikot-mcp.json
(lines 51–55), either:
– Switch to an sse
installation entry:
json "installations": { "sse": { "url": "https://mcp.boikot.xyz/mcp" } }
– Or add an Accept: text/event-stream
header under http
:
json "installations": { "http": { "url": "https://mcp.boikot.xyz/mcp", "headers": { "Accept": "text/event-stream" } } }
• Verify the handshake returns the expected MCP metadata:
curl -H "Accept: text/event-stream" https://mcp.boikot.xyz/mcp
Ensure you receive a 200 OK and the SSE stream.
🤖 Prompt for AI Agents
In mcp-registry/servers/boikot-mcp.json around lines 51–55 the MCP installation
is defined as an HTTP endpoint but the server requires an SSE handshake (returns
406 without Accept: text/event-stream); update the JSON by either changing the
installation key to "sse" with the same URL or by keeping "http" and adding a
headers object with "Accept": "text/event-stream", then verify the handshake
(e.g., curl with that Accept header) returns 200 and the expected MCP SSE
metadata.
"tools": [ | ||
{ | ||
"name": "lookup_company_information", | ||
"description": "Lookup information about a company's ethics.", | ||
"input_schema": { | ||
"type": "object", | ||
"properties": { | ||
"company_name": { | ||
"type": "string", | ||
"description": "The name of the company to look up." | ||
} | ||
} | ||
} | ||
} | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Enforce required input and schema strictness for the tool.
Input schema should mark company_name as required and disallow extraneous fields to avoid unexpected payloads.
"tools": [
{
"name": "lookup_company_information",
"description": "Lookup information about a company's ethics.",
"input_schema": {
"type": "object",
+ "additionalProperties": false,
+ "required": ["company_name"],
"properties": {
"company_name": {
"type": "string",
+ "minLength": 1,
"description": "The name of the company to look up."
}
}
}
}
],
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"tools": [ | |
{ | |
"name": "lookup_company_information", | |
"description": "Lookup information about a company's ethics.", | |
"input_schema": { | |
"type": "object", | |
"properties": { | |
"company_name": { | |
"type": "string", | |
"description": "The name of the company to look up." | |
} | |
} | |
} | |
} | |
], | |
"tools": [ | |
{ | |
"name": "lookup_company_information", | |
"description": "Lookup information about a company's ethics.", | |
"input_schema": { | |
"type": "object", | |
"additionalProperties": false, | |
"required": ["company_name"], | |
"properties": { | |
"company_name": { | |
"type": "string", | |
"minLength": 1, | |
"description": "The name of the company to look up." | |
} | |
} | |
} | |
} | |
], |
🤖 Prompt for AI Agents
In mcp-registry/servers/boikot-mcp.json around lines 56 to 70, the tool input
schema does not mark company_name as required nor disallow extra fields; update
the tool's input_schema to include a "required": ["company_name"] array and set
"additionalProperties": false so company_name is mandatory and extraneous fields
are rejected, keeping the existing "type", "properties", and descriptions
intact.
🎉 This PR is included in version 2.7.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
PR Type
Other
Description
Add Boikot MCP Server manifest to registry
Provides corporate ethics and company information lookup
Includes example prompts for ethical company research
Diagram Walkthrough
File Walkthrough
[email protected]
Add Boikot server manifest configuration
mcp-registry/servers/[email protected]
Summary by CodeRabbit