Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
8c6330d
Merge pull request #1 from aidecentralized/newVersion
tremblerz Apr 6, 2025
ca88d62
Merge pull request #2 from aidecentralized/newVersion
tremblerz Apr 6, 2025
06ad54a
Merge pull request #3 from aidecentralized/newVersion
tremblerz Apr 7, 2025
d40d4a5
Merge pull request #11 from aidecentralized/newVersion
tremblerz Apr 7, 2025
896a803
Merge pull request #12 from aidecentralized/newVersion
tremblerz Apr 7, 2025
87193fb
Merge pull request #13 from aidecentralized/newVersion
tremblerz Apr 7, 2025
52c54a4
Update README.md
tremblerz Apr 9, 2025
0352752
Fix: Validate MCP server on registration and handle frontend error
AlyssaMiaTaliotis Apr 10, 2025
f9572e1
Merge pull request #19 from aidecentralized/newVersion
tremblerz Apr 11, 2025
ee89855
Updated readme, screesnhot placeholder remains
AlyssaMiaTaliotis Apr 12, 2025
c92510a
Added screenshot
AlyssaMiaTaliotis Apr 12, 2025
151be78
Enhanced API tooling with robust type system and credential management
innovatorsoftomorrow Apr 13, 2025
8aa10cc
Enhanced API tooling with robust type system and improved credential …
innovatorsoftomorrow Apr 13, 2025
34eed39
refactor: remove .env file and update docker-compose to eliminate API…
clu5 Apr 13, 2025
541a918
Merge branch 'temp-changes' into newVersion
clu5 Apr 13, 2025
f845e01
fix docker-compose build
clu5 Apr 13, 2025
f2c40dd
Refactor session middleware and API routes for improved logging and e…
clu5 Apr 13, 2025
d499f86
Added session management and UI changes
clu5 Apr 13, 2025
2690fe0
Add browser-based server storage and activity log panel
innovatorsoftomorrow Apr 13, 2025
3d06832
fix docker setup
clu5 Apr 13, 2025
5aed0e8
Merge branch 'main' of https://github.com/aidecentralized/canvas
clu5 Apr 13, 2025
83b1304
client interface bug fix
clu5 Apr 13, 2025
83258ee
Add Registry tab integration for discovering and adding MCP servers f…
Apr 13, 2025
508f85a
Add Nanda Registry integration with popular servers and search functi…
Apr 14, 2025
2c83736
UI updates: Added NANDA logo, updated styles, fixed server ESM config
Apr 14, 2025
eb3844a
latest commit
Apr 14, 2025
d8b3f09
fix package and path issues
tremblerz Apr 14, 2025
19840c7
urgent url update
tremblerz Apr 14, 2025
0724e6e
rebuild test
clu5 Apr 14, 2025
820b67f
Merge branch 'main' of https://github.com/aidecentralized/canvas
clu5 Apr 14, 2025
c05b773
test
clu5 Apr 14, 2025
909abb5
rebuild server
clu5 Apr 14, 2025
60ba957
Fix credential requirements and SSE connection issues
Apr 14, 2025
74d8469
Enhanced UI: Replaced logo with network icon and improved text styling
Apr 14, 2025
56d6bcb
Alyssa reputation with ratings and count
AlyssaMiaTaliotis Apr 14, 2025
ea22875
Added rate limiting for MCP servers and improved tool response handling
innovatorsoftomorrow Apr 15, 2025
9d50055
Merge pull request #23 from aidecentralized/version14
tremblerz Apr 15, 2025
49e3d34
Merge branch 'mihirv2' into alyssa-branch
tremblerz Apr 15, 2025
211703f
Merge pull request #24 from aidecentralized/alyssa-branch
tremblerz Apr 15, 2025
31d5015
Merge branch 'mihirv2' into Alyssa-Version15
tremblerz Apr 15, 2025
da7492e
Merge pull request #25 from aidecentralized/Alyssa-Version15
tremblerz Apr 15, 2025
62efbb1
Fix import paths and add rating parameter to toolRegistry.registerTools
innovatorsoftomorrow Apr 15, 2025
3344692
Merge branch 'main' into mihirv2
MihirSheth77 Apr 15, 2025
f49c209
Merge pull request #26 from aidecentralized/mihirv2
tremblerz Apr 15, 2025
e73459a
remove node_modules
tremblerz Apr 15, 2025
4b954c7
Add node_modules to .gitignore to prevent tracking of local dependencies
tremblerz Apr 15, 2025
5c210f8
modify package.json
tremblerz Apr 15, 2025
68398a6
Fix: Change NANDA Servers to Added Servers and implement rate limit h…
Apr 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
API_BASE_URL=http://localhost:3000
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ client/node_modules
client/dist
client/package-lock.json
client/build
**/.DS_Store
node_modules
7 changes: 4 additions & 3 deletions Dockerfile.client
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ RUN npm install
COPY client/ ./
COPY shared/ ./shared/

# Set API base URL as an ARG that can be passed during build
ARG REACT_APP_API_BASE_URL=http://localhost:4000
ENV REACT_APP_API_BASE_URL=${REACT_APP_API_BASE_URL}

# Build the application
RUN npm run build

Expand All @@ -23,9 +27,6 @@ COPY --from=build /app/build /usr/share/nginx/html
# Copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf

# Set environment variables
ENV API_BASE_URL=http://localhost:4000

# Expose port
EXPOSE 3000

Expand Down
20 changes: 14 additions & 6 deletions Dockerfile.server
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
# Dockerfile.server
FROM node:20-alpine

# Set base working directory
WORKDIR /app

# Copy package files
# Copy shared code first
COPY shared/ ./shared/

# Create server directory and copy server-specific files
WORKDIR /app/server
COPY server/package*.json ./
COPY server/tsconfig.json ./

# Install dependencies in the server directory
RUN npm install

# Copy source code
# Copy server source code relative to the new WORKDIR (/app/server)
COPY server/src ./src
COPY shared/ ./shared/

# Build the application
# Build the application (tsc will run in /app/server)
# With rootDir: "..", output structure will be nested under ./dist
RUN npm run build

# Expose the server port
Expand All @@ -22,5 +29,6 @@ EXPOSE 4000
ENV NODE_ENV=production
ENV PORT=4000

# Start the server
CMD ["node", "dist/index.js"]
# Start the server from the nested dist folder structure
# e.g., /app/server/dist/server/src/index.js
CMD ["node", "dist/server/src/index.js"]
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

MCP Host is a complete end-to-end implementation of a Model Context Protocol (MCP) host with an in-built MCP client. It provides a beautiful, polished chat interface with tool selection capabilities using MCP, and integrates with the MCP Registry for discovering available servers.

![MCP Host Screenshot](/path/to/screenshot.png)
![MCP Host Screenshot](host_screenshot.png)

## Features

- **Beautiful Chat Interface**: A clean, modern UI with glassmorphism design and a crimson color theme
- **Chat Interface**: A modern UI with a glassmorphism design and crimson theme
- **MCP Client Integration**: Discover and use tools from MCP servers
- **Registry Integration**: Automatically connect to servers listed in the MCP Registry
- **Anthropic API Integration**: Powered by Claude, one of the most capable AI assistants
Expand All @@ -25,8 +25,8 @@ MCP Host is a complete end-to-end implementation of a Model Context Protocol (MC
1. Clone the repository:

```bash
git clone https://github.com/yourusername/mcp-host.git
cd mcp-host
git clone https://github.com/aidecentralized/canvas.git
cd canvas
```

2. Start the application with Docker Compose:
Expand Down Expand Up @@ -96,7 +96,7 @@ server.tool("my-tool", { param: z.string() }, async ({ param }) => ({
const app = express();
const port = 3001;

// To support multiple simultaneous connections, we use a lookup object
// To support multiple simultaneous connections, a session-based lookup object is used
const transports: { [sessionId: string]: SSEServerTransport } = {};

// SSE endpoint
Expand Down
21 changes: 21 additions & 0 deletions alyssa-changes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
1. In docker-compose.yml version is depricated in new format of Docker. Removed this line version: "3.8" from line 1

2. Added .env file with API_BASE_URL as http://localhost:3000

3. In server/src/routes.ts:
try {
await mcpManager.registerServer({ id, name, url });
res.json({ success: true }); <------------------------ this always returns success regardless of outcome
} catch (error) {
console.error("Error registering server:", error);
res.status(500).json({
error:
error.message || "An error occurred while registering the server",
});
}
});

Fix:
A. In server/src/mcp/manager.ts, in registerServer() made a chnage to returned values
B. Changed the receival in routes.ts
C. In client/src/components/SettingsModal.tsx edited handleAddServer
1 change: 1 addition & 0 deletions client/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
REACT_APP_API_BASE_URL=http://localhost:4000
4 changes: 3 additions & 1 deletion client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^14.5.1",
"@types/jest": "^28.1.8",
"@types/lodash": "^4.17.16",
"@types/node": "^12.20.55",
"@types/react": "^18.2.31",
"@types/react-dom": "^18.2.14",
"axios": "^1.8.4",
"framer-motion": "^6.5.1",
"lodash": "^4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.11.0",
Expand Down Expand Up @@ -52,7 +54,7 @@
},
"devDependencies": {
"@types/react-syntax-highlighter": "^15.5.9",
"@types/uuid": "^9.0.6"
"@types/uuid": "^9.0.8"
},
"proxy": "http://localhost:4000"
}
Binary file added client/public/NANDA.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 18 additions & 4 deletions client/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,29 @@
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Nanda Host" />
<meta
name="description"
content="Nanda Host - MCP Integration for Claude"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop.
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the \`public\` folder during the build.
Only files inside the \`public\` folder can be referenced from the HTML.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.

Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<!-- Force cache invalidation with version parameter -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Nanda Host</title>
</head>
<body>
Expand All @@ -28,6 +39,9 @@

You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.

To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>
12 changes: 6 additions & 6 deletions client/public/manifest.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{
"short_name": "Nanda Host",
"name": "Nanda Host",
"short_name": "NANDA Host",
"name": "NANDA Host",
"icons": [
{
"src": "favicon.ico",
"src": "NANDA.png",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
"type": "image/png"
},
{
"src": "logo192.png",
"src": "NANDA.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"src": "NANDA.png",
"type": "image/png",
"sizes": "512x512"
}
Expand Down
20 changes: 19 additions & 1 deletion client/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,25 @@ function App() {
<ChatProvider>
<Box
minH="100vh"
bgGradient="linear(to-b, crimson.800, crimson.900)"
bgGradient="linear(to-b, #16161e, #1e1e2f)"
bgImage="radial-gradient(circle at 10% 20%, rgba(90, 26, 255, 0.1) 0%, transparent 20%), radial-gradient(circle at 90% 80%, rgba(0, 201, 255, 0.1) 0%, transparent 20%)"
bgSize="cover"
bgPosition="center"
bgRepeat="no-repeat"
display="flex"
flexDirection="column"
position="relative"
overflow="hidden"
_before={{
content: '""',
position: "absolute",
top: 0,
right: 0,
bottom: 0,
left: 0,
bg: "linear-gradient(180deg, rgba(22, 22, 30, 0.5) 0%, rgba(26, 27, 38, 0.2) 100%)",
zIndex: 0,
}}
>
<Header onOpenSettings={handleOpenSettings} />

Expand All @@ -37,6 +53,8 @@ function App() {
align="center"
justify="center"
p={4}
position="relative"
zIndex={1}
>
<ChatInterface />
</Flex>
Expand Down
Loading